JavaSE——字符串常用类

本文详细介绍了Java SE中的String类,包括其特性(不可变、序列化和比较),对象创建方式(字面量与new)、内存管理(常量池与对象分配),以及常用方法如长度、字符访问、比较、连接等。还涵盖了面试中常见的关于String对象创建和内存分配的问题。

1、String类

  1. String是一个final类
  2. char[]数组
  3. 实现了Serializeable接口,是可序列化的
  4. 实现了comparable接口,可比较大小
  5. 是不可变的字符序列,简称不可变性

1、字符串重新赋值时,需要重写指定的内存区域赋值,不能使用原有的value数组进行赋值
2、字符串连接操作同上
3、repalce()方法同上上

  1. 通过字面量(不同于new)给一个字符串赋值,此时字符串声明在字符串常量池中
  2. 字符串常量池不会存储相同内容的字符串

在这里插入图片描述
注意
字符串声明在类当中使用的是字面量赋值,指向的地址值是相同的
在这里插入图片描述

面试题
1、String s=new String(“abc”):方式创建对象,在内存中创建了几个对象
两个:一个是堆空间中的new结构,另一个是char[]对应的常量池中的数据"abc",(如果常量池中没有abc就创建,有了就不创建)
2、以5为例,当出现变量名的时候,这时候会在堆当中创建指向方法区"javaEEhadoop"字符串的空间;常量和常量连接就在常量池中
在这里插入图片描述在这里插入图片描述

3、下题有打破了引用性数据改变数值随之改变的误区,因为String具有不可变性。

在这里插入图片描述

特别的

String s="Hello";
String a=s.intern();//返回值使用的是常量池中已经存在的字符串
System.out.println(s==a);//true

2、String对象的创建

String str="Hello";//字符串常量池
String s=new String()//堆空间中开辟空间
String s=new String("Hello")
String s=new String(char[] a)
String s=new String(char[] a,int startIndex,int count)

3、String类方法

  1. int length()
  2. char charAt(int index)
  3. boolean isEmpty()
  4. String toLowerCase()
  5. String toUpperCase()
  6. int compareTo(String otherString)
  7. String substring(int beginIndex)
  8. String substring(int start,int end)
  9. String trim()//去除首尾空格
  10. boolean equals(Object obj)
  11. boolean equalsIgnoreCase(String anotherString)
  12. String concat(String str)
  13. boolean endsWith(String suffix):是否以suffix结尾
  14. boolean startWith(String prefix)
  15. boolean startWith(String prefix,int toffset)
  16. boolean contains(CharSquence s)
  17. int indexOf(String s)
  18. int indexOf(String s,int fromIndex)
  19. int lastIndexOf(String s)//还是要从前往后数
  20. int lastIndexOf(String s,int fromIndex)
  21. String replace(String old,String new)
  22. String replaceAll(“正则表达式”,replacement)
  23. String replaceFirst(“正则表达式”,replacement)
  24. boolean matches(“正则表达式”)
  25. String split("\.")//以.进行分割
  26. char[] s.toCharArray()//字符串转换成字符数组
  27. byte[] s.getBytes(“gbk”)//将字符串转成字节数组,解码用new String构造器
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值