Java中的字符串

一、String

1、概述
  1. String类:代表字符串。Java程序中的所有字符串字面值都作为此类的实例实现。
  2. String是一个final类,表示不可被继承,以及代表不可变的字符序列。
  3. String实现了Serializable接口和Comparable接口:表示字符串是支持序列化和比较大小的。
  4. 字符串是常量,用引号引起来表示。它们的值在创建之后不能更改。
  5. String对象的字符内容是存储在一个字符数组value[]中的。(JDK9及之后为byte[])
  6. 字符串常量池中不会存储相同内容的字符串
2、内存解析

在这里插入图片描述内存解析

3、字符串拼接方式赋值对比
  • 常量与常量的拼接结果在常量池。且常量池中不会存在相同内容的常量。
  • 只要其中一个是变量,结果就在堆中。
  • 如果拼接的结果调用intern()方法,返回值就在常量池中
	String s1 = "javaEE";
	String s2 = "hadoop";
	final String s8 = "javaEE";//s4:常量
	
	String s3 = "javaEEhadoop";
	String s4 = "javaEE" + "hadoop";
	String s5 = s1 + "hadoop";
	String s6 = "javaEE" + s2;
	String s7 = s1 + s2;
	String s9 = s8 + "hadoop";
	
	System.out.println(s3 == s4);//true
	System.out.println(s3 == s5);//false
	System.out.println(s3 == s6);//false
	System.out.println(s3 == s7);//false
	System.out.println(s3 == s9);//true
	System.out.println(s5 == s6);//false
	System.out.println(s5 == s7);//false
	System.out.println(s6 == s7);//false
	
	String s8 = s6.intern();//返回值得到的s8使用的常量值中已经存在的“javaEEhadoop”
	System.out.println(s3 == s8);//true
4、常用方法
4.1、操作字符:
  1. int length():返回字符串的长度: return value.length
  2. char charAt(int index): 返回某索引处的字符return value[index]
  3. boolean isEmpty():判断是否是空字符串:return value.length == 0
  4. String toLowerCase():使用默认语言环境,将 String 中的所字符转换为小写
  5. String toUpperCase():使用默认语言环境,将 String 中的所字符转换为大写
  6. String trim():返回字符串的副本,忽略前导空白和尾部空白
  7. boolean equals(Object obj):比较字符串的内容是否相同
  8. boolean equalsIgnoreCase(String anotherString):与equals方法类似,忽略大小写
  9. String concat(String str):将指定字符串连接到此字符串的结尾。 等价于用“+”
  10. int compareTo(String anotherString):比较两个字符串的大小
  11. String substring(int beginIndex):返回一个新的字符串,它是此字符串的从beginIndex开始截取到最后的一个子字符串。
  12. String substring(int beginIndex, int endIndex) :返回一个新字符串,它是此字符串从beginIndex开始截取到endIndex(不包含)的一个子字符串。
4.2、判断字符
  1. boolean endsWith(String suffix):测试此字符串是否以指定的后缀结束
  2. boolean startsWith(String prefix):测试此字符串是否以指定的前缀开始
  3. boolean startsWith(String prefix, int toffset):测试此字符串从指定索引开始的子字符串是否以指定前缀开始
4.3、查找字符
  1. boolean contains(CharSequence s):当且仅当此字符串包含指定的 char 值序列时,返回 true
  2. int indexOf(String str):返回指定子字符串在此字符串中第一次出现处的索引
  3. int indexOf(String str, int fromIndex):返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始
  4. int lastIndexOf(String str):返回指定子字符串在此字符串中最右边出现处的索引
  5. int lastIndexOf(String str, int fromIndex):返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索
4.4、字符串操作
替换
1.String replace(char oldChar, char newChar):返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所 oldChar 得到的。
2.String replace(CharSequence target, CharSequence replacement):使用指定的字面值替换序列替换此字符串所匹配字面值目标序列的子字符串。
3.String replaceAll(String regex, String replacement):使用给定的 replacement 替换此字符串所匹配给定的正则表达式的子字符串。
4.String replaceFirst(String regex, String replacement):使用给定的 replacement 替换此字符串匹配给定的正则表达式的第一个子字符串。
匹配
1.boolean matches(String regex):告知此字符串是否匹配给定的正则表达式。
切片
1.String[] split(String regex):根据给定正则表达式的匹配拆分此字符串。
2.String[] split(String regex, int limit):根据匹配给定的正则表达式来拆分此字符串,最多不超过limit个,如果超过了,剩下的全部都放到最后一个元素中。
5、String与其他类型之间的转换
5.1、与基本数据之间的转换
  • String --> 基本数据类型、包装类:调用包装类的静态方法:parseXxx(str)
  • 基本数据类型、包装类 --> String:调用String重载的valueOf(xxx)
	String str1 = "123";
    int i = Integer.parseInt(str1);
    int j = 456;
    String s = String.valueOf(j);
5.2、与字符数组之间的转换
	//字符串转换为char[]
	String s1 = "helloword";
    char[] chars = s1.toCharArray();
    for (int i = 0; i < chars.length; i++) {
   
        System.out.println(chars[i]);
    }
	//char[]转换为字符串
    char[] charArray = new char[]{
   'h', 'e', 'l', 'l', 'o'};
    String s2 = new String(charArray);
    System.out.println(s2);
5.3、与字节数组之间的转换

                
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java字符串比较可以使用以下几种方式: 1. 使用equals()方法:equals()方法是String类的一个方法,用于比较两个字符串的内容是否相等。它会比较字符串的每个字符是否相同,并且区分大小写。示例代码如下: ```java String str1 = "Hello"; String str2 = "World"; boolean isEqual = str1.equals(str2); System.out.println(isEqual); // 输出false ``` 2. 使用equalsIgnoreCase()方法:equalsIgnoreCase()方法也是String类的一个方法,用于比较两个字符串的内容是否相等,但不区分大小写。示例代码如下: ```java String str1 = "Hello"; String str2 = "hello"; boolean isEqual = str1.equalsIgnoreCase(str2); System.out.println(isEqual); // 输出true ``` 3. 使用compareTo()方法:compareTo()方法用于比较两个字符串的大小关系。它会按照字典顺序比较字符串的每个字符,如果两个字符串相等,则返回0;如果第一个字符串大于第二个字符串,则返回一个正数;如果第一个字符串小于第二个字符串,则返回一个负数。示例代码如下: ```java String str1 = "apple"; String str2 = "banana"; int result = str1.compareTo(str2); System.out.println(result); // 输出-1 ``` 4. 使用compareToIgnoreCase()方法:compareToIgnoreCase()方法也是用于比较两个字符串的大小关系,但不区分大小写。示例代码如下: ```java String str1 = "apple"; String str2 = "Banana"; int result = str1.compareToIgnoreCase(str2); System.out.println(result); // 输出1 ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值