String类的构造方法
* public String():空构造
* public String(byte[] bytes):把字节数组转成字符串
* public String(byte[] bytes,int index,int length):把字节数组的一部分转成字符串
* public String (char[] value):把字符数组转成字符串
* public String(char[] value,int index,int count):把字符数组的一部分转成字符串
* public String(String original):把字符串常量值转换成字符串
示例如下:
public static void main(String[] args) {
String s = new String();
System.out.println(s);
byte[] arr1 = {97,98,99};
String s1 = new String(arr1);
System.out.println(s1);
byte[] arr2 = {97,98,99,100,101};
String s2 = new String(arr2,2,3);
System.out.println(s2);
char[] arr3 = {'a','b','c','d','e'};
String s3 = new String(arr3);
System.out.println(s3);
String s4 = new String(arr3,2,2);
System.out.println(s4);
String s5 = new String("heima");
System.out.println(s5);
}
String类的判断方法
* equals(Object obj)
* equalsIgnoreCase(String str)
* contains(String str)
* startsWith(String str)
* endsWith(String str)
* isEmpty()
示例如下:
public static void main(String[] args) {
// demo1();
// demo2();
//“”是字符串常量,是String的一个对象,因此可以调用String类中的方法
//null是一个空常量,不能调用任何方法,否则会出现空指针异常,可以给任意引用类型赋值
String s1 = "heima";
String s2 = "";
String s3 = null;
System.out.println(s1.isEmpty());
System.out.println(s2.isEmpty());
System.out.println(s3.isEmpty());
}
private static void demo2() {
String s1 = "我爱heima,哈哈哈";
String s2 = "heima";
String s3 = "baima";
String s4 = "我爱";
String s5 = "哈哈哈";
System.out.println(s1.contains(s2));
System.out.println(s1.contains(s3));
System.out.println(s1.startsWith(s4));
System.out.println(s1.endsWith(s5));
}
private static void demo1() {
String s1 = "heima";
String s2 = "heima";
String s3 = "HeiMa";
System.out.println(s1.equals(s2));
System.out.println(s1.equalsIgnoreCase(s3));
}
String类的获取功能
int length():获取字符串的长度
char charAt(int index):获取指定索引位置的字符
int indexOf(int ch):返回指定字符在此字符串中第一次出现处的索引
int indexOf(String str):返回指定字符串在此字符串中第一次出现处的索引
int indexOf(int ch,int fromIndex):返回指定字符在此字符串中从指定位置后第一次出现处的索引
int indexOf(String str,int fromIndex):返回指定字符串在此字符串中从指定位置后第一次出现处的索引
lastIndexOf
String substring(int start):从指定位置开始截取字符串,默认到末尾
String substring(int start,int end):从指定位置开始到指定位置结束截取字符串
示例如下:
public static void main(String[] args) {
// demo1();
// demo2();
// demo3();
// demo4();
String s = "woaiheima";
s.substring(5);
System.out.println(s);//结果还是woaiheima,substring会产生一个新的字符串,需要变量进行接收
}
private static void demo4() {
String s1 = "heimawudi";
String s2 = s1.substring(5);
System.out.println(s2);
String s3 = s1.substring(0, 5);//包含头不包含尾
System.out.println(s3);
}
private static void demo3() {
String s1 = "woaiheima";
int index1 = s1.indexOf('a', 3);//从指定位置开始向后找
System.out.println(index1);
int index2 = s1.lastIndexOf('a');//从后向前找
System.out.println(index2);
int index3 = s1.lastIndexOf('a',7);
System.out.println(index3);
}
private static void demo2() {
String s1 = "heima";
int index = s1.indexOf('m');//参数接收int类型,char类型会自动提升
System.out.println(index);
//如果不存在,返回是-1
int index1 = s1.indexOf("ma");//获取字符串中第一个字符出现的位置
System.out.println(index1);
int index2 = s1.indexOf("ei", 2);
System.out.println(index2);
}
private static void demo1() {
// int[] arr = {11,22,33};
// System.out.println(arr.length);//数组中的length是属性
String s1 = "heima";
System.out.println(s1.length());
//length()是一个方法,获取的是每一个字符
String s2 = "你要减肥,造吗?";
System.out.println(s2.length());
char c = s2.charAt(5);//根据索引获取对应位置的字符
System.out.println(c);
char c1 = s2.charAt(10);//StringIndexOutOfBoundsException字符串索引越界异常
}
}
String类的转换功能
byte[] getBytes():把字符串转换成字节数组
char[] toCharArray():把字符串转换成字符数组
static String valueOf(char[] chs):把字符数组转换成字符串
注:String类的valueOf方法可以把任意类型的数据转成字符串
示例如下:
public static void main(String[] args) {
/*byte[] a = {'a','b'};
String s = new String(a);
System.out.println(s);*/
//将字符串转换成字符数组
// demo1();
// demo2();
char[] arr = {'a','b','c'};
String s = String.valueOf(arr);//String类的valueof方法可以将任意类型的数据转换成字符串
System.out.println(s);
String s2 = String.valueOf(100);//将100转换成字符串
System.out.println(s2 + 100);
Person p1 = new Person("张三", 23);
String s3 = String.valueOf(p1);//调用对象的toString方法
System.out.println(s3);
//toLowerCase():将字符串转换成小写
//toUpperCase():将字符串转换成大写
//concat:字符串拼接
String c1 = "heima";
String c2 = "HEIMA";
System.out.println(c2.toLowerCase());
System.out.println(c1.toUpperCase());
System.out.println(c1.concat(c2));//必须是字符串进行拼接
System.out.println(c1 + c2);//用 + 拼接字符串更强大,可以拼接任意类型
}
private static void demo2() {
String s = "heima";
char[] arr = s.toCharArray();
for(int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
private static void demo1() {
String s1 = "abc";
byte[] arr = s1.getBytes();
for(int i = 0; i < arr.length; i++) {
System.out.println(arr[i] + " ");
}
}
String类的其他功能
替换:String replace()
去除:String trim()
比较字符:int compareTo() 或者int compareToIgnoreCase()
示例如下:
public static void main(String[] args) {
// demo1();
// demo2();
String s1 = "a";
String s2 = "aaaaaa";
int num = s1.compareTo(s2);//按照码表值进行比较的
System.out.println(num);
String s3 = "黑";
String s4 = "马";
System.out.println('黑' + 0);//char的查找的是Unicode码表的值
System.out.println('马' + 0);
int num2 = s3.compareTo(s4);
System.out.println(num2);
String s5 = "heima";
String s6 = "HEIMA";
int num3 = s5.compareTo(s6);
System.out.println(num3);
int num4 = s5.compareToIgnoreCase(s6);
System.out.println(num4);
}
private static void demo2() {
String s = " hei ma ";
String s2 = s.trim();//去掉两端点的空格
System.out.println(s2);
}
private static void demo1() {
String s = "heima";
String s2 = s.replace('i', 'o');
System.out.println(s2);
String s3 = s.replace("he", "wo");
System.out.println(s3);
}
练习题
//遍历字符数组
String s = "heima";
for(int i = 0; i < s.length(); i++) {
/*char c = s.charAt(i);
System.out.println(c);*/
System.out.println(s.charAt(i));
}
//定义大串中小串出现的次数
String max = "woaiheima,heimabutongyubaima,wulunheimahaishibaima,zhaodaogongzuojiushihaoma";
String min = "heima";
int count = 0;
int index = 0;
while((index = max.indexOf(min)) != -1) {
count++;
max = max.substring(index + min.length());
}
System.out.println(count);
//模拟用户登录
Scanner sc = new Scanner(System.in);
for (int i = 0; i < 3; i++) {
System.out.println("请输入用户名:");
String userName = sc.nextLine();
System.out.println("请输入密码:");
String password = sc.nextLine();
if ("admin".equals(userName) && "admin".equals(password)) {
System.out.println(userName + "登陆成功");
break;
}else {
if (i == 2) {
System.out.println("您今天的次数已到,请明天再来。");
}else {
System.out.println("用户名或者密码错误," + "您还有" + (2-i) + "次机会");
}
}