JAVA_DAY04知识重点整理(流程控制与数组)

1.swich语句中,如果没有在case语句后加break,将会有case穿透现象,也就是说,程序于第一个case匹配后,会一直执行到default,不再于之后的case进行条件匹配
2.if...else if语句中,else if中的条件有个隐式条件,就是非(if中的条件,以及之前else if的条件),else同理
3.在for循环中,除了两个分号外(;)其余都是可以省略的,还有就是,初始化可以定义多个值,但是for循环中初始化语句中只能有一条语句,所以这些值必须是同一个类型
    例:
        for(int a = 0,b = 1,c = 2;.....;.....){}
4.for循环也可以模拟while循环
    例:
        int i = 0
        for(;i<5;){}   ==   while(i<5){}
5.把初始化变量定义在for循环之外的一个好处就是可以扩大这个变量的作用域,因为for循环中定义的初始化变量只作用于当前的for语句,语句块之外的代码访问不到这个变量
6.continue跳过当前循环,执行下一次循环,break结束当前循环,return结束整个方法
7.break结束外层循环,需要在外循环贴一个标签(语法就是在循环体之前设置一个...:的形式),continue也同样适用
    例:
        outer:
        for(..;..;..){
            for(..;..;..){
                .........
                if(...){
                    break outer;
                }
            }
        }
8.数组等定义方式有两种:
    1.静态方式:int[] int_arr = new int[]{1,2,3,4,5}或者int[] int_arr = {1,2,3,4,5}
        这种是给数组直接赋值,由系统来确定数组的长度
    2.动态方式:int[] int_arr = new int[5]
        这种事给数组指定长度,由系统来位元素赋值(byte,short,int,long=0,float,double=0.0,char=\u0000,boolean=false,引用=null)
    3.切记不要即为数组赋值又为数组指定长度
9.数组的长度是不可变的,数组的引用变量指向别的数组,给人以数组可变的假象
10.引用变量是存放于方法栈的,而实际的对象是存放于堆中的,就算方法执行完毕,方法栈被销毁,但不一定他指向的对象被销毁,因为这个对象可能会被别的变量引用(这才参数传递时十分常见)
11.基本类型的数组,数组元素保存的是实际的数据,引用类型的数组,数组元素保存的只是指向实际对象的变量
    例:
        Person p = new Person();
        p.age = 18;
        Person[] arr_p = new Person[1]
        arr_p[0] = p
        System.out.println(arr_p[0].age)  //18
        p.age = 20
        System.out.println(arr_p[0].age)  //20
    因为p与arr_p[0]都是指向堆内存中同一块区域,所以使用p引用来修改对象的age变量,必然会影响到arr_p
 

猜你喜欢

转载自blog.csdn.net/weixin_42668719/article/details/81990112