package cn.ljs.test1;
/*
* 创建字符串的3+1种方法
* 三种构造方法:
* 1.public String();创建一个空白字符串,不含有任何内容
* 2.public String(char [] array);根据字符数组得内容,来创建字符串;
* 3.public String(byte[] array);根据字节数组得内容,来创建对应得字符串;
* 一种直接方法:
* */
public class StringTest {
public static void main(String[] args) {
//使用空参构造
String str1=new String();
System.out.println("第一个字符串:"+str1);
//根据字符数组创建字符串
char [] charray={'a','b','c'};
String str2=new String(charray);
System.out.println("第二个字符串:"+ str2);
//根据字节数组创建字符串
byte []btarray={'a','b','c'};
String str3=new String(btarray);
System.out.println("第三个字符串:"+str3);
//直接创建
String str4="Hello";
System.out.println("第四个字符串:"+str4);
/*
* 字符串常量池:程序中直接写上的双引号字符串,就在字符串常量池中
*
* 对于基本类型来说,==是进行数值的比较
* 对于引用类型来说,==是进行地址值的比较
* */
String str5="abc";
String str6="abc";
char[] charray1={'a','b','c'};
String str7=new String(charray1);
System.out.println(str5==str6);
System.out.println(str5==str7);
System.out.println(str7==str6);
/*
* ==是进行对象的地址值比较,如果确实需要字符串内容进行比较,可以使用两个方法
*
* public boolean equals(Object obj):参数可以是任何对象,只有只有参数是一个字符串且内容相同的才会给一个true,否则返回一个false;
*注意事项:
* 1.任何对象都能用Object进行接受
* 2.equals方法具有对称性,也就是a.equals(b)和b.equals(a)效果一样
* 3.如果比较双方一个常量一个变量。推荐把常量字符串写在前面
* 推荐:“abc”.equals(b) 不推荐:b.equals("abc")
* */
String str8="Hello";
String str9="Hello";
char [] charray2={'H','e','l','l','o'};
String str10=new String(charray2);
System.out.println(str8.equals(str9));
System.out.println(str9.equals(str10));
System.out.println(str8.equals(str10));
System.out.println(str10.equals("Hello"));
System.out.println("Hello".equals(str10));
String str11="hello";
System.out.println(str8.equals(str11));
System.out.println("==================================");
String str12=null;
System.out.println("abc".equals(str12));//推荐
// System.out.println(str12.equals("abc"));//不推荐,可能会报空指针异常
String str13="Java";
String str14="java";
System.out.println(str13.equalsIgnoreCase(str14));//true,不区分大小写
/*
*String当中常用的方法
*
* public int length():获取字符串中含有的字符个数,拿到字符串长度
* public String concat(String str):将当前字符串和参数字符串拼接成为返回值的新的字符串
* public char charAt(int index):获取指定位置的单个字符。(索引从0开始)
* public int indexOf(String str):查找参数字符串在本字符串当中首次出现的索引位置,如果没有返回-1
* */
//获取字符串的长度
int length = "hrhahatthzbbsrtthb".length();
System.out.println("字符串的长度:"+length);
//拼接字符串
String str15="hello";
String str16="word";
String str17=str15.concat(str16);
System.out.println(str17);
//获取指定位置的单个字符
char ch="hello".charAt(1);
System.out.println("在一号索引位置的字符为:"+ch);
//查找参数字符串在本来字符当中出现的第一次的位置,如果没有返回值为-1;
String str18="helloword";
int llo = str18.indexOf("llo");
System.out.println("第一次的索引值为:"+llo);
/*
* 分割字符串的方法
* public String [] split(String regex):按照参数规则,将字符串切分成为若干部分
*注意事项:
* split方法的参数其实是一个“正则表达式”
* */
String str19="aaa,bbb,ccc";
String[] split = str19.split(",");
for (int i = 0; i < split.length; i++) {
System.out.println(split[i]);
}
System.out.println("==================================");
String str20="aaa bbb ccc";
String[] s = str20.split(" ");//空格切割
for (int i = 0; i < s.length; i++) {
System.out.println(s[i]);
}
System.out.println("==================================");
String str21="aaa.bbb.ccc";
String[] split1 = str21.split("\\.");//英文的句号切割需要用正则表达式
for (int i = 0; i < split1.length; i++) {
System.out.println(split1[i]);
}
}
}