java基础(十一)String类

要点:String对象是不可改变的。字符串一旦创建,内容不能再改变

String类中有13个构造方法以及四十多个处理字符串的方法。不仅在程序设计中很有用而且也是一个学习类和对象的一个很好的例子。

1.1 构造字符串

常用的构造方法:

(1)char[] charArray = {'G','O','O','D'};

         String meaasge = new Stringa(charArray );

(2)String message = new String("Welcome to Java");

(3)String message = "Welcome to Java";

String变量存储的是对String对象的引用,String对象里才存储的是字符串的值。

1.2 不可变字符串与驻留字符串

String对象是不可变的,它的内容是不能改变的,那么以下是改变了它的内容吗?

String s = "Java";    s="HTML"

答案是不能,因为String变量是引用变量,第二条语句创建了一个内容为“HTML”的新String对象,并将其引用赋值给s,赋值后第一个String对象依然存在,但是不能再访问它了。因为变量s现在指向了新的对象。

 

因为字符串在程序设计中是不可变的,但同时又会频繁地使用,所以Java虚拟机为了提高效率并节约内存,对具有相同字符序列的字符串字面值使用同一个实例。这样的实例称为驻留的(interned)字符串。

String s1 = "Welcome to Java";

String s2= new String("Welcome to Java");

String s3 = "Welcome to Java";

System.out.println("s1==s2 is "+(s1==s2));//false(内容相同却是不同的字符串对象)

System.out.println("s1==s3 is "+(s1==s3));//true(指向相同的驻留字符串)

 

比较两个字符串内容相不相同,需要的方法是s1.equals(s2) 而不是==,==比较的是两个引用值是否相同。

1.3 替换和拆分字符串

1.3.1 替换字符串

		System.out.println("Welcome".replace('e', 'A'));//所有匹配的字符串换成新的字符
		System.out.println("Welcome".replaceFirst("e", "A"));//第一个匹配的字符串换成新的字符串
		System.out.println("Welcome".replaceAll("e", "AB"));//所有匹配的字符串换成新字符串
		System.out.println("Welcome".replace("el", "AB"));//所有匹配的字符串换成新字符串

运行结果:

 

1.3.2 拆分字符串

		String[] tokens = "Java#HTML#Perl".split("#");
		for(int i=0;i<tokens.length;i++) {
			System.out.print(tokens[i] + " ");
		}

运行结果:

 

1.4 正则表达式(初级)

用代码来验证用户输入,简单有效完成该任务的方法是使用正则表达式。

正则表达式是一个字符串,匹配一个字符串集的模式

		System.out.println("Java".matches("Java"));
		System.out.println("Java".equals("Java"));
		System.out.println("Java is fun".matches("Java.*"));//Java.*是正则表达式,描述的字符串模式是以字符串Java开始的.*表示与0个或多个字符相匹配
		System.out.println("Java is cool".matches("Java.*"));
		System.out.println("440-02-4534".matches("\\d{3}-\\d{2}-\\d{4}"));//\\d{3}表示三个数字
		System.out.println("a+b$#c".replaceAll("[$+#]","NNN"));

运行结果:

1.5 字符串语数组之间的转换

将String Java转换成 字符数组‘J’‘a’‘v’‘a’

char[] chars = "Java".toCharArray();

将字符数组转换成一个字符串

String str = new String(new char[]{'J','a','v','a'});

1.6 StringBuilder和StringBuffer类

StringBuilder和StringBuffer类类似于String类,区别在于String类是不可改变的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值