String和StringBuilder的區別
String類
String類代表字符串。java程序中所有字符串文字(例如“abc”)都被實現為此類的實例。
String類源碼是用final修飾的,它們的值在創建后不能被更改。字符串緩沖區支持可變字符串。
String對象是不可變的,他們可以被共享的。例如:Stringstr="abc"
特點
創建后不能更改
new方式創建的對象地址不同
雙引號內容相同,地址相同
StringBuilder類
一個可變的字符串類,我們可以把它看作一個容器,這里的可變直的是StringBuilder對象中的內容是可變的。
String和StringBuilder有哪些區別?
String的值是不可變的,StringBuilder的值是可變的。Sting每賦予一個值,都會產生一個新的地址,而StringBuilder是在原有地址上一直更改的,節省了大量的空間,這也代表了它運行的熟讀更快。
String:適用于少量的字符串操作的情況。
StringBuilder:適用于需要對字符串進行修改的情況。
String常見用法
常見的兩種構造方法
1:無參數構造
String str=new String();//創建一個null字符串對象
2:參數為字符串的構造方法
String str=new String("code");//創建一個為code的字符串對象
常見的多種String類方法
1:char charAt(int index)//返回指定索引的字符
package Peculiar;public class Take {public static void main(String args[]) {String str1=new String();String str2=new String("toword");System.out.println(str1);System.out.println(str2);char c=str2.charAt(1);System.out.println("str2下標索引為1的是:"+c);}}
2:int compareTo(Object o)//把這個字符串和另一個對象比較。大于返回1,等于返回0,小于返回-1.
public class Main{public static void main(String args[]){String str="code";int b=str.compareTo("codf");System.out.println(b);// e<f輸出-1 對比小于時輸出-1} }
當str="codf"時輸出0? 當str="codg"時輸出1
3:String concat(String str)//將指定字符串連接到此字符串的結尾
package Peculiar;public class Take {public static void main(String args[]) {String str="code";String str1="sadf"; System.out.println(str.concat(str1));}}
4:boolean equals(String string1)//將此字符串與指定字符串比較。
String str="code";
boolean t=str.equals("codf");
System.out.println(t);
5:int? indexOf(String str)//返回指定字符串在此字符串中第一次出現處的索引。沒出現返回-1
String str="code";
int t=str.indexOf("cof");
System.out.println(t);
6:int length()//返回此字符串的長度
String str="code";
int t=str.indexOf("cof");
System.out.println(str.length);
7:String substring(int beginIndex,int endIndex)//返回一個個新字符串,它時此字符串的一個子字符串()
左閉右開
String str="code";
String t=str.substring(0, 3);
System.out.println(t);
//結果為cod
8: char? toCharArray()//轉換為新的字符串
9:boolean isEmpty()//判斷是否為空
String str="code";
boolean fg=str.isEmpty();
System.out.println(fg);
//答案false
StringBuilder常用方法
常用構造方法
? ? ? ? 無參數構造
? ? ? ? ? ? ? ? StringBuilder str=new StringBuilder();
常用方法
1:void append(Obhect obj)//追加object 參數的字符串表示形式
package Peculiar;public class Art {public static void main(String argsp[]) {StringBuilder str=new StringBuilder();str.append("sdsfd");str.append("sbic");System.out.println(str);} }
2:int indexOf(String str)//返回指定子字符串第一次出現的字符串索引。
3:StringBuilder reverse()//返回一個StringBuilder的對象,為該對象的反轉
package Peculiar;public class Art {public static void main(String argsp[]) {StringBuilder str=new StringBuilder();str.append("sdsfd");str.append("sbic");System.out.println(str);StringBuilder str1=str.reverse();System.out.println(str1);} }
4:boolean isEmpty()//判斷一個字符串是否為空
5:int charAt(int index)//返回指定索引的字符
例題實戰
題目:給定一個整數,請將概述各個位上數字反轉得到一個新數。新數也應滿足整數的常見形式,即除非給定的元素位零,否則反轉后的新數的最高位的數字不應該為零。
實例1:
輸入123
輸出321
實例2:
輸入-380
輸出-83
import java.util.Scanner;public class Capture {public static void main(String args[]) {Scanner scanner=new Scanner(System.in);int a=scanner.nextInt();if(a>0) {StringBuilder str=new StringBuilder(); //創建一個StringBuilder對象str.append(a); //將數加到str里StringBuilder str1=str.reverse(); //調用reverse方法反轉字符串String str2=str1.toString(); //轉換為stringint m=Integer.valueOf(str2); //強轉為IntSystem.out.println(m);}else {String str=a+"";String str1=str.substring(1,str.length());StringBuilder str2=new StringBuilder();//創建一個StringBuilder對象str2.append(str1);//將數加到str里StringBuilder str3=str2.reverse();//調用reverse方法反轉字符串String str4=str3.toString();//轉換為stringint m=Integer.valueOf(str4);//強轉為Int m=-m;System.out.println(m);}}}