String類中的其他功能:
替換功能:
* public String replace(char oldChar,char newChar):將字符串中某一個字符用新的字符替換
* public String replace(String oldStr,String newStr):將字符串中某一個子字符串用新 的字符 串去替代
* public String trim():去除字符串兩端空格:
* public int compareTo(String anotherString) 是Comparable接口中的方法(該接口可以實現一 個自然排序)
* Comparator接口可以比較器排序
package string; public class StringDemo1 { public static void main(String[] args){ //定義字符串 String str="helloword"; System.out.println(str); //將原字符串中的字符“l”用“k”替換, String str1=str.replace("l", "k"); System.out.println(str1); //將原字符串中的字符串“hello”用“hi——”替換 String str2=str.replace("hello", "hi——"); System.out.println(str2); System.out.println("----------------"); String str3=" helloword "; System.out.println(str3); //返回字符串的副本,忽略前導空白和尾部空白 String str4=str3.trim(); System.out.println(str4); System.out.println("----------------"); String str5 ="helloword" ; String str6="abc"; System.out.println("compareTo():"+str5.compareTo(str)); System.out.println("compareTo():"+str6.compareTo(str)); } }
* int indexOf(String str):返回指定字符串在此字符串中的一次出現的索引
* int indexOf(Stirng str,int fromIndex):返回次字符串中第一次出現指定字符串出的索引,從 指定索引開始
* String substring(int start):從指定位置開始截字符串,默認到最末尾
* String substring(int start,int end):從指定位置開始截取到指定位置結束
package string; import java.util.Scanner; public class StringDemo5 { public static void main(String[] args){ String str="java"; Scanner sc=new Scanner(System.in); System.out.println("請你輸入一個字符串:"); String str1=sc.nextLine(); System.out.println("你輸入的字符串是:"+str1); System.out.println("----------------"); //從頭開始返回java第一次出現的首地址 System.out.println("str1.indexOf(str):"+str1.indexOf(str));//ugfuyjavaojgojjavagfdug //從指定索引開始 System.out.println("str1.indexOf(str,7 ):"+str1.indexOf(str,7 )); System.out.println("-------------------"); //從指定位置截取字符串,默認到末尾結束 System.out.println("str1.substring(3):"+str1.substring(3)); //從指定位置截取字符串,到指定位置結束 System.out.println("str1.substring(3,7):"+str1.substring(3,7)); } }
* StringBuffer類
線程安全的可變字符序列,類似於String的字符串緩衝區
*開發中線程不安全的話,可能會出現死鎖的現象!線程安全和執行效率是相對的
* 面試題
*StringBuffer與String的區別?
*StringBuffer會構造一個字符串緩衝區,從內存角度考慮使用StringBuffer比較多
String是一個普通的字符串類,從內存角度耗費空間!
在單線程程序中使用StringBulider(線程不安全)代替StringBuffer
*StringBuffer中的常用方法
* 構造方法:
*public StringBuffer(){ }
構造一個不帶字符的字符串緩衝區,該字符串緩衝區的初始容量爲16個字符
*public StringBuffer(int capacity)
構造一個不帶字符,但具有指定初始容量的字符串緩衝區
*public StringBuffer(String str)
構造一個字符串緩衝區,並將其內容初始化爲指定的字符串內容。該字符串的初 始容量爲 16 加上字符串參數的長度。
* public int length();獲取字符串長度
* public int capacity():獲取當前字符串緩衝區的容量
*StringBuffer的添加方法:
* public StringBuffer append( );向緩衝區追加數據,返回字符串緩衝區本身
* public StringBUffer insert(int offset,String str):在指定位置添加一個 字符串,返回字符串緩衝區本身
*StringBuffer的刪除方法:
* public StringBuffer deleteCharAt(int start):刪除指定位置的字符,返回 字符串緩衝區本身
* public StringBuffer deleteCharAt(int start,int end):刪除從指定位置開 始到指定位置結束的字符返回 字符串緩衝區本身
package stringbuffer; public class StringBufferDemo { public static void main(String[] args ){ //StringBuffer不可以像String一樣直接賦值,可以創建對象利用構造方法賦值 //也可以通過無參構造,調用append();方法進行添加 StringBuffer sb=new StringBuffer(); sb.append("hello"); sb.append("world"); sb.append("-----javase"); System.out.println("添加初始的字符串:"+sb); sb.insert(5, "-----"); System.out.println("用insert()添加:"+sb); System.out.println("----------------"); sb.deleteCharAt(3); System.out.println("刪除一個字符後的字符串:"+sb); System.out.println("----------------"); //當前索引所對應的字符一發生了改變 sb.delete(1, 3); System.out.println("刪除一個小字符串後:"+sb); System.out.println("----------------"); } }
*StringBuffer和String之間的轉換
*StringBuffer的反轉功能:
public StringBuffer reserve();將字符串順序直接翻轉
package stringbuffer; public class StringBufferDemo1 { public static void main(String[] args) { String str="hello"; //String----->StringBuffer的轉換 System.out.println("String----->StringBuffer的轉換"); //創建StringBuffer的對象指向這個字符串 StringBuffer sb=new StringBuffer(str); System.out.println("創建StringBuffer的對象指向這個字符串:"+sb); //使用無參構造,調用append()方法 StringBuffer sb1=new StringBuffer(); sb1.append(str); System.out.println("使用無參構造,調用append()方法:"+sb1); System.out.println("----------------"); //StringBuffer----->String的轉換 System.out.println("StringBuffer----->String的轉換"); //創建緩衝區對象 StringBuffer sb2=new StringBuffer("world"); //String有一種構造方法String(StringBuffer str) String sb3=new String(sb2); System.out.println("構造方法String(StringBuffer str):"+sb3); //toString()方法 String sb4=sb2.toString(); System.out.println("toString()方法:"+sb4); System.out.println("----------------"); //使用StringBuffer的翻轉功能將字符串反轉“reverse()” System.out.println("String類型“hello”使用reverse()翻轉後:"+sb2.reverse().toString()); } }
*StringBufferd的替換功能:
*public StringBuffer replace(int start,int end,String str):從指定位置開始到指定位 置用str替換
*StringBuffer的截取功能:
*public StringBuffer substring(int start):從指定位置開始到末尾結束,返回一個新的字 符串
*public StringBuffer substring(int start,int end):從指定位置開始到指定位置結束,返 回一個新的字符串
package stringbuffer; public class StringBufferDemo2 { public static void main(String[] args){ StringBuffer sb=new StringBuffer(); sb.append("helloworld"); System.out.println("初始字符串:"+sb); System.out.println("替換後:"+sb.replace(0, 5, "hi-")); System.out.println("------------------"); //StringBuffer的截取功能 //從指定位置開始截取,默認到結尾結束 System.out.println("從的指定位置往後截取:"+sb.substring(5)); System.out.println("從指定位置開始到指定位置結束:"+sb.substring(3, 6)); } }
問題:
*String、StringBuffer、StringBuleder的區別
String: 一個不可變的字符序列
StringBuffer和StringBuleder是可變字符序列,在單線程時優先採用StirngBuleder
*從線程角度考慮:StringBuleder線程不安全,不同步,執行效率高,比StringBuffer快
*String和StringBuffer作爲形式參數和基本類型是一樣的
*Integer類
jdk5.0之後的新特性:自動拆裝箱,可變參數……
每個基本數據類型都會被封裝成一個引用類型
基本類型 引用類型
int Integer
char Character
byte Byte
long Long
double Double
short Short
float Float
boolean Blooean
Integer類的構造方式:
public Integer(int value):將一個int類型的數據封裝成一個引用類型
public Integer(String s):將一個字符數類型封裝成一個Integer類型
該字符串必須是數字字符串否則運行出錯:java.lang.NumberFormatException
package integer; public class IntegerDemo { public static void main(String[] args) { //public static String toBinaryString(int i) //以二進制無符號數形式返回一個整數參數的字符串表示形式 System.out.println(Integer.toBinaryString(100)) ; //public static String toOctalString(int i) //以八進制無符號數形式返回一個整數參數的字符串表示形式 System.out.println(Integer.toOctalString(100)); //public static String toHexString(int i) //以十六進制無符號數形式返回一個整數參數的字符串表示形式 System.out.println(Integer.toHexString(100)); //public static final int MAX_VALUE //int類型能夠表示的最大值 //public static final int MIN_VALUE //int類型所能表示的最小值 System.out.println(Integer.MAX_VALUE);//2147483647 System.out.println(Integer.MIN_VALUE);//-2147483647 } }
*int類型和String類型的轉換
*public int intValue();//以int類型返回該Integer的值
*public static int parseInt(String str);//將字符串參數作爲有符號數的十進制整數進行 解析
*Character類
*在對象中包裝一個基本類型char的值,Character類型的對象包含類型爲char的字段
*構造方法:
public Character(char value)://構造一個新分配的Character對象,來表示制定的 char的值
*Character的判斷功能和轉換功能
public static boolean isLowerCase(char ch)確定指定字符是否爲小寫字母。
*public static boolenn isUpperCase(char ch)確定指定字符是否爲大寫字母
*public static boolean isDigit(char ch)確定指定字符是否爲數字。
*public static char toUpperCase(char ch):將指定字符轉換成大寫
*public static char toLowerCase(char ch):將指定字符轉換成小寫
package character; public class CharacterDemo { public static void main(String[] args) { //public static boolean isLowerCase(char ch)確定指定字符是否爲小寫字母 System.out.println("isLowerCase:"+Character.isLowerCase('a')); System.out.println("isLowerCase:"+Character.isLowerCase('A')); System.out.println("isLowerCase:"+Character.isLowerCase('0')); System.out.println("---------------------------------------"); //public static boolenn isUpperCase(char ch)確定指定字符是否爲大寫字母 System.out.println("isUpperCase:"+Character.isUpperCase('a')); System.out.println("isUpperCase:"+Character.isUpperCase('A')); System.out.println("isUpperCase:"+Character.isUpperCase('0')); System.out.println("---------------------------------------"); //public static boolean isDigit(char ch)確定指定字符是否爲數字。 System.out.println("isDigit:"+Character.isDigit('a')); System.out.println("isDigit:"+Character.isDigit('A')); System.out.println("isDigit:"+Character.isDigit('0')); } }