Java基础–数组和面向对象(Ⅰ)
Java基础–面向对象(Ⅱ)
Java基础–面向对象(Ⅲ)
Java基础–面向对象(Ⅳ)
Java基础–面向对象(Ⅴ)
Java基础–面向对象(Ⅵ)、常用类(Ⅰ)
常用类
String类
- String类: 后端 ,字符串的功能是最频繁的
- String类: 代表字符串,字符串是一个常量,一旦被创建,其值不改变(地址不变,除非重新赋值)
1.常用的String类的构造方法
-
public String() :空参构造
-
public String(char[] value):将字符数组构造出字符串 (如果已知字符数组char[],----构造方法—String) (重点)
-
public String(char[] value,int index,int length):将一部分字符数组转换成字符串
-
public String(byte[] bytes) :将字节数组构造字符串 (如果已知字节数组byte[]-----String) (重点)
-
public String(String original):将一个字符串值存储进去,构造成一个字符串对象
-
补充:
数组中有没有length()?字符串String类中有没有length()/集合中有没有length()方法?
-
数组没有length(),只有length属性
-
String的length():获取字符串长度
-
集合没有, size():获取集合长度
-
-
String s1 = “hello” ;
String s2 = new String(“hello”);
他们分别创建了几个对象,有什么区别呢?- s1: 现在常量池中,是否存在这个常量,如果存在,直接返回地址值;否则,开辟新的空间地址值,赋值s1
- s2:在堆内存中申请空间,然后常量"hello",
- 还需要在常量池中找是否存在这个常量,有,就返回地址,重新开辟常量池空间
- 共同点:都表示创建"hello"字符串实例
2.字符串值相加
-
字符串变量相加:
- 常量池是否存在
- 不存在,开空间
- 常量池是否存在
-
字符串常量相加:
- 先拼接,在常量池中找,有 ---- > 返回地址
- 否则,开辟空间
public static void main(String[] args) {
String s1 = "hello" ;
String s2 = "world" ;
String s3 = "helloworld" ;
System.out.println(s3 == (s1+s2)); //false
System.out.println(s3.equals(s1+s2));//true
System.out.println("--------------------------------------");
System.out.println(s3 == "hello"+"world") ; //true
System.out.println(s3.equals("hello"+"world")) ;//true
}
3.String类型
-
String类型作为方法,形式参数的特点
-
String类作为引用类型,当成为方法的形式参数,和基本类型的效果一致:
-
形式参数的改变,不影响实际参数
- String是最为特殊的一种引用类型, 其他的引用类型,都是形式参数改变直接影响实际参数!比如StringBuffer
-
StringBuffer sb = "helloworld"