关于Java JDK 中内置的一个类:java.lang.String
String表示字符串类型,是引用数据类型,不是基本的数据类型。
String类型底层数组是final修饰的,是不可变的。就是说 String 声明对象以后,是不可修改的,字符串“abc"从出生到死亡,不可能变成"abcd”,“ab”。
StringBuilder 底层数组没有⽤ final 修饰,可变;线程不安全,效率⾼(⼀般⽤的多)
StringBuffer 底层数组没有⽤ final 修饰,可变;线程安全,效率低(⼀般⽤的少),⽅法都采⽤ 了 synchronized 修饰
Java中用双引号括起来的是字符串,例如“abc”、“def”。都是直接存储在“方法区”字符串常量池中的。
除了双引号的构造方法,还可以通过new的方式来创建字符串对象,如使用:String s3=new String("xy");来创建字符串对象。
为什么要把字符串储存在“字符串常量池”中呢?
因为字符串在实际的开发中使用非常的频繁;
为了提高执行的效率,所以把字符串方法哦了方法区的“字符串常量池”中
String中常用的方法
Modifier and Type (修饰语和类型) | Method and Description (方法与描述) |
char | charAt(int index) 返回 char指定索引处的值。 |
int | compareTo(String anotherString) 按字典顺序比较两个字符串。 |
String | 将指定的字符串连接到该字符串的末尾。 |
boolean | 当且仅当此字符串包含指定的char值序列时才返回true。 |
static String | valueOf(boolean b) 返回 boolean参数的字符串 boolean形式。 |
valueOf(char c) 返回 char参数的字符串 char形式。 | |
valueOf(char[] data) 返回 char数组参数的字符串 char形式。 | |
valueOf(char[] data, int offset, int count) 返回 char数组参数的特定子阵列的字符串 char形式。 | |
valueOf(double d) 返回 double参数的字符串 double形式。 | |
valueOf(float f) 返回 float参数的字符串 float形式。 | |
valueOf(int i) 返回 int参数的字符串 int形式。 | |
valueOf(long l) 返回 long参数的字符串 long形式。 | |
valueOf(long l) 返回 long参数的字符串 long形式。 | |
copyValueOf(char[] data) 相当于 valueOf(char[]) | |
copyValueOf(char[] data, int offset, int count) | |
boolean | 将此字符串与指定对象进行比较。 |
int | hashCode() 返回此字符串的哈希码。 |
int | indexOf(int ch) 返回指定字符第一次出现的字符串内的索引。 |
indexOf(int ch) 返回指定字符第一次出现的字符串内的索引。 | |
返回指定子字符串第一次出现的字符串内的索引。 | |
indexOf(String str, int fromIndex) 返回指定子串的第一次出现的字符串中的索引,从指定的索引开始。 | |
boolean | isEmpty() 返回 true如果,且仅当 length()为 0 。 |
int | lastIndexOf(int ch) 返回指定字符的最后一次出现的字符串中的索引。 |
lastIndexOf(int ch, int fromIndex) 返回指定字符的最后一次出现的字符串中的索引,从指定的索引开始向后搜索。 | |
lastIndexOf(String str) 返回指定子字符串最后一次出现的字符串中的索引。 | |
lastIndexOf(String str, int fromIndex) 返回指定子字符串的最后一次出现的字符串中的索引,从指定索引开始向后搜索。 | |
int | length() 返回此字符串的长度。 |
String | substring(int beginIndex) 返回一个字符串,该字符串是此字符串的子字符串。 |
substring(int beginIndex, int endIndex) 返回一个字符串,该字符串是此字符串的子字符串。 | |
char | 将此字符串转换为新的字符数组。 |
对象初始化
静态代码块
如果对类的静态域进⾏初始化的代码⽐较复杂,那么可以使⽤静态的初始化块
静态初始化块只执⾏⼀次,且在对象初始化块之前执⾏
2、构造器的具体处理步骤
如果构造器第⼀⾏调⽤了第⼆个构造器, 则基于所提供的的参数执⾏第⼆个构造
器, 否则:
所有数据域被初始化为默认值(0、false 或null)
按照在类声明中出现的次序, 依次执⾏所有域初始化语句和初始化块
先执⾏静态初始化块,再执⾏对象初始化块
静态初始化块只执⾏⼀次,对象初始化块在每次创建这个类的对象时均执行。
执行这个构造器的主体。
3、对象析构与 finalize ⽅法
Java 有⾃动的垃圾回收器,不需要⼈⼯回收内存
Java 不⽀持析构器
如果某个资源需要在使⽤完毕后⽴刻被关闭,对象⽤完时,可以应⽤⼀个close ⽅法来完成相应的清理操作