Java面试宝典——学习笔记(一):Java程序设计基本概念
5 第五章:Java程序设计基本概念
5.1 JVM
Java虚拟机!
该部分内容较重要,见其它博文:
Java——Java虚拟机(JVM)
5.2 i++
前++是先自加再使用而后++是先使用再自加!,左结合性,即右到左!
Java运算符的优先级和结合性:
注意:
i=j+++k;
//等价于i=(j++)+k;
5.3 类型转换
- 执行赋值语句时要执行自动装箱技术,调用
xxxValue()
方法。 float z=1.0;
不对,应该为float z=1.0f;
,因为系统默认的浮点数是double
型。- 在Java中,
length
是属性,一般用来说明数组的长度;length()
是字符串的方法,用来求数组中某个元素的字符串长度。 Java的数据类型转换
4.1 Java的数据类型分类
Java的数据类型分为三个类:布尔型(boolean
)、字符型(char
)和数值型(6个)(分为4种整型(byte、short、int、long
)和2种浮点型(float、double
))。编程时经常会用到两种类变量(String、Date
)。4.2 简单数据类型之间的转换
整型、字符型被称为简单数据类型,低级到高级分别为:(byte,short,char)——int——long——float——double
1)低级到高级的自动类型转换
若char
向int
转换,会转换为对应的ASCII码值。
2)高级到低级的类型转换
使用强制类型转换。可能会导致溢出或者精度的下降。
3)包装类过渡类型转换
包装类就是可以将简单类型的变量表示为一个类。
Java共有6个包装类:Boolean、Character、Integer、Long、Float、Double
。例如:
double
型转换成int
型:double d1=100.00; Double D1=new Double(d1); //调用包装类的构造函数,将简单类型的变量转换为相应的包装类 int i1=D1.intValue();
4.3 字符串与其它数据类型的转换
利用toString()
方法。4.4 字符型直接作为数值转换为其它数据类型
字符型转换为数值型有两种对应的关系:一种是将其转换为对应的ASCII
码;一种是转换关系:"1"
即指数值1
,此时利用Character
的getNumericValue(char ch)
方法。练习题
short s=1;
s=s+1;
//编译不通过的,提示损失精度
分析:s=s+1这句先执行s+1然后把结果赋给s,由于1为int类型,所以s+1的返回值是int,编译器自动进行了隐式类型转换 。 所以将一个int类型赋给short就会出错。
short s=1;
s+=1;
//编译通过
分析:s+=1
不同,由于是+=操作符,在解析时候s+=1
就等价于s = (short)(s+1)
,通俗来讲就是 s+=1
等价于 s = (s的类型)(s+1)
。
5.4 程序结构
断言:assert
,是一个包含布尔表达式的语句。有两种形式:
assert Expression1;
assert Expression1 : Expression2;
//Expression1应该总是一个布尔值
//Expression2可以是一个值的任意表达式
42页答案:什么时候用assert
?
5.5 运算符
三目运算符为右结合性,即左到右的结合性。
例题1:
boolean b = true?false:true == true?false:true;
三目运算符为右结合性,同时结合运算符的优先级考虑,所以应该理解为:boolean b = true?false:((true == true)?false:true);
例题2:
char x='x';
int i=10;
int j=false?i:x;
int k=false?1:x;
分析结果:
因此最后结果为:j=120,k=x
。
例题3:
“&”、“|”、“^”
是位运算符,也可以做布尔逻辑运算符(前提是两边的数据类型为布尔类型),工作方式与逻辑运算符相同,但是优先级高于逻辑运算符。
&、| 逻辑运算符与&&、|| 逻辑运算符的区别:前者非短路,后者短路!
答案:5,6,5,6,0
例题4:
答案:32
5.6 异常
内容太多,参见博主其它博文整理:
Java——异常处理
5.7 反射(Reflection)
开放性和原因连接(Causally-connected)是反射系统的两大基本要素。
该部分内容也很重要,请参照博主其它博文整理:
Java——反射机制(Reflection)