String類和StringBuffer類主要用來處理字元串,這兩個類提供了很多字元串的使用處理方法。String類是不可變類,表示對象所包含的字元串類不能改變。StringBuffer類是可變類,其對象所包含的字元串內容可以被添加或修改。 關於這兩個類處理字元串的常用方法請參考:http://ww ...
String類和StringBuffer類主要用來處理字元串,這兩個類提供了很多字元串的使用處理方法。String類是不可變類,表示對象所包含的字元串類不能改變。StringBuffer類是可變類,其對象所包含的字元串內容可以被添加或修改。
關於這兩個類處理字元串的常用方法請參考:http://www.runoob.com/java/java-string.html
http://www.runoob.com/java/java-stringbuffer.html
下麵主要介紹:equals和==在字元串和非字元串使用方面的區別
class Test{ int x=1; } public class EqualTest{ public static void main(String args[]){ String a1,a2,a3="abc",a4="abc"; a1=new String("abc"); a2=new String("abc"); System.out.println("a1.equals(a2): "+(a1.equals(a2))); System.out.println("a1==a2: "+(a1==a2)); System.out.println("a1.equals(a3): "+(a1.equals(a3))); System.out.println("a1==a3: "+(a1==a3)); System.out.println("a3.equals(a4): "+(a3.equals(a4))); System.out.println("a3==a4: "+(a3==a4)); System.out.println("----------------------------"); Test one=new Test(); Test two=new Test(); System.out.println("one.equals(two): "+(one.equals(two))); System.out.println("one==two: "+(one==two)); one=two; System.out.println("賦值後:"); System.out.println("one.equals(two): "+(one.equals(two))); System.out.println("one==two: "+(one==two)); } }
1. ==可以用來比較基本類型和引用類型,判斷內容和記憶體地址
2. equals只能用來比較引用類型,它只判斷內容。
java中的數據類型,可分為兩類:
1.基本數據類型,也稱原始數據類型。byte,short,char,int,long,float,double,boolean
他們之間的比較,應用雙等號(==),比較的是他們的值。
2.複合數據類型(類)
當他們用(==)進行比較的時候,比較的是他們在記憶體中的存放地址,
所以,除非是同一個new出來的對象,他們的比較後的結果為true,否則比較後結果為false。
字元串緩衝池:程式在運行的時候會創建一個字元串緩衝池。
當使用 String a3 = "abc"; 這樣的表達是創建字元串的時候,程式首先會在這個String緩衝池中尋找相同值的對象
在String a3 = "abc";中,a3先被放到了池中。所以在a4被創建的時候,程式找到了具有相同值的 a4,並將a4引用a3所引用的對象"abc"。
使用了 new 操作符,他明白的告訴程式:"我要一個新的!不要舊的!"於是一個新的"abc"Sting對象被創建在記憶體中。他們的值相同,但是位置不同。