目录:
1.&和&&的区别
2.八种基本数据类型的大小,以及他们的封装类
3.switch 是否能作用在 byte 上,是否能作用在 long 上,是否能作用在 String 上?
4.short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
5.char 型变量中能不能存贮一个中文汉字?为什么?
1.&和&&的区别
&
和
&&
都可以用作逻辑与的运算符,表示逻辑与(
and
),当运算符两边的表达式的结果都为
true
时,整个运算结果才为
true
,
否则,只要有一方为
false
,则结果为
false。
并且不再计算第二个表达式。
列如:
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;
}
2.八种基本数据类型的大小
整形:bype,short,int,long
浮点型:float,double
其他:char,boolean
基本类型
|
大小(字节)
|
默认值
|
封装类
|
byte
|
1
|
(byte)0
|
Byte
|
short
| 2 | (byte)0 |
Short
|
int
| 4 | 0 |
Integer
|
long
| 8 |
0L
|
Long
|
float
| 4 |
0.0f
|
Float
|
double
| 8 |
0.0d
|
Double
|
boolean
| ~ |
false
|
Boolean
|
char
| 2 |
\u0000(null)
|
Character
|
注:
int
是基本数据类型,
Integer
是
int
的封装类,是引用类型。
int
默认值是
0
,而
Integer
默认值是
null
,所以
Integer
能区分出
0
和
null
的情况。一旦
java
看到
null
,就知道这个引用还没有指向某个对象,
再任何引用使用前,必须为其指定一个对象,否则会报错。
3.switch 是否能作用在 byte 上,是否能作用在 long 上,是否能作用在 String 上?
在
switch
(expr1)中,
expr1
只能是一个整数表达式或者枚举常量(更大字体),整数表达式可以是
int
基本类型或
Integer
包装
类型,由于,
byte,short,char
都可以隐含转换为
int
,所以,这些类型以及这些类型的包装类型也是可以的。
- switch 可作用于char byte short int
- switch 可作用于 char byte short int 对应的包装类
- switch 不可作用于 long double float boolean 包括他们的包装类
- switch 可作用于 String (jdk1.7 后才可以作用于String上)
- switch 可以是枚举类型(JDK1.5之后)
例如:
byte key=0;
int i=key;
System.out.println(i);
String s="s";
switch(s){
cash "q";
break;
default:
break;
}
}
4.short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
对于
short s1 = 1; s1 = s1 + 1;
由于
s1+1
运算时会自动提升表达式的类型,所以结果是
int
型,再赋值给
short
类型
s1
时,编译器将
报告需要强制转换类型的错误。
对于
short s1 = 1; s1 += 1;
由于
+=
是
java
语言规定的运算符,
java
编译器会对它进行特殊处理,因此可以正确编译。
String s1="1";
s1=s1+1
short s2=1;
s2+1;
System.out.println(s2);
}
5.char 型变量中能不能存贮一个中文汉字?为什么?
char
型变量是用来存储
Unicode
编码的字符的,
unicode
编码字符集中包含了汉字,所以,
char 型变量中当然可以存储汉字。
不过,如果某个特殊的汉字没有被包含在 unicode
编码字符集中,那么,这个
char
型变量中就不能存储这个特殊汉字。补充说明:
unicode
编码占用两个字节,所以,
char
类型的变量也是占用两个字节