java中的字符串

1. 字符串: 定义一个描述字符串的类 String

字符串可以看作是一个字符序列:把多个字符按照一定顺序排列起来,多个字符组合在一起 通过查看String的API发现 String实现了一个接口 CharSequence 字符序列接口 这个字符序列如何存储到内存中 --> 其实字符串就是一个字符数组

String str = "ABC"; ---> char[] cs =new char[]{'A,'B','C'} -->字符串支持下标操作 --> charAt
str.chatAt(1) --> 'B  

2. 特点:字符串是不能改变的,它们的值在创建后不能被改变

3.内存:字符串存储在方法区的常量池中;定义字符串,使用时先在常量池中查找,若找不到则创建一个字符串;若找到直接使用已有的

public static void main(String[] args){
    String str="10000";
    String str2="20000";  //字符串常量  在常量池
    //两个对象,一个是用new创建的对象,一个字符串对象
    String str3=new String("1000"); 
    sop(str==str2); //true
    sop(str2==str3): //false
    str2.equals(str3); //Object的equals方法比较两个对象是否为同一个
    boolean boo=str2.equals(str3); 
    sop(boo);  //true  说明String类重写了equals方法,比较两个对象的值是否一致
}

4. 分类:值可变与不可变

不可变字符串:String对String进行任何赋值操作,都不会修改原有的值,而是重新创建,这种方式就是不可变

      不可变原因:String之所以不可变,是因为String每次获取字符串的时候,它都是相当于正在字符串池中创建一个新的字符串,而不是对原有字符串进行修改,字符串每次创建的时候都会出现一个新的地址,所以Java推出了一个机制,即字符串池机制(可以减少字符串的创建)当字符串池中已经存在了相同字符串时,此时就不会再新建字符串,而是获取原有已经存在在字符池中的地址,这样一来可以减少字符串的创建,所以String是一个少有的可以使用 == 来比较内容是否相等的引用类型,但是这里存在一个特殊问题:就是这个字符串必须是完全相同的 == 才可以为true,所以要是比较字符串是否相等还是需要使用equals方法

可变字符串:StringBuffer/StringBuilder创建完对象之后,所有的操作都会对字符串本身起到改变的作用(字符串构建器)

StringBuffer实现字符串的增删改查:


public class SBTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		String str=new String("world");
		StringBuffer sb=new StringBuffer("hello");// 增删改查
		//添加字符串
		StringBuffer sb1=sb.append(false);
		
		// 加入到StringBuffer中都被转成字符串      加入对象的是字符串表示
		sb.append(66).append(true).append(new Object()); //连续添加
		
		//得到StringBuffer中的字符串
		sop(sb.toString());  //StringBuffer将Object类的toString()方法重写,返回字符串
		sop(sb);// 输出一个对象时默认调用toString()方法
		System.out.println(str);
		sop(sb==sb1);
		
		sb.insert(5,"world ");  //插入字符串world
		sop(sb);
		sb.delete(5,10); //删除world,不包括结束位置
		sop(sb);
	}

	public static void sop(Object obj){
		System.out.println(obj);
	}
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值