Java基础知识04 —— switch,数组,二维i数组,随机点名

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,不能写在输出语句中。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值