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);}}}