【Java→不可变字符串String】懒惰的小黑笔记09(小白一名,请大家多指点)

声明: 此笔记通过观看【尚学堂】+(赖小平主编)清华大学出版社的《Java程序设计》感悟整理得出, 若有任何相关问题,请注明来源联系作者!

字符串

6.6不可变字符串

字符串是字符的序列,使用最多的就是String类,它是不变的字符串,也称字符串常量。此外,还有可变字符串类StringBuffer和StringBuilder。上述3个类都实现了字符序列接口CharSequence。

Java字符串就是Unicode字符序列,例如“java”就是4个Unicode字符组成的。

6.6.1 String类

String位于java.lang包中,java默认导入java.lang中的所有类。

  • 1、初始化
		//简化格式
		String s = "java";
		
		//按照面向对象的标准语法,其格式为:
		String str = new String("java");

注意:如果按照第二种写法,在内存使用上存在较大的浪费。其实第二种写法,实际上创建了两个String对象:一个是java对象,存储在常量空间中,一个使用new关键字为对象str申请的空间。

【图解】
string初始化内存分析

  • 2、字符串的连接
		String s5 = "java" + "语言";
		String s6 = "20" + 30;
				
		int a =10;
		String b = "1234" + a + 5;
		
		System.out.println(s6);	//输出2030
		System.out.println(b);	//输出1234105

注意:
运算符“+”,不仅可以连接字符串,还可以连接其他数据类型的数据。“+”匹配的顺序是从左到右,如果两边连接的内容都是基本数据类型,则按照加法运算;如果参与连接的内容有一个为字符串,才按照字符串进行连接。

  • 3、 字符串的比较(“==”与“equals”)

==:比较的是两个对象的内存中存储的地址是否相同!
equals:判断连个字符串对象的内容是否相同,相同返回true,否则返回false。

【实例 测试字符串的比较】

		String s4 = "Java";
		String s7 = "java";
		String s8 = new String("java");
		System.out.println(s4==s7);	//输出为false
		System.out.println(s7==s8);	//输出为false
		System.out.println(s7.equals(s8));	//输出为true

说明:第二个为false的原因:s7地址指向存储在“常量池”中的字符串“java”,但s8是指向new新建的对象里的字符串“java”。

注:“常量池”往后会学习讲解!

6.6.2 String类的常用方法

String

【实例 测试String类常用方法】

package study01;
/**
 * 测试String类常用方法
 * @懒惰的小黑
 *
 */
public class StringTest {
	public static void main(String[] args) {
		String s = "javaee";
	
		String s1 = "语言";
		
		System.out.println(s.charAt(2));		//提取字符
		System.out.println(s.concat(s1));		//s、s1字符串不变,而是生成了一个新的字符串“java语言”
		System.out.println(s.endsWith("a"));	//输出为true
		System.out.println(s.indexOf("j"));		//返回0
		System.out.println(s.indexOf("s"));		//返回-1
		System.out.println(s.length());	  		//结果为6
		
		String s4 = s.replace('e' ,'s');
		String s5 = s.replace('a' ,'s');
		System.out.println(s4); 				//结果为javass
		System.out.println(s5); 				//结果为jsjsee
		
		System.out.println(s.substring(3));		//提取索引3以后的所有字符作为子串
		System.out.println(s.toCharArray());	//数组:javaee
	
		System.out.println(String.valueOf(10));	//结果为10,但对程序来说,数据的类型发生了变化
		
		//判断下面自然数有几位数
		int s2 = 1231596151;
		String s3 = String.valueOf(s2); 		//将int型转为String型
		int len = s3.length();					
		System.out.println(len);
	}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值