第三章:操作符

赋值

基本数据类型赋值:基本数据类型存储了实际的数值,而并非指向一个对象的引用,所以在为其赋值的时候,是直接将一个地方的内容复制到另一个地方

对象赋值:对一个对象进行操作时,我们真正操作的是对对象的引用。所以倘若将一个对象赋值给另一个对象,实际上是将引用从一个地方赋值到另一个地方,这意味着假若对对象使用c = d,那么c和d都指向原本只有d指向的那个对象。这种特殊的现象通常称作别名现象

class Tank{
    int leval;
}

public class Assignment{
    public static void main(String[] args){
        Tank t1 = new Tank();
        Tank t2 = new Tank();
        
        t1.level = 9;
        t2.leval = 27;
        
        t1 = t2;
        t1.leval = 78;
        
        System.out.println("t1.leval = " + t1.leval); //78
        System.out.println("t2.leval = " + t2.leval); //78
    }
}
方法调用中的别名

当通过方法传递参数时,实际上传递的是参数对象的引用,在方法中修改参数的值,方法外面的参数也会改变

class Letter{
    char c;
}

public class PassObject{
    static void f(Letter y){
        y.c = 'z';
    }
    
    public static void main(String[] args){
        Letter x = new Letter();
        x.c = 'a';
        
        System.out.println("x.c = " + x.c); //a
        f(x);
        System.out.println("x.c = " + x.c); //z
    }
}
算术操作符
Random rand = new Random(47);
//在创建Random时提供种子,就可以在每次执行程序时都生成相同的随机数,默认种子和系统当前时间有关

一元+可以将较小类型的操作数提升为int

char c = 'a';
int b = +c;
关系操作符

对于基本类型== 和 !=比较的是值是否相等,对于对象,则比较的是引用是否相等;如果要比较两个对象的实际内容是否相等,必须使用所有对象都适用的特殊方法 equals(),但是equals()默认行为是比较引用,所以定义类时最好重写equals()方法,同时也要重写hashCode()方法

截尾和舍入

在将float和double转型为整型时,总是对该数字进行截尾;如果想得到舍入的结果,就需要使用Math.round()

当类型转换成一种较小的类型时,必须留意窄化转换的结果,否则会在类型转换过程中不知不觉的丢失信息

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。