目录
3.switch 是否能作用在 byte 上,是否能作用在 long 上,是否能作用在 String 上
4. short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
6. 使用 final 关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?
1、 &和&&的区别
&
和
&&
都可以用作逻辑与的运算符,表示逻辑与(
and
),当运算符两边的表达式的结果都为
true
时,整个运算结果才为
true
, 否则,只要有一方为 false
,则结果为
false
。
&&
还具有短路的功能,即如果第一个表达式为
false
,则不再计算第二个表达式,如下图:

2八种基本数据类型的大小,以及他们的封装类
3.switch 是否能作用在 byte 上,是否能作用在 long 上,是否能作用在 String 上
byte,short,char
都可以隐含转换为
int
,所以,这些类型以及这些类型的包装类型也是可以的。显然,
long
和
String
类型
都不符合
sitch
的语法规定,并且不能被隐式转换成
int
类型,所以,它们不能作用于
swtich
语句中
(
之前的回答是这样的
)
。
但是
JDK1.7 之后,switch
也支持了
String
(注意)

4. short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?

对于
short s1 = 1; s1 = s1 + 1;
由于
s1+1
运算时会自动提升表达式的类型,所以结果是
int
型,再赋值给
short
类型
s1
时,编译器将 报告需要强制转换类型的错误。
对于
short s3 = 1; s3 += 1;
由于
+=
是
java
语言规定的运算符,
java
编译器会对它进行特殊处理,因此可以正确编译。
5. char 型变量中能不能存贮一个中文汉字?为什么?
char
型变量是用来存储
Unicode
编码的字符的,
unicode
编码字符集中包含了汉字,所以,
char
型变量中当然可以存储汉字
char
类型的变量也是占用两个字节, 一个汉字刚好2个字节。
6. 使用 final 关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?
使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变
final StringBuffer hh = new StringBuffer();
hh = new StringBuffer();
则会提示
hh 未定义
使用它的.append() 方法
final StringBuffer sb1 = new StringBuffer();
hh = new StringBuffer();
hh.append("ewe");
则不会报错
引用的指向不能发生改变,引用对象的内容可以变
另外用final修饰类时
修饰方法时