package com.common.string;
import java.util.Arrays;
/**
* @ClassName: Demo1
* @Author: 南冥有猫不须铭
* @Date: 2021/6/22-18:34
* @Description: String类 字符串方法的使用
*/
public class Demo1 {
public static void main(String[] args) {
String name = "hello";//"hello"常量存储在字符串池中(字符串常量池,jdk1.6之前存放在方法区中,jdk1.7之后转移到堆中)
name = "zhangsan";//"zhangsan"赋值给name变量,给字符串赋值时,并没有修改数据,而是重新开辟一个空间(原来的"hello"变成垃圾,被回收)
String name2 = "zhangsan";//name和name2指向字符串池中的同一个对象"zhangsan",从而实现了字符串常量的共享
//演示字符串的另一种创建方式,new String();
String str = new String("java");//这种方式会在堆和字符串常量池中各创建一个对象("java"),会浪费空间 str-->对象1-->"java"
String str2 = new String("java");//在堆中重新创建一个对象,指向上面字符串常量池中的"java" str2-->对象2-->"java"
System.out.println(str == str2);//false str和str2指向的堆中的对象的地址不同
System.out.println(str.equals(str2));//true 两个字符串比较要用 equals(),equals()比较的不是地址,而是数据
System.out.println("----------------字符串方法的使用1-----------------");
//字符串方法的使用
//1、length();返回字符串的长度
//2、charAt(int index);返回某个位置的字符
//3、contains(String str);判断是否包含某个字符串
String content = "java是世界上最好的java编程语言,java真香";
System.out.println(content.length());//15 字符串的长度为15,每一个字符都算一个长度(空格也算)
System.out.println(content.charAt(content.length()-1));//言 返回字符串最后的位置上的字符,减1是因为字符串中字符计数是从0开始的
System.out.println(content.contains("java"));//true
System.out.println(content.contains("php"));//false
System.out.println("----------------字符串方法的使用2-----------------");
//字符串方法的使用
//4、toCharArray();返回字符串对应的数组
//5、indexOf();返回子字符串首次出现的位置
//6、lastIndexOf();返回子字符串最后一次出现的位置
System.out.println(Arrays.toString(content.toCharArray()));//[j, a, v, a, 是, 世, 界, 上, 最, 好, 的, j, a, v, a, 编, 程, 语, 言, ,, j, a, v, a, 真, 香] 这里在打印时又将数组变成字符串,一个字符一个字符地打印
System.out.println(content.indexOf("java"));//0 "java"首次出现的位置(首字母)下标是0
System.out.println(content.indexOf("java",4));//11 从下标4开始往后找出现的第一个"java"的位置的下标是11
System.out.println(content.lastIndexOf("java"));//20 "java"最后一次出现时的位置(首字母)下标为20
System.out.println("----------------字符串方法的使用3-----------------");
//字符串方法的使用
//7、trim();去掉字符串前后的空格
//8、toUpperCase();把小写转成大写 toLowerCase();把大写转成小写
//9、endsWith(str);判断是否以str结尾 startsWith(str);判断是否以str开头
String content2 = " hello world ";
System.out.println(content2.trim());//hello world 去掉了字符串前后的空格,中间的空格需要通过替换去除
System.out.println(content2.toUpperCase());// HELLO WORLD 小写转成大写
System.out.println(content2.toLowerCase());// hello world 大写转成小写
String filename = "hello.java";
System.out.println(filename.endsWith(".java"));//true 判断是否以".java"结尾
System.out.println(filename.startsWith("hello"));//true 判断是否以"hello"开头
System.out.println("----------------字符串方法的使用4-----------------");
//字符串方法的使用
//10、replace(char old,char new);用新的字符或字符串替换旧的字符或字符串
//11、split();对字符串进行拆分
System.out.println(content.replace("java","php"));//php是世界上最好的php编程语言,php真香
String say = "java is the best programing language,java xiang";
String[] arr = say.split("[ ,]+");// " ":表示用空格进行拆分;"[ ,]"表示用空格或者逗号进行拆分;"[ ,]+"表示隔着多个空格或者逗号时也能拆分
System.out.println(arr.length);//输出字符串数组长度
for (String string : arr) { //遍历(输出每一个字符串数组)
System.out.println(string);
}
System.out.println("----------------补充-----------------");
//补充两个方法equals()、compareTo();比较大小
String s1 = "hello";
String s2 = "HELLO";
System.out.println(s1.equals(s2));//false 比较值是否相等
System.out.println(s1.equalsIgnoreCase(s2));//true 忽略大小写的比较
String s3 = "nabc";//a:97 b:98
String s4 = "nxyza";//x:120 y:121
System.out.println(s3.compareTo(s4));//-23 97-120=-23 这里比字符串的大小是比字符的先后位置大小,如果第一个字符相同,就比较第二个字符,以此类推
String s5 = "abc";//长度:3
String s6 = "abcxyz";//长度:6
System.out.println(s5.compareTo(s6));//-3 3-6=-3 这里两个字符串前半部分相同,而后面一个有,一个没有,这里直接比较字符串长度
}
}
package com.common.string;
/**
* @ClassName: Demo2
* @Author: 南冥有猫不须铭
* @Date: 2021/6/27-18:49
* @Description: 案例演示
*/
/*
需求:
已知String str = "this is a test";
1.将str中的单词单独获取出来
2.将str中的test替换为practice
3.在test前面插入一个easy
4.将每个单词的首字母改为大写
*/
public class Demo2 {
public static void main(String[] args) {
String str = "this is a test";
//1.将str中的单词单独获取出来
System.out.println("--------1.将str中的单词单独获取出来--------");
String[] arr = str.split(" ");
for (String s : arr) {
System.out.println(s);
}
//2.将str中的test替换为practice
System.out.println("--------2.将str中的test替换为practice--------");
String str2 = str.replace("test","practice");
System.out.println(str2);
//3.在test前面插入一个easy
System.out.println("--------3.在test前面插入一个easy--------");
String str3 = str.replace("test","easy test");
System.out.println(str3);
//4.将每个单词的首字母改为大写
System.out.println("--------4.将每个单词的首字母改为大写--------");
for (int i=0;i<arr.length;i++){
char first = arr[i].charAt(0);
//把第一个字符转成大写
char upperfirst = Character.toUpperCase(first);//char的包装类Character下的方法
String news = upperfirst+arr[i].substring(1);//从字符串数组中每个字符串的第二个字符开始截取,然后跟前面的大写首字符组合成新的字符串
System.out.println(news);
}
}
}