在Java中,boolean、byte、short、int、long、char、float、double這八種是基本數據類(lèi)型,其余的都是引用類(lèi)型,比如String、數組等
當我們聲明一個(gè)引用類(lèi)型變量時(shí),系統只為該變量分配了引用空間,并未創(chuàng )建一個(gè)具體的對象;當用new為對象分配空間后,將對象的引用(內存中的首地址)賦值給引用變量
可以把Java中的應用理解為對象在內存中的首地址
Java的常用包
java.applet:包含一些用于創(chuàng )建Java小應用程序的類(lèi)
java.awt(awt抽象窗口工具包):包含一些用于編寫(xiě)與平臺無(wú)關(guān)的圖形界面(GUI)應用程序的類(lèi)
java.io:包含一些用作輸入輸出(I/O)處理的類(lèi)
java.lang:包含一些Java語(yǔ)言的基本類(lèi)與核心類(lèi),如String、Math、Integer、System、Runtime,提供常用的功能,這個(gè)包中的所有類(lèi)是被隱式導入的
java.net:包含用于建立網(wǎng)絡(luò )連接的類(lèi),于、與java.io同時(shí)使用完成與網(wǎng)絡(luò )有關(guān)的讀寫(xiě)
java.util:包含一些使用工具類(lèi)和數據結構類(lèi)
String類(lèi):
public final class String:聲名為final,即不能再從String類(lèi)中派生出其他類(lèi)
針對String的"+"和"+=",是Java中唯一被重載的操作符;在Java中,不允許程序員重載操作符
String類(lèi)對象是個(gè)常量對象。String str="abc";str="def",那么str變量的值就為def的引用了,就沒(méi)有變量再指向abc這個(gè)對象了,abc這塊就成為垃圾內存
StringBuffer
在處理大量字符串的程序中,我們通常用StringBuffer來(lái)代替String。使用StringBuffer可以在同一塊內存內修改。x = "a" + 4 + "c"等同于x = new StringBuffer().append("a").append(4).append("c").toString()
StringBuffer.toString()將StringBuffer轉變?yōu)镾tring
StringBuffer.capacity()會(huì )返回當前StringBuffer的容量
StringBuffer.delete(int start,int end)刪除StringBuffer中start(含)到end(不含)之間的子串
StringBuffer.deleteCharAt(int index)刪除一個(gè)字符
StringBuffer.reverse反序內存中的字符串序列
"=="和"equals"的用法
"=="是比較兩個(gè)變量的值是否相等
"equals"是比較兩個(gè)對象變量所代表的對象的內容是否相等
class StringTest
{
public static void main(String[] args)
{
String str1=new String("abc");
String str2=new String("abc");
if(str1==str2)//str1和str3變量的值是不等的,他們指向堆內存中不同的地方(對象)
{
System.out.println("str1==str2");
}
else
{
System.out.println("str1!=str2");
}
if(str1.equals(str2))//str1和str3所代表的對象的內容相等
{
System.out.println("str1 equals str2");
}
else
{
System.out.println("str1 not equals str2");
}
/*String str3=str1;該賦值是把str1賦值給了str3,賦的是對象的引用,所以在棧內存中,str1和str3的值是一樣,即指相對內存中同一塊地方(對象)
if(str1==str3)
{
System.out.println("str1==str3");
}*/
/*int i=3;
float f=1.5f;
char ch=‘f‘;
boolean b=false;
System.out.println(str1+i+f+ch+b);//String可以使用重載了的操作符"+"和"+="*/
/*int i=3;
float f=1.5f;
char ch=‘f‘;
boolean b=false;
StringBuffer sb=new StringBuffer();
sb.append(str1).append(i).append(f).append(ch).append(b);
System.out.println(sb.toString());
//System.out.println(sb);//也可,打印時(shí)會(huì )自動(dòng)調用toString()*/
}
}
字符串類(lèi)型String。當用"+"連接一個(gè)字符串和一個(gè)非字符串的值時(shí),非字符串變量將被自動(dòng)轉換成字符串。如String mystr="ID"+100,這句會(huì )把mystr賦值為"ID100",所以可以用語(yǔ)句System.out.println("The number is"+num)輸出我們想要的內容
求一個(gè)字符串的子串可以用String類(lèi)所提供的substring方法,substring(a,b)中的b是你不打算留下的字符串的第一個(gè)位置
length方法可以得到一個(gè)字符串的長(cháng)度
charAt(n)方法返回字符串中位于n位置的那個(gè)字符
我們可以用equals方法來(lái)檢查兩個(gè)字符串是否相等s1.equals(s2)。對于equals方法來(lái)說(shuō),s1和s2既可以是字符串變量,也可以是字符串常量。如"mystring".equals(s)。如果在檢測字符串是否相等時(shí),希望忽略字母大小寫(xiě)的區別,可以用equalsIgnoreCase方法
int compareTo(String other):按字典順序,字符串若在other之前,返回負值;之后,返回正值;相等,返回0
boolean endsWith(String suffix):若指定字符串以suffix結尾,返回ture
boolean startsWith(String prefix):若指定字符串以prefix開(kāi)始,返回ture
int indexOf(String str),int indexOf(String str,int fromIndex):返回與str相等的第一個(gè)字串的起始位置,從索引位置0或fromIndex開(kāi)始
Sring replace(char oldChar,char newChar):返回一個(gè)新串,它用newChar替換oldChar
Sring toLowerCase():將指定字符串中的字符全部轉換為小寫(xiě)
Sring toUpperCase():將指定字符串中的字符全部轉換為大寫(xiě)
String trim():去掉指定字符串中開(kāi)頭和結尾部分的空格