賦值
基本數(shù)據(jù)類型賦值:基本數(shù)據(jù)類型存儲(chǔ)了實(shí)際的數(shù)值,而并非指向一個(gè)對(duì)象的引用捷兰,所以在為其賦值的時(shí)候折欠,是直接將一個(gè)地方的內(nèi)容復(fù)制到另一個(gè)地方
對(duì)象賦值:對(duì)一個(gè)對(duì)象進(jìn)行操作時(shí),我們真正操作的是對(duì)對(duì)象的引用芝发。所以倘若將一個(gè)對(duì)象賦值給另一個(gè)對(duì)象,實(shí)際上是將引用從一個(gè)地方賦值到另一個(gè)地方苛谷,這意味著假若對(duì)對(duì)象使用c = d辅鲸,那么c和d都指向原本只有d指向的那個(gè)對(duì)象。這種特殊的現(xiàn)象通常稱作別名現(xiàn)象
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
}
}
方法調(diào)用中的別名
當(dāng)通過方法傳遞參數(shù)時(shí)腹殿,實(shí)際上傳遞的是參數(shù)對(duì)象的引用独悴,在方法中修改參數(shù)的值,方法外面的參數(shù)也會(huì)改變
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
}
}
算術(shù)操作符
Random rand = new Random(47);
//在創(chuàng)建Random時(shí)提供種子锣尉,就可以在每次執(zhí)行程序時(shí)都生成相同的隨機(jī)數(shù)刻炒,默認(rèn)種子和系統(tǒng)當(dāng)前時(shí)間有關(guān)
一元+
可以將較小類型的操作數(shù)提升為int
char c = 'a';
int b = +c;
關(guān)系操作符
對(duì)于基本類型== 和 !=
比較的是值是否相等,對(duì)于對(duì)象自沧,則比較的是引用是否相等坟奥;如果要比較兩個(gè)對(duì)象的實(shí)際內(nèi)容是否相等,必須使用所有對(duì)象都適用的特殊方法 equals()
,但是equals()
默認(rèn)行為是比較引用拇厢,所以定義類時(shí)最好重寫equals()
方法爱谁,同時(shí)也要重寫hashCode()
方法
截尾和舍入
在將float和double轉(zhuǎn)型為整型時(shí),總是對(duì)該數(shù)字進(jìn)行截尾孝偎;如果想得到舍入的結(jié)果访敌,就需要使用Math.round()
當(dāng)類型轉(zhuǎn)換成一種較小的類型時(shí),必須留意窄化轉(zhuǎn)換
的結(jié)果邪媳,否則會(huì)在類型轉(zhuǎn)換過程中不知不覺的丟失信息