拔丝芋头的Java学习日记---Day11

< 今日知识点 >

  • 常用类
  • 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”

·
·
·

—03 StringBuffer和StringBuilder类

你可能感兴趣的:(拔丝芋头的Java学习日记---Day11)