**
String是一个常量字符串,一但赋值不可更改,属于引用类型
**
1.1==和equals的区别
==左右两边是基本类型比的是值,左右两边是引用数据类型比较的是内存地址
equals左右两边的所有类没有重写Object的equals()方法比的是地址
左右两边的所有类重写Object的equals()方法比的是值
String类重写了Object类equals()方法比的是值,字符串直接给值,值存在常量池中,常量池中的数据不可重复
public class StringDemo1 {
public static void main(String[] args) {
String s1 = "abc";
String s2 = "abc";
String s3 = new String("abc");
String s4 = new String("abc");
//==两边是引用数据类型比地址
System.out.println(s1==s2);//true
System.out.println(s1==s3);//false
System.out.println(s3==s4);//false
//equals String类重写Object类equals(),String类所有变量调用equals()比的是值
System.out.println(s1.equals(s2));//true
System.out.println(s1.equals(s3));//true
System.out.println(s3.equals(s4));//true
}
}
1.2其他数据类型转化为String
public class OtherChangeString {
public static void main(String[] args) {
//第一种:其他数据类型+""
int num1=11;
String s1 = num1 + "";
//第二种:其他数据类型.toString()
Integer num2=22;
String s2=num2.toString();
//第三种:String.valueOf(其他数据类型)
String s3=String.valueOf(3.14);
//第四种:用String类的构造方法
byte[] b1="123".getBytes();
String s4 = new String(b1);
//第五种:Arrays.toString(一维数组)
int[] num = {1,2,3};
String s5= Arrays.toString(num);
System.out.println(s5);
}
}
1.3String类的常用方法
/**
* String 常用方法
* @author: lgd
* @date: 2021/05/04/ 15:59
*/
public class StringDemo1 {
public static void main(String[] args) {
String str1="abcD";
//1 equals() 比较两个字符串是否相同
System.out.println(str1.equals("abcD"));
//2 str1.length()获取字符串的长度
System.out.println(str1.length());
//3 contains() 判断是否包含传入的字符串
System.out.println(str1.contains("ab"));
//4 substring(int start) 从start开始截取字符串
System.out.println(str1.substring(1));
//5 substring(int start,int end) 前闭后开
System.out.println(str1.substring(0,3));
//6 toLowerCase() 转为小写
System.out.println(str1.toLowerCase());
//7 toUpperCase()转为大写
System.out.println(str1.toUpperCase());
//8 public String[] split(String str) 根据传入的字符串切割源字符串 返回的是字符串数组
String str2="ab cd ef";
System.out.println(Arrays.toString(str2.split(" ")));
}
}