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,直到他彻底消失。
网友评论