1.switch-case语句格式如下
swtich()变量类型只能是int、short、char、byte和enum类型。
JDK1.0-1.4 数据类型接受 byte short int char
JDK1.5 数据类型接受 byte short int char enum(枚举)
JDK1.7 数据类型接受 byte short int char enum(枚举) String
复制代码
switch(变量){
case 变量值1:
//;
break;
case 变量值2:
//...;
break;
...
default:
//...;
break;
}
复制代码
swtich()变量类型只能是int、short、char、byte和enum类型。当进行case判断时,JVM会自动从上到小扫描,寻找匹配的case,可能存在以下情况:
情况一:若未找到,则执行默认的case。
复制代码
int i = 5;
switch(i){
case 0:
System.out.println("0");break;
case 1:
System.out.println("1");break;
case 2:
System.out.println("2");break;
default:
System.out.println("default");break;
}
输出:default
复制代码
情况二:当每一个case都不存在break时,JVM并不会顺序输出每一个case对应的返回值,而是继续匹配,匹配不成功则返回默认case。
复制代码
int i = 5;
switch(i){
case 0:
System.out.println("0");
case 1:
System.out.println("1");
case 2:
System.out.println("2");
default:
System.out.println("default");
}
输出:default
复制代码
情况三:当每一个case都不存在break时,匹配成功后,从当前case开始,依次返回后续所有case的返回值。
复制代码
int i = 2;
switch(i){
case 0:
System.out.println("0");
case 1:
System.out.println("1");
case 2:
System.out.println("2");
default:
System.out.println("default");
}
输出:2
default
复制代码
情况四:若当前匹配成功的case不存在break,则从当前case开始,依次返回后续case的返回值,直到遇到break,跳出判断。
复制代码
int i = 2;
switch(i){
case 0:
System.out.println("0");
case 1:
System.out.println("1");
case 2:
System.out.println("2");
case 3:
System.out.println("3");break;
default:
System.out.println("default");
}
输出:2
3
2.switch case穿透
比如:星期1-5输出 工作日,星期6-7 输出休息日
int week = 1;
switch(week){
case 1:
case 2://如果和1匹配上,2-5都不匹配了,就叫穿透
case 3:
case 4:
case 5:
System.out.println("工作日");
break;
case 6:
case 7:
System.out.println("休息日");
break;
}
3.数组命名的几种方式, 数组有.length属性
(1)数据类型[] 变量名 = new 数据类型[存储元素的个数];
int[] arr = new int[4];
(2) 数据类型[] 变量名 = new 数据类型[]{元素1,元素2,元素3};
注意事项:这种方式,new后买你的中括号中,不允许写任何内容,写了就编译失败。
int[] arr = new int[]{1,2,3,4};
System.out.println(arr.length);
(3)数据类型[] 变量名 = {元素1,元素2,元素3};//推荐使用,简单
int[] arr = {1,2,3};//
注意:int[] arr = new int{1,2,3,4,5,6,}; 大括号内多加一个逗号,这种格式是可以编译通过的,但不代表6后面数字默认为0,长度还是 6,输出arr[6]会报数组越界的错误。
4.JVM的内存划分。
寄存器:内存和CPU之间
本地方法栈:JVM调用了系统中的功能 //复制粘贴等等
方法和数据共享:运行时期class文件,进入的地方
方法栈:所有的方法运行的时候,进入的内存
堆:存储的是容器和对象//容器就指数组,集合之类的
5.数组建好之后,如果是int类型的,如果没赋值,默认是0。
eg.
int[] arr = new int[4];
System.out.println(arr[0]);//输出是0
6.for和while什么时候使用
for 知道循环次数,计数器思想
while 不确定循环次数
7.通过数组越界理解数组的内存
eg.
int[] arr = {5,2,1};
System.out.println(arr[3]); //编译不报错,运行报错,因为编译时只检查语法错误,因为在内存运行时才创建数组,
(2)数组的越界异常有两种情况,一种是正数,eg.arr[3],一种是负数索引arr[-1],负数索引为人为故意写的。
8.二维数组
int[][] arr = new int[3][4];
[3] 表示:二维数组中,有三个一维数组
[4] 表示:三个一维数组中,每个数组的长度是4
eg.int[][] arr = new int[3][4];
System.out.println(arr);//输出数组对应的地址
System.out.println(arr[1]);//也是输出数组对应的地址,因为表示角标为1的那个一维数组。
9.二维数组的几种方式的写法
(1)定义了一维数组,但是未定义长度,,必须要new
int[][] arr = new int[3][];
//必须要new
arr[0] = new int[5];
System.out.println(arr[0][1]);
(2)一般写法
int[][] arr = { {1,1},{2,3},{4,5,7} };
10 二维数组遍历
eg.二维数组中,存储4个一维数组,每个一维数组的长度不同
遍历:嵌套for循环,外层for循环遍历二维数组
遍历过程中,for遍历一维数组
int[][] arr= { {1,2,3},{4,5},{6,7},{8} };
for(int i=0;i<arr.length;i++){
for(int j=0;j<arr[i].length;j++){
System.out.println(arr[i][j]);
}
System.out.println();//作用:将各个数组分行打印出来
11.方法的定义格式
修饰符 返回值类型 方法的名字 (参数列表。。。){
方法的功能主体
循环,判断,变量,比较,运算
return;
}
}
12 方法的定义位置
类中,方法外。(main方法里也不准定义方法)
13 return 后面不能有代码。
14. 方法定义和使用的注意事项
1.方法不能定义在另一个方法的里面
2.写错方法名字
3.写错了参数列表
4.方法返回值是void,方法中可以省略return不写
return下面不能有代码
5.方法返回值类型,和return,后面数据类型必须匹配
6.方法重复定义问题
7.调用方法的时候,返回值是void,不能写在输出语句中。
swtich()变量类型只能是int、short、char、byte和enum类型。
JDK1.0-1.4 数据类型接受 byte short int char
JDK1.5 数据类型接受 byte short int char enum(枚举)
JDK1.7 数据类型接受 byte short int char enum(枚举) String
复制代码
switch(变量){
case 变量值1:
//;
break;
case 变量值2:
//...;
break;
...
default:
//...;
break;
}
复制代码
swtich()变量类型只能是int、short、char、byte和enum类型。当进行case判断时,JVM会自动从上到小扫描,寻找匹配的case,可能存在以下情况:
情况一:若未找到,则执行默认的case。
复制代码
int i = 5;
switch(i){
case 0:
System.out.println("0");break;
case 1:
System.out.println("1");break;
case 2:
System.out.println("2");break;
default:
System.out.println("default");break;
}
输出:default
复制代码
情况二:当每一个case都不存在break时,JVM并不会顺序输出每一个case对应的返回值,而是继续匹配,匹配不成功则返回默认case。
复制代码
int i = 5;
switch(i){
case 0:
System.out.println("0");
case 1:
System.out.println("1");
case 2:
System.out.println("2");
default:
System.out.println("default");
}
输出:default
复制代码
情况三:当每一个case都不存在break时,匹配成功后,从当前case开始,依次返回后续所有case的返回值。
复制代码
int i = 2;
switch(i){
case 0:
System.out.println("0");
case 1:
System.out.println("1");
case 2:
System.out.println("2");
default:
System.out.println("default");
}
输出:2
default
复制代码
情况四:若当前匹配成功的case不存在break,则从当前case开始,依次返回后续case的返回值,直到遇到break,跳出判断。
复制代码
int i = 2;
switch(i){
case 0:
System.out.println("0");
case 1:
System.out.println("1");
case 2:
System.out.println("2");
case 3:
System.out.println("3");break;
default:
System.out.println("default");
}
输出:2
3
2.switch case穿透
比如:星期1-5输出 工作日,星期6-7 输出休息日
int week = 1;
switch(week){
case 1:
case 2://如果和1匹配上,2-5都不匹配了,就叫穿透
case 3:
case 4:
case 5:
System.out.println("工作日");
break;
case 6:
case 7:
System.out.println("休息日");
break;
}
3.数组命名的几种方式, 数组有.length属性
(1)数据类型[] 变量名 = new 数据类型[存储元素的个数];
int[] arr = new int[4];
(2) 数据类型[] 变量名 = new 数据类型[]{元素1,元素2,元素3};
注意事项:这种方式,new后买你的中括号中,不允许写任何内容,写了就编译失败。
int[] arr = new int[]{1,2,3,4};
System.out.println(arr.length);
(3)数据类型[] 变量名 = {元素1,元素2,元素3};//推荐使用,简单
int[] arr = {1,2,3};//
注意:int[] arr = new int{1,2,3,4,5,6,}; 大括号内多加一个逗号,这种格式是可以编译通过的,但不代表6后面数字默认为0,长度还是 6,输出arr[6]会报数组越界的错误。
4.JVM的内存划分。
寄存器:内存和CPU之间
本地方法栈:JVM调用了系统中的功能 //复制粘贴等等
方法和数据共享:运行时期class文件,进入的地方
方法栈:所有的方法运行的时候,进入的内存
堆:存储的是容器和对象//容器就指数组,集合之类的
5.数组建好之后,如果是int类型的,如果没赋值,默认是0。
eg.
int[] arr = new int[4];
System.out.println(arr[0]);//输出是0
6.for和while什么时候使用
for 知道循环次数,计数器思想
while 不确定循环次数
7.通过数组越界理解数组的内存
eg.
int[] arr = {5,2,1};
System.out.println(arr[3]); //编译不报错,运行报错,因为编译时只检查语法错误,因为在内存运行时才创建数组,
(2)数组的越界异常有两种情况,一种是正数,eg.arr[3],一种是负数索引arr[-1],负数索引为人为故意写的。
8.二维数组
int[][] arr = new int[3][4];
[3] 表示:二维数组中,有三个一维数组
[4] 表示:三个一维数组中,每个数组的长度是4
eg.int[][] arr = new int[3][4];
System.out.println(arr);//输出数组对应的地址
System.out.println(arr[1]);//也是输出数组对应的地址,因为表示角标为1的那个一维数组。
9.二维数组的几种方式的写法
(1)定义了一维数组,但是未定义长度,,必须要new
int[][] arr = new int[3][];
//必须要new
arr[0] = new int[5];
System.out.println(arr[0][1]);
(2)一般写法
int[][] arr = { {1,1},{2,3},{4,5,7} };
10 二维数组遍历
eg.二维数组中,存储4个一维数组,每个一维数组的长度不同
遍历:嵌套for循环,外层for循环遍历二维数组
遍历过程中,for遍历一维数组
int[][] arr= { {1,2,3},{4,5},{6,7},{8} };
for(int i=0;i<arr.length;i++){
for(int j=0;j<arr[i].length;j++){
System.out.println(arr[i][j]);
}
System.out.println();//作用:将各个数组分行打印出来
11.方法的定义格式
修饰符 返回值类型 方法的名字 (参数列表。。。){
方法的功能主体
循环,判断,变量,比较,运算
return;
}
}
12 方法的定义位置
类中,方法外。(main方法里也不准定义方法)
13 return 后面不能有代码。
14. 方法定义和使用的注意事项
1.方法不能定义在另一个方法的里面
2.写错方法名字
3.写错了参数列表
4.方法返回值是void,方法中可以省略return不写
return下面不能有代码
5.方法返回值类型,和return,后面数据类型必须匹配
6.方法重复定义问题
7.调用方法的时候,返回值是void,不能写在输出语句中。