第三章 操作符

操作符

                  第三章 
1 、使用静态导入类
   import static 包名全名 . 具体类名 .* ; 可以直接使用这个类中的静态方法
2 、注意对象别名的问题,当你使用赋值运算符操作对象的时候,是操作了对象的引用
//: operators/Assignment.java
// Assignment with objects is a bit tricky.
package operators;
import static net.mindview.util.Print.*;
class Tank {
 int level;
public class Assignment {
 public static void main(String[] args) {
    Tank t1 = new Tank();
    Tank t2 = new Tank();
    t1.level = 9;
    t2.level = 47;
    print("1: t1.level: " + t1.level +
          ", t2.level: " + t2.level);
    t1 = t2;
    print("2: t1.level: " + t1.level +
          ", t2.level: " + t2.level);
    t1.level = 27;
    print("3: t1.level: " + t1.level +
          ", t2.level: " + t2.level);
 }
} /* Output:
1: t1.level: 9, t2.level: 47
2: t1.level: 47, t2.level: 47
3: t1.level: 27, t2.level: 27
*///:~
3 、同时也要注意方法调用中的对象引用问题
4 、关于 Random 类的对象产生随机数问题
当使用 Random 类产生对象的时候,如 Random rand = new Random(); 那么 java 就会将当前的时间作为随机数生成器的种子,并在程序每一次执行都产生不一样的结果。反之,如果你创建对象的时候提供了种子,那么在程序执行过程中,生成的随机数数列是相同的。
可以使用 rand.nextInt(int n) 等方法产生随机数
注意: 下一个伪随机数,在此随机数生成器序列中 0(包括)和 n(不包括)之间均匀分布的 int 值。
5 、一元加号和减号
    一元减号是用于转变数据的符号,而一元加号只是为了与一元减号相对应,但是它唯一的作用就是将较小类型的操作数提升为int
6 、对象的测试性
       == ”和 equals() 的区别
       == ”比较的是对象的引用,所以要比较对象的内容是否相同,则用 equals 方法比较,由于 java 的基础类库已经重载了此方法,所以使用这个方法比较内容是否相同,其他类型的对象必须先重载方法。
 
 
 
 
       实现 equals 方法的相关代码如下:
public class T{
       private String name ;
       public boolean equals (Object obj){
              if (this == obj){
       return true ;
}
if (! (obj instanceof T)){
       return flase ;
}
T t = (T)obj ;
if(this.name == t.name){
       return true ;
}else {
       return false ;
}
}
}
7 、对于易混淆的数据类型
       比如 long 长整型,我们一般写 200L 而不是 200l
8 、移位操作:左移位操作、有符号右移操作、无符号右移操作
①左移操作:补 0
       ②有符号右移操作:符号为正,插入 0 ;反之,插入 1
       ③无符号右移操作:补 0
9 、移位的数据类型问题
较低类型的数值进行移位处理的时候,如 char byte short ,在移位之前它们会先转换成为 int 型,但是数值只有最右端低 5 位才有效。当 long 类型的数值进行移位操作时,得到的结果也是 long 类型,此时只会用到数值右端的低 6 位,以防止移位超过 long 型数值具有的位数。
“移位”还可与“等号”组合使用,操作符左边的值会移动由右边的值指定的位数,再将结果赋给左边的变量。
10 、位运算实在要反复看才行,太难明白了
11 、尽量少用 if-else 三元操作符
12 、关于 while(x = y){
}
必须 x=y 这个表达式的值为 Boolean 值才会编译成功,而 java 编译器并不会把 int 型的数值转化成为 Boolean 值,所以当且仅当 x y 都是 Boolean 值的时候, x=y ,在这里才合法
13 java.lang.Math.round() 方法可以进四舍五入
14 、各数据类型的操作问题
Ø        Boolean 值:不能进行 * / + - % ++ -- 取正 、取负 > < >= <= ~ << >> >>> += -= *= %= >>= >>>= <<= 、和均不能向 char byte int float double long short 类型转型
Ø        Char 值:不能进行 ! && || 、仅不能向 Boolean 转型
Ø        Byte 值:不能进行 ! && || 、仅不能向 Boolean 转型
Ø        Short 值:不能进行 ! && || 、仅不能向 Boolean 转型
Ø        Int 值:不能进行 ! && || 、仅不能向 Boolean 转型
Ø        Long 值:不能进行 ! && || 、仅不能向 Boolean 转型
Ø        Float 值:不能进行 ! && || ~ & | ^ << >> >>> <<= >>= >>>= &= |= ^= ,仅不能向 Boolean 转型
Ø        Double 值:不能进行 ! && || ~ & | ^ << >> >>> <<= >>= >>>= &= |= ^= ,仅不能向 Boolean 转型
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值