美文网首页
第二篇-流程控制与数组

第二篇-流程控制与数组

作者: 爱吃板栗的小女孩 | 来源:发表于2018-10-17 21:21 被阅读59次
1.switch条件判断类型:

byte,short ,int,char,String,枚举

2.while 与 do while

while:先判断条件,然后执行方法体
do while是先执行方法体,然后在while判断条件 do while至少执行一次

do{
  xxxxx
}
while(条件);
3.break,continue,return

(1)break:强行终止循环,而不等循环条件为false
a.break也可用在结束外层循环,此标签必须是在break所在的外层循环之前定义才有实际意义

       outer:
       for (int i = 0; i < 10; i++) {
           for (int j = 0; j < 2; j++) {
               Log.e("test", j + "");
               if(j==2){
                   break outer;
               }
           }
       }
 //这样当j=2,即可直接跳出最外层循环(i那层)

(2)continue:忽略本次循环剩下的语句
continue只是忽略本次循环剩下语句,接着开始下一次循环,并不会终止循环。而break则是完全终止循环本身

        outer:
        for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 2; j++) {
                Log.e("sssss", "i=" + i + "j=" + j);
                if (j == 1) {
                    continue outer;
                }
            }
        }
 //每当j=1的时候,就会执行continue outer,跳出外层循环之前定义好的outer.
 //故结果j永远无法等于2

(3)return:结束方法,不管return处于多少层方法中

        for (int i = 0; i < 10; i++) {
            Log.e("i=", i + "");
            if (i == 1) {
                return;
            }
            Log.e("alert:", "ssss之后执行的");
        }
 //输出i=0  ssss之后执行的  i=1没了
4.数组

a.推荐的定义数组格式:type[] name
b.如何初始化数组:
(1)int[] a=new int[]{1,2,3};称为静态初始化
更简单方式:int[] a={1,2,3}
(2)int[] a=new int[5];称为动态初始化,刚开始系统会为数组定义初始值
c.数组索引从0开始
d.若定义一个字符串数组长度为4,a[0]="你好" a[1]="世界",打印这个数组,会输出:
你好
世界
null
null
原因就在于a[2]和a[3]并没有给定初始值,而是使用的系统给定的初始值null
e.定义并初始化一个数组后,在内存中分配两个空间,一个用于存放数组的引用变量,另一个用于存放数组本身。

    int[] a={5,7,20};
    int[] b=new int[4];
屏幕快照 2018-10-17 下午9.05.14.png

若此时执行

b=a;
屏幕快照 2018-10-17 下午9.05.35.png

系统把a的值赋给了b,因为a和b都是引用类型变量存的是地址,就是让b指向了a的地址。这时b原来所指向的数组0,0,0,0变成了垃圾,等待垃圾回收机制收他,但是长度不会变依然是4,直到他彻底消失。

相关文章

网友评论

      本文标题:第二篇-流程控制与数组

      本文链接:https://www.haomeiwen.com/subject/gqjkzftx.html