- 1. &和&&的区别
- 2. switch 是否能作用在 byte 上,是否能作用在 long 上,是否能作用在 String 上?
- 3. short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
- 4.char 型变量中能不能存贮一个中文汉字?为什么?
- 5. 使用 final 关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?
代码演示:
if (test1() & test2()) {
System.out.println("打印...");
}
private static boolean test1() {
System.out.println("*********test1************");
return false;
}
private static boolean test2() {
System.out.println("*********test2************");
return false;
}
如果使用&运行之后就会显示
*********test1************ *********test2************
如果使用&&运行之后就会显示
*********test1************
由此可得知
& 代表第一个条件不满足,仍然会执行后面的条件
&& 第一个条件不满足,第二个条件就不执行了
代码演示:
//byte
byte key = 1;
switch (key) {
case 1:
break;
default:
break;
}
//String
String a = "a";
switch (a) {
case "a":
break;
default:
break;
}
switch可以作用在byte上,也可以作用在String上
3. short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?short s1 = 1; s1 = s1 + 1;
对于 short s1 = 1; s1 = s1 + 1; 由于 s1+1 运算时会自动提升表达式的类型,所以结果是 int 型,再赋值给 short 类型 s1 时,编译器将 报告需要强制转换类型的错误。
short s1 = 1; s1 += 1;
对于 short s1 = 1; s1 += 1;由于 += 是 java 语言规定的运算符,java 编译器会对它进行特殊处理,因此可以正确编译。
4.char 型变量中能不能存贮一个中文汉字?为什么?char a = "王“;
System.out.println("a");
输出结果
王
一个汉字占用两个字节 ,char 类型的变量是占用两个字节,所以char 型变量中能存贮一个中文汉字
5. 使用 final 关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?使用 final 关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是可以改变的
final StringBuffer a=new StringBuffer("immutable");
//执行如下语句将报告编译期错误:
a=new StringBuffer("");
// 但是,执行如下语句则可以通过编译:
a.append(" broken!");
final关键字的作用
修饰类:不能被继承
修饰变量:引用的指向不能发生改变,引用指向的对象内容是可以发生改变的
修饰方法:不能被重写



