首页 > 代码库 > java基础知识随笔
java基础知识随笔
1.&与&&的区别
相同:两者都可以用作逻辑与(and)运算,运算符两边都为真时表达式才为真。
不同:&&具有短路与的功能,即第一个表达式为false时,第二个表达式不再判断,例如if(str!=null && !str.equals(""))表达式,当str为null时,由于短路与,后面的表达式不会执行,所以也不会报NullPointerException。 反之如果用 & ,则会抛NullPointerException异常
&可用作位运算符,表达式两边不是boolean类型时,&表示按位操作。例如0x31 & 0x0f结果为0x01。
2.java中如何跳出当前的多重嵌套循环?
break:跳出当前循环
continue:跳出此次循环
想要跳出多重循环,可以在整个循环语句前定义一个标号,然后在满足某条件时break至标号处即可。例如
ok:
for(int i=0;i<10;i++){
for(int j=0;j<10;j++){
if(i==5) break ok;
}
}
还可以让外层的循环条件表达式的结果受到里层循环体代码的控制。例如
int arr[][] ={{1,2,3},{4,5,6,7},{9}};
boolean found = false;
for(int i=0;i<arr.length && !found ;i++){
for(int j=0;j<arr[i].length;j++){
if(arr[i][j]==5){
found=true;
break;
}
System.out.println(arr[i][j]);
}
}
3.switch语句能否作用在byte上?能否作用long上?能否作用在String上?
switch(expr1)中,expr1只能是一个整数表达式或者枚举常量。整数表达式可以int基本类型或Integer包装类。byte,short,char都可以隐式转换为int,所有这些类型都可以
long,String显然不符合要求。
特殊:JDK 7 以后,switch支持String类型。例如:
String str="123";
switch(str){
case "abc":
System.out.println("abc");
break;
case "123":
System.out.println("123");
break;
default:
System.out.println("default");
}
4.short s1=1;s1=s1+1;有什么错?short s1=1;s1+=1;有什么错?
s1+1运算结果为int型,再赋值给s1是short型,编译器会报强制类型转换错误。
+=是java语言规定的运算符,编译器会进行特殊处理,因此可以正确编译。
5.char 型变量中能不能存储一个中文汉字?为什么?
可以。因为char型变量是用来存储Unicode编码的字符的,unicode中包含中文,所以可以存储汉字
补充:unicode编码占两个字节,所以,char型也占用两个字节
java基础知识随笔