java基础语法(2)

来源:互联网 发布:大数据与政府统计 编辑:程序博客网 时间:2024/05/16 02:00

1.switch 语句能否作用在byte 上,能否作用在long 上,能否作用在String 上?

在switch(expr1)中,expr1 只能是一个整数表达式或者枚举常量。整数表达式可以是int 基本类型或Integer 包装类型,由于,byte,short,char 都可以隐含转换为int ,所以,这些类型以及这些类型的包装类型也是可以的。显然,long 和String 类型都不符合switch 的语法规定,并且不能被隐式转换成int 类型,所以,它们不能作用于swtich 语句中。

2.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 编译器会对它进行特殊处理,因此可以正确编译。

3.char 型变量中能不能存贮一个中文汉字?为什么?

char 型变量是用来存储Unicode 编码的字符的,unicode 编码字符集中包含了汉字,所以,char型变量中当然可以存储汉字啦。不过,如果某个特殊的汉字没有被包含在unicode 编码字符集中,那么,这个char 型变量中就不能存储这个特殊汉字。补充说明:unicode 编码占用两个字节,所以,char 类型的变量也是占用两个字节。

4.是否可以从一个static 方法内部发出对非static 方法的调用?

不可以。因为非static 方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方法调用,而static 方法调用时不需要创建对象,可以直接调用。也就是说,当一个static方法被调用时,可能还没有创建任何实例对象,如果从一个static 方法中发出对非static 方法的调用,那个非static 方法是关联到哪个对象上的呢?这个逻辑无法成立,所以,一个static 方法内部发出对非static 方法的调用。