String笔记

## 字符串学习

#### 字符串的创建

```java
/*
1."...",字符串是常量,一旦被创建其内容将不可改变
2.字符串可以共享使用(因为其不会改变的性质)
3.效果上相当于char[]字符数组,底层原理相当于byte[]型字符数组
*/

/*
字符串的创建方法(3+1)
public String();创建一个字符窜,不含任何内容;
public String(char[] array);根据字符数组的内容来创建字符串;
public String(byte[] array);根据字符数组内容来创建字符串;
加一种直接创建
*/
public class PracticeString {
public static void main(String[] args) {
String str1 = new String();//第一种创建方法
System.out.println("str1:"+str1);

//根据字符串创建字符
char[] array = {'a','b','c'};
String str2 = new String(array);
System.out.println("str2:"+str2);

//根据字符数组创建字符串
byte[] bbb = {97,98,99};
String str3 = new String(bbb);
System.out.println("str3:"+str3);

//直接创建
String str4 = "hhh";
System.out.println("str4:"+str4);


}
}
```

#### 字符串的比较

/*
程序当中直接直接写上""的字符串就在字符串常量池当中

ps:对于基本类型来说,== 进行数值比较;
对于引用类型来说 == 进行地址值比较;
*/
public class PracticeString01 {
public static void main(String[] args) {
String str1 = "abc";
String str2 = "abc";//地址相同

char[] arr ={'a','b','c'};
String str3 = new String(arr);

byte[] bbb = {97,98,99};
String str4 = new String(bbb);

System.out.println(str1==str2);//true
System.out.println(str1==str3);//flase
System.out.println(str3==str4);//false
//不同的创建方法地址不同

/*
如果要进行字符串内容的比较,两个方法
1.{public boolean queals (Object obj)
1.参数可以是任何对象;
2.只有参数是一个字符串并且内容相同时返回true,否则返回flase
3.该方法具有对称性,即a.equals(b)与b.equals(a)效果一样,但推荐字符串常量写在前面
}
2.{public boolean quealsIgnoreCase(String str )
与上述方法不同的地方是,进行的是忽略大小写的比较
}
*/
System.out.println(str1.equals(str3));//true
System.out.println(str3.equals(str4));//true

String str5 = "Abc";

System.out.println(str1.equals(str5));//false
System.out.println(str1.equalsIgnoreCase(str5));//true
}
}

 
原文地址:https://www.cnblogs.com/susexuexi011/p/13741425.html