Java字符串的使用

Java字符串的使用

字符串是不可改变的。

1.字符串的常量池

字符串常量池:当程序中直接协商双引号字符串,该字符串就在常量池中。
例如:String str1 = "abc";

2.字符串的比较

在这里插入图片描述
判断str1==str2是true,其余的是false,为什么会出现这种情况呢?
答案就是因为地址值不同,因为String类型是引用数据类型,所以他们比较的是地址值,同理基本数据类型比较的就是它们的值。
在这里插入图片描述
在这里,str1和str2创建在栈当中,通过直接使用双引号的方法进入字符串常量池(JDK1.7以上版本)当中,并在里面创建了一个字符串对象,由于String类型底层其实是byte[]数组构成的,所以它们指向了一个byte[]数组,它们的内容相同,所以byte[]数组重复利用,根据这个字符串对象的地址值,传给了str1和str2。所以str1和str2的地址值相同。
而str3不同,程序首先创建了一个char[]数组,并在堆中创建了实例,而char[]数组其实会被转化成byte[]数组。然后str3创建了一个字符串对象,这个字符串对象是不在常量池中的,他指向的是上面的byte[]数组。所以这里的字符串对象不同,即使内容是相同的,但由于地址不同所以对象不同,比较时也就变成了false。

字符串的比较方法

public boolean equal(Object obj)方法可以比较字符串的内容,而"=="则比较的是地址值。

字符串获取的相关方法

public int length()  //获取字符串当中含有的字符个数,拿到字符串的长度
public String concat(String string)//将当前字符串和参数字符串拼接起来,形成一个新的字符串。
public char charAt(int index)//获取指定索引位置的单个字符。(索引跟数组一样,从0开始)
public int indexOf(String str)//查找参数字符在本字符串中首次出现的索引位置,如果没有返回-1

字符串的截取方法

public String subString(int index) //截取从参数位置一直到字符串末尾,并返回新的字符串
public String subString(int begin,int end)//截取从begin开始,到end结束中间的字符串。
//注意事项:[begin,end),包含左边,不包含右边。

字符串的转换方法

public char[] toCharArray();//将当前字符串拆分成为字符数组作为返回值。
public byte[] getBytes();//获得当前字符串的底层字节数组,常用于File类
public String replace(CharSequence oldString,CharSequence newString);
//将所有出现的老字符串替换成新字符串,返回替换之后的字符串
//常用于敏感词屏蔽

字符串的分割方法(split方法)

public String[] split (String regex);

注意事项:split 方法的参数其实是一个“正则表达式”,今后学习。
如果按照英文句点"."进行分割,必须在.之前写上//(两个反斜杠)
在这里插入图片描述

为什么字符串是不可改变的

String str1="hello";
System.out.println(str1);//"hello"
String str1="Java";
System.out.println(str1);//"Java"

当前案例可以看出,str1发生了改变。但是请记住,String类型是引用数据类型,它指向的是一个地址值,并不是说它的内容发生了改变,而是它的地址值发生的改变,而字符串仍在堆中,字符串是没有发生改变的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值