1、關於別名效應
對對象賦值實際上是拷貝的對象的引用,而引用會指向同一個對象。這會帶來“別名效應”。
當把對象傳遞給方法的時候,也會產生別名效應。比如下面的代碼中的例子:
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);
f...{x};
System.out.println("y.c="+y.c)
}
}
在這裏傳的還是reference。
別名效應是個很複雜的問題,在後面還會講到。
2、正則表達式
expect()方法
3、對象的相等性
比較對象的相等性,使用equals() 方法,但是在默認的 equals()方法中比較的還是對象的引用,只是在大多數的類中系統已經重寫了這個方法,用來比較對象的相等性。
4、短接
處理邏輯運算時,只要準確的知道整個表達式的結果,會自動結束整個表達式,這種現象叫做“短接”。
java中不提供運算符重載。
5、 while ( x = y ) 在JAVA中在等待一個boolean 值,而這個表達式不是 boolean 值,它更不會將int 轉化爲 boolean 值,所以編譯器會自動報錯。
6、類型轉換
cast 的意思是“將東西澆到模子裏”
JAVA 允許對除 BOOLEAN 之外的任何基本類型的數據任意轉換,而boolean 值根本不能轉換。類是不允許轉化的。要讓他們相互轉換,必須有特殊的方法。JAVA中所有的對象都可以在自己的類系中上下傳遞。
如果對比 int 小的數據類型(也就是char,byte 和 short 型的數據)進行數學和位運算時,這些值會自動被提升爲int 在進行運算。所以運算的結果仍然是int ,所以當你把這個值賦給更小的變量時,必須進行類行轉換。 java中沒有sizeof()運算符,因爲JAVA中的所有的數據類型在所有的機器語言上相同的。
7、程序的控制
GOTO 是 JAVA 中的保留字,但是並沒有用進去。而JAVA 中有 LABLE(標籤)。