String和String Builder

本文详细比较了Java中String和StringBuilder类的特性,包括String的不可变性、创建方式、常见方法,以及StringBuilder的可变性、构造方法和使用场景,如字符串修改和反转操作的应用。
摘要由CSDN通过智能技术生成

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();
//转换为string
			int m=Integer.valueOf(str2);
//强转为Int
			System.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();
			//转换为string
						int m=Integer.valueOf(str4);
			//强转为Int					
						
						
						m=-m;
				
						System.out.println(m);
						
						
 			
		}
		
		
	}

}

  • 23
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
StringStringBuffer和StringBuilderJava中用于处理字符串的类,它们之间的主要区别如下: 1. 不可变性: - StringString对象是不可变的,一旦创建就不能被修改。每次对String进行操作(如拼接、替换等),都会创建一个新的String对象,原始的String对象不会改变。 - StringBuffer:StringBuffer是可变的,它的值可以被修改。对于频繁的字符串拼接操作,推荐使用StringBuffer,因为它不会创建新的对象,而是在原有的对象上进行修改。 - StringBuilderStringBuilder也是可变的,与StringBuffer类似,它的值可以被修改。StringBuilderStringBuffer的主要区别在于StringBuilder是非线程安全的,但在单线程环境下性能更好。 2. 线程安全性: - StringString是不可变的,因此是线程安全的。 - StringBuffer:StringBuffer是线程安全的,它的方法都使用了synchronized关键字进行同步,保证了多线程环境下的安全性。 - StringBuilderStringBuilder是非线程安全的,它的方法没有进行同步处理,因此在多线程环境下使用时需要额外考虑线程安全问题。 3. 性能: - String:由于String是不可变的,每次对String进行操作都会创建一个新的对象,这可能会导致内存消耗和性能问题。 - StringBuffer:由于StringBuffer的方法都进行了同步处理,因此在多线程环境下性能相对较低。 - StringBuilderStringBuilder没有进行同步处理,因此在单线程环境下性能更好。如果不需要考虑线程安全性,推荐使用StringBuilder。 总结: - 如果需要频繁进行字符串拼接或修改,并且在多线程环境下使用,应该使用StringBuffer。 - 如果在单线程环境下进行字符串操作且不需要考虑线程安全性,推荐使用StringBuilder。 - 如果不需要修改字符串,或者需要保证字符串的不可变性,应该使用String

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值