< 今日知识点 >
- 常用类
- String类
·
·
·
—01 常用类目录
1、字符串相关的类
- String类及常用方法
- StringBuffer 、 StringBuilder
2、JDK8之前的日期时间 API
- System 静态方法
- Date 类
- Calendar 类
- SimpleDateFormat 类
3、JDK 8 中新日期时间API
- LocalDate 、LocalTime 、LocalDateTime
- Instant
- DateTimeFormatter
- 其他类
4、Java 比较器
- Comparable 接口
- Comparator 接口
5、System 类
6、Math 类
7、BigInteger 与 BigDecimal
·
·
·
—02 String类
1、String 类是一个final类,不是基本数据类型,代表不可变的字符序列,不可被继承。字符串是常量,用双引号引起来表示,它们的值再创建后不能更改。
2、String 对象的字符内容是储存在一个字符数组value[ ]中的,用于存储字符串数据。
3、String 实现了Serializable接口:表示字符串是支持序列化的。实现了Comparable接口:表示String可以比较大小
4、String 的不可变性:
体现:
① 当对字符串重新赋值时,需要重新指定内存区域赋值,不能使用原有的value进行赋值
② 当对现有的字符串进行连接操作时,也需要重新指定内存区域赋值,不能使用原有的value重新进行赋值
· 如:
String s1 = "abc";
s1 += "def" ;
System.out.println(s1); //abcdef
③ 当调用String的replace()修改指定字符或字符串时,也需要重新指定内存区域赋值,不能使用原有的value进行赋值
- 通过字面量的方式(区别于new的方式)给一个字符串赋值,此时的字符串声明在字符串常量池中
- 字符串常量池中是不会存相同内容的字符串的
- 不可变性 不可在字符串原有的地址对字符串进行赋值,只能重新造一个
5、String 的实例化方式:
- 方式一:通过字面量定义的方式
String s1 = “javaEE”;
String s2 = “javaEE”;
- 此时s1和s2的数据 “javaEE”声明在方法区的字符串常量池中。
- 方式二:通过new + 构造器的方式
String s3 = new String(“javaEE”);
String s4 = new String(“javaEE”);
- 此时的s3和s4保存的地址值,是数据在堆空间中开辟的空间后对应的地址值
System.out.ptintln( s1 == s2 ); //true
System.out.prinltln( s1 == s3 ); //false
System.out.println( s1 == s4 ); //false
System.out.println( s3 == s4 ); //false
6、一道面试题:String s = new String ( “abc” ); 方式创建对象,在内存中一共创建了几个对象?
两个。一个是堆空间中的new结构,另一个是char [ ] 对应的常量池中的数据:“abc”
·
·
·