1. 程式人生 > >JAVA 基礎5-字符串

JAVA 基礎5-字符串

面向 GC 參數 eve art array 字符 lse 原因

一.字符串定義

直接定義: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-字符串