java学习笔记

    科技2024-07-04  80

    JAVA 学习笔记

    1. HelloWorld

    //HelloWorld.java class HelloWorld{ public static void main(String[] args){ System.out.println("Hello World!"); } } /* 1.每个java文件有且只有一个main方法 2.每个java文件可以包含多个class,但只能有一个class有main方法 3.运行方法 找出java、javac的安装路经 -> 通过cmd切换到安装路经 -> javac ***.java 进行编译 -> java 编译后的带有main方法的class文件 4.同一个java文件如果有多个class,每个class将会被单独编译成一个class文件 5.同一个java文件下,不能有命名相同的class 5.语句结束用; */

    2.命名习惯

    * 包名一般全小写 eg: xxxyyyzzz * 类名、接口名首字母大写 eg:XxxYyyZzz * 变量、方法名首字母不大写,其余单词首字母大写 eg:xxxYyyZzz * 常量名所有字母均大写,并用_隔开 eg:XXX_YYY_ZZZ

    3.变量

    数据类型关键词备注整型int4字节, − 2 31 -2^{31} 231 ~ 2 31 2^{31} 231-1字节型byte1字节,-128 ~ 127短整型short2字节, − 2 15 -2^{15} 215 ~ 2 15 2^{15} 215-1长整型long8字节, − 2 63 -2^{63} 263 ~ 2 63 2^{63} 263-1,必须以L或l结尾,否则默认为int单精度float4字节,-3.403E38 ~ 3.403E38,仅能保留7位小数,需以f或F结尾,否则默认为double双精度double8字节,-1.798E308 ~ 1.798E308,保留15位小数 精度详解字符char2字节,字符非字符串,只能是一个字符,用单引号’’,‘a’布尔型booleantrue or false类class引用数据类型接口interface引用数据类型数组[]引用数据类型字符串String引用数据类型,用双引号"hello world",可以和基本数据类型做计算 long long_type = 12345L; float float_type = 123.4f; String s = "hello"; int i = 1234; String s2 = s + i; //i被强制转换为String类型 /* 1.变量必须先声明后使用 2.变量有作用范围 3.同一个作用域内不可定义同名的变量 eg: int age = 12; int age = 12;(错) */ 自动类型提升 byte b = 1; int i = 177; int i2 = i1 + b; //不同数据类型之间的运算需要用“更高级类型”来存,防止数据溢出 byte < short < int < long < float < double // byte、short、char三者之间(包括自己跟自己)作运算,需用int型接收 强制类型转换 //自动类型提升的逆运算 //强转符 double df = 123.33; int i = (int)df;

    4.逻辑运算符

    关系运算符备注逻辑与&a&b,a为false时仍继续判断b的真假逻辑或|a|b,a为真时仍判断b的真假逻辑非!短路与&&a&&b,a为false时则结束判断短路或 ∥ \| a ∥ \| b,a为真时则结束判断逻辑异或^a,b同真或同假时为false;否则为true boolean bool = false; int num1 = 123; int num2 = 123; if(bool & (num1 ++ > 0)){ } if(bool && (num2 ++ > 0)){ } //此时num1 = 124;num2 = 123;

    5.三元运算符

    (条件表达式)?表达式1:表达式2 条件成立则执行表达式1,否则执行表达式2,用于简化if-else

    int num1 = 123; int num2 = 234; int max = (num1 > num2)?num1:num2 //num1和num2不一定需要相同数据类型,但必须是满足可强制转换的类型

    6.程序流程控制

    if-else if(条件1){ code1; } else if(条件2){ code2; } else{ code3; } switch case switch(表达式){ case 常量1: code1; //break; case 常量2: code2; //break; ... case 常量n: coden; //break default: codeX; } /* 当swtich的表达式与case中的常量一致时,程序开始执行常量对应的case内部的code部分 如果不加break跳出,则程序会继续执行后续的所有case内的code,包括default,加break则只执行表达式=常量的case 如果表达式与所有case的常量值均不匹配,则执行default code部分可以是多行,无需用{} */

    7.循环

    for循环 /* for(初始化条件;循环条件boolean;循环迭代条件){ 循环体 } 先判断是否满足循环条件,再执行循环体 */ int sum = 0; for(int i = 0;i < = 100; i++){ sum += i; } //变量i只在for循环内有效,for循环一结束则自动清除 while循环 /* while(循环条件){ 循环体 循环迭代条件 } 先判断是否满足循环条件再执行循环体 */ int i = 1; int sum = 0: while(i <= 100){ sum += i; i += 1; } do-while循环 /* do{ 循环体 循环迭代条件 } while(循环条件); 先执行循环体,再判断循环条件是否成立 至少能执行一次循环体 */ int i = 1; int sum = 0; do{ sum += i; } while(i <= 100);

    8.break与continue

    /* break用于switch和循环结构中,用于跳出(结束)当前循环或switch结构 continue用于循环结构,用于跳过当次循环(未结束,只是改变循环条件) */ sum += 0; for(int i = 1; i <= 100; i ++){ if(i % 2 == 0){ continue; } sum += i; } //计算1-100中基数的和 int sum += 0; for(int i = 1;i <= 100; i++){ if(i % 2 == 0){ break; } sum += i; } //sum = 1; /* 嵌套循环中的用法 break:正常情况下,在嵌套循环中,break只会跳出其所在的当层循环,如需要让break跳出指定的循环层,需要在循环关键词之前加上标记 continue与break原理类似 */ int sum = 0; label1:for(int i = 1; i <= 100; i++){ for(int j = 1; j <= 100; j ++){ if(j > 10) break label1; sum += j; } } //sum = 55 int sum = 0; label1:for(int i = 1; i <= 100; i++){ for(int j = 1; j <= 100; j ++){ if(j > 10) continue label1; sum += j; } } // sum = 5500

    9.一维数组

    数组中的概念 1.数组名 2.元素 3.索引 4.长度

    数组的特点 1.数组是有序的 2.数组中的元素必须是相同的数据类型,可以是基本数据类型也可以是引用数据类型 3.创建数组时,底层会为数组开辟连续的存储空间 4.数组一旦创建,其长度也就固定了,不能修改

    默认初始化值

    数据类型默认值int0float0.0double0.0char0(‘’\0000’ ascii第0位)booleanfalseStringnull(引用数据类型均为null) 1.数组的声明与初始化 int [] array; //声明 array = new int[]{12,3,4,2};//静态初始化,此时array长度固定为4 int[] array = new int[5];//动态初始化一个长度为5的数组,指定array的长度,暂未给array赋值 2.获取数组指定位置元素 array[0];//获取第一个元素 arraty[1];//获取第二个元素 array[1] = 12345; 3.获取数组的长度 array.length; 4.遍历数组 for(int i = 0; i < array.length; i ++){ array[i]; }

    二维数组

    多维数组的本质是一维数组嵌套一维数组 1.数组的声明与初始化 int [][] array; //声明 array = new int[][]{{12,33},{4,2}};//静态初始化,数组的列可以不一致 int[][] array = new int[5][4];//动态初始化1,数组的列必须一致 int[][] array = new int[5][];//动态初始化2,此时数组的列可以不一致 2.获取数组指定位置元素 array[0];//获取第一个元素 arraty[1];//获取第二个元素 array[1] = 12345; 3.获取数组的长度 array.length; 4.遍历数组 for(int i = 0; i < array.length; i ++){ array[i]; }
    Processed: 0.014, SQL: 8