JAVA 基礎5-字符串
一.字符串定義
直接定義:String str1 = "abc" ;String str2 = "abc" ;,
創建一個新字符串:String str3 = new String(); String str4 = new String();
字符串類型是一種引用類型,所定義的變量是對象,寫法同面向對象。
註意:str1 == str2 返回值是true,原因為abc這個值在內存的常量池中,當再次定義時如值相同則str1和str2都指向同一個值。
str3 == str4 返回值是false,原因為使用了new,則在內存中創建了兩個空間,str3和str4分別指向不同的對象。
String str3 = new String("abc") 相當於String str3 = "abc", 但底層運行機制不同。
String str1 = null 和String str2 = "" 意思不一樣,第一個沒有任何指向,第二個指向為空。
二.字符串連接
每個字符串之間用"+"相連,與其他數據類型連接時,連接之後的返回值是字符串。
三.常用字符串操作方法
String str = "abc"; String str2 = "abc"
- str.equals(str2); // 比較兩個字符串的值是否相等;( ==在用於非基礎數據類型時是指比較兩個變量指向的地址是否相同,equals 比較兩個對象的值是否相等)
- str.length();// 獲取整個字符串的長度;
- str.trim();// 去掉字符串兩邊的空格;
- str.charAt(int i);// 獲取某個索引值上的字符;
- str.contains(CharSequence ab);// 是否包含某個字符串 ;CharSequence 字符序列
- str.startsWith(String ab); // 判斷是否以某個字符串開始;
- str.endsWith(String ab); // 判斷是否以某個字符串結尾;
- str.replace(char a, char e); // 將字符串中所有的a替換成e;
- str.replace(CharSequence ab, CharSequence aa);// 將字符串中所有的ab替換成aa;
- str.split(String s); // 分割字符串;將字符串以s進行分割,返回值是數組;
- str.toUpperCase(); // 將字符串轉換成大寫
- str.toLowerCase(); // 轉換成小寫
- str.indexOf(String ab);//取這個字符串第一次出現的索引位置
- str.lastIndexOf(String s);//取這個字符串最後一次出現的索引位置
- str.substring(int i);//取索引值為這個整數參數後面的字符串
- str.substring(int i, int j);//取i和j之間的字符串(不包括j)
- String.valueOf(any args); // 把任意參數轉換成字符串;是對類的方法,屬於靜態方法。
四.常用字符串緩沖區操作方法(主要用來構建字符串)
返回值一般為StringBuffer 可以進行類的連貫操作,但不建議。
StringBuffer buffer = new Stringbuffer("abc")
- buffer.append(String 123); // 追加一個字符串;
- buffer.insert(int 1, String 123); // 在某個索引位置插入一個字符串;輸出為a123bc
- buffer.deleteCharAt(int index);// 刪除在某個索引位置的字符;
- buffer.delete(int start, int end);//刪除兩個索引之間的字符;
- buffer.replace(int start, int end, String s);//替換兩個索引之間的字符;
- buffer.setCharAt(int index, char ch);設置某個索引位置上的字符;
- buffer.toString();把字符串緩沖轉換成字符串;在打印輸出時默認調用此方法;
- buffer.reverse() // 反轉字符串
註意:字符串與字符串緩沖區別在於字符串是常量,無法更改,當進行操作時其效率遠低於使用字符串緩沖;
五.System類
- System.currentTimeMillis() ;// 返回當前的系統時間(以時間戳的形式)
- System.exit(0);//退出當前正在運行的java虛擬機, 0表示正常退出,其他都是不正常退出,一般用-1,表示整個都不運行了。
- System.gc();//手動啟動垃圾回收機制;JAVA裏自動啟動垃圾回收機制,超出變量作用域的對象, 會及時的被垃圾回收機制回收。不推薦手動調用此方法(降低程序運行效率),此方法會自動調用finalize方法。
- System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length);//數組的復制;分別指復制來源名,來源開始復制索引位置,復制目標名,目標開始復制索引位置,復制長度。
六.數字包裝類
自動裝箱:
基礎數據類型不能等於null,將其進行包裝便可以,每一個基礎數據類型都有自己的包裝類。
int 對應Integar;char 對應character;其他都是首字母大寫例: long對應Long;包裝後是一種對象,可以等於null。
Integar i = 2;此段代碼讓程序完成了對變量i的自動裝箱;
自動拆箱:
- Integar.parseInt("123");//將字符串123轉換成數字123;如果字符串中有非數字字符則會報錯;
- Integer.parseInt(String s, int radix); // 將其他進制的字符串轉換成int;逗號後面寫被轉換的進制,如寫16則是將16進制的字符串轉化為10進制;radix:基數;
- Integer.toBinaryString(int i); // 將一個int值轉換成二進制的字符串
- Integer.toOctalString(int i); // 將一個int轉換成八進制的字符串
- Integer.toHexString(int i); // 將一個int轉換成16進制的字符串
JAVA 基礎5-字符串