Java编程思想第四版——第七天
2012-03-28
70-76/913
昨天找一好心的网友弄到一本java编程思想第四版的文字版,但是奇怪的是为什么和扫描版的差别那么大呢?搞不懂,章节都不同。又对比了下第三版,和第三版也不同,那这个又是哪一版呢?奇怪。看来还是先用扫描版的吧。
第3章 操作符
在最底层,Java中德数据是通过使用操作符来操作的。
Java建立在C++基础之上,做了一些改进和简化。
3.1 更简单的打印语句
静态导入(static import)java SE5中新增。
使用java最常见的问题之一:CLASSPATH环境变量,使用类库,在计算机的CLASSPATH环境变量中添加代码目录树的根目录。
3.2 使用java操作符
操作符接受一个或多个参数,生成一个新值。参数的形式与普通的方法调用不同,但效果是相同的。
操作符作用于操作数,生成一个新值。
副作用:操作符改变操作数自身的值。与没有副作用的操作符生成的值,没有什么区别。
几乎所有的操作符都只能操作“基本类型”。例外:“=”、“==”、“!=”,这些操作符能操作所有的对象。除此之外,String类支持“+”和“+=”。
3.3 优先级
表达式中存在多个操作符,优先级决定了各部分的计算顺序。Java对计算顺序做了特别的规定,最简单的规则就是先乘除后加减。最好用括号明确规定计算顺序。
编译器观察到一个String后面紧跟一个“+”,而这个“+”的后面又紧跟一个非String类型的元素时,就会尝试将这个非String类型的元素转换为String。
3.4 赋值
赋值使用操作符“=”,意思是“取右边的值(右值),把它复制给左边(左值)”。右值可以是任何常数、变量或者表达式(只要它能生成一个值就行)。但左值必须是一个明确的、已命名的变量。也就是说,必须有一个物理空间可以存储等号右边的值。
不能把任何东西赋给一个常数,常数不能作为左值。
基本数据类型赋值:基本类型存储了实际的数值,并非指向一个对象的引用,为其赋值时,直接将一个地方的内容复制到了另一个地方。
为对象赋值,对一个对象进行操作,真正操作的是对对象的引用,所以将一个对象赋值给另一个对象,实际是将引用从一个地方复制到另一个地方。例:对对象使用c=d,那么c和d都指向原本只有d指向的那个对象。
别名现象,java操作对象的一种基本方式。避免别名现象,直接操作对象内的域。但是这样容易导致混乱,并且违背了良好的面向对象程序设计的原则。应该留意,为对象赋值可能会产生意想不到的结果。
3.4.1 方法调用中的别名问题
将一个对象传递给方法时,也会产生别名问题。
3.5 算术操作符
Java的基本算术操作符与其他大多数程序设计语言是相同的。加号(+)、减号(-)、除号(/)、乘号(*)、取模操作符(%,从整数除法中产生余数),整数除法会直接去掉结果的小数位,而不是四舍五入的圆整结果。
Java使用一种来自C和C++的简化符号同时进行运算与赋值操作:x加4,将结果赋回给x,x+=4。
Random类,如果创建过程中没有传递任何参数,那么java就会将当前时间作为随机数生成器的种子,并由此在程序每一次执行时都产生不同的输出。通过在创建Random对象时提供种子(用于随机数生成器的初始化值,随机数生成器对于特定的种子值总是产生相同的随机数序列),就可以在每一次执行程序时都生成相同的随机数。通过Random类的对象,程序可生成许多不同类型的随机数字,调用方法:nextInt()、nextFloat()、nextLong()、nextDouble(),传递给nextInt()的参数设置了所产生的随机数的上限,下限为0。
3.5.1 一元加、减操作符
一元加、减和二元加、减使用相同的符号,根据表达式的书写形式,编译器会自动判断出使用的是哪一种。一元减号用于转变数据的符号,而一元加号只是为了与一元减号相对应,但是它唯一的作用仅仅时将较小类型的操作数提升为int。