switch语句能否用作用在byte上,能否作用在long上,能否作用在String上?
switch选择语句的格式为:
switch(intergral-selector){
case integral-value1 : statement ; break;
case integral-value2 : statement ; break;
//...
default : statement;
}
intergral-selector只能是一个能够产生整数值的表达式或者枚举常量,整数表达式可以是int基本类型或Integer包装类型,因为,byte,shot,char都可以隐含的转换为int,所以,这些类型以及这些类型的包装类型也是可以的。显然,long和String类型都不符合switch的语法规定,并不能被隐式的转换成int类型,所以,他们不能作用于switch语句中。
补充:
基本类型 | 大小 | 最小值 | 最大值 | 包装器类型 |
boolean | —— | —— | —— | Boolean |
char | 16-bit | Undicode 0 | Unicode 2^16-1 | Character |
byte | 8 bits | -128 | +127 | Byte |
short | 16bits | -2^15 | +2^15-1 | Short |
int | 32bits | -2^31 | +2^31-1 | Integer |
long | 64bits | -2^63 | +2^63-1 | Long |
float | 32bits | IEEE754 | IEEE754 | Float |
double | 64bits | IEEE754 | IEEE754 | Double |
void | —— | —— | —— | Void |
IEEE二进制浮点数算术标准(IEEE 754)是最广泛使用的浮点数运算标准,为许多CPU与浮点运算器所采用。
char类型只能存放以‘ ’(单引号)为标志的单个字符。
字符是指计算机中使用的字母、数字、字和符号,包括:1,2,3,A,B,C,~!#%+等等。在 ASCII 编码中,一个英文字母字符存储需要1个字节。在 GB2312 编码或 GBK 编码中,一个汉字字符存储需要2个字节。在UTF-8编码中,一个英文字母字符存储需要1个字节,一个汉字字符储存需要3到4个字节。在UTF-16编码中,一个英文字母字符或一个汉字字符存储都需要2个字节(Unicode扩展区的一些汉字存储需要4个字节)。在UTF-32编码中,世界上任何字符的存储都需要4个字节。
字符类型在内存中占有两个字节,可以用来保存英文字母等字符。计算机处理字符类型时,是把这些字符当成不同的整数来看待,因此,严格来说,字符类型也算是整数类型的一种。
问:char类型变量中能不能存储一个中文汉字?为什么?
char类型变量是用来存储Unicode编码的字符的,Unicode编码字符集中包含了汉字,所以,char类型变量可以存储一个汉字。但是,如果某个特殊的汉字没有被包含在unicode编码字符集中,那么,这个char类型变量中就不能存储这个特殊汉字。说明:Unicode编码占用两个字节,所以,char类型的变量也是占用两个字节的。