1 package api.string.demo;
2
3 public class StringEquals {
4 public static void main(String[] args) {
5 /*
6 下面这两种写法,字符串的值是没有发生改变的!
7 有两个字符串:"Hello"和"java"保存在堆中的字符串常量池中
8 str是保存在栈中的字符串的地址值,改变的只是地址值!
9 */
10 String str = "Hello";
11 System.out.println(str);
12 System.out.println(str.hashCode());//字符串"Hello"的地址值
13 str = "java";
14 System.out.println(str);
15 System.out.println(str.hashCode());//字符串"java"的地址值
16
17 String str1 = "Hello";
18 String str2 = "Hello";
19 char[] charArray = {‘H‘, ‘e‘, ‘l‘, ‘l‘, ‘o‘};
20 String str3 = new String(charArray);
21
22 //直接创建的字符串是在堆中的字符串常量池中!构造创建的字符串是在栈中的引用,是一个地址值!
23 System.out.println(str1 == str2);//true
24 System.out.println(str1 == str3);//false
25 System.out.println(str2 == str3);//false
26
27 }
28 }
package api.string.demo;
public class StringEquals {
public static void main(String[] args) {
String str1 = "Hello";
String str2 = "Hello";
char[] charArray = {‘H‘, ‘e‘, ‘l‘, ‘l‘, ‘o‘};
String str3 = new String(charArray);
// ==是进行对象地址值的比较,如果非要对字符串内容比较,则可以使用以下两个方法:
/*【方法一】
public boolean equals(Object obj);(任何对象都可以用Object接收)
【注意】
equals方法具有对称性:a.equals(b)和b.equals(a)效果一样
如果比较一个常量和一个变量,推荐把常量字符串写在前面:“常量”.equals(变量名)*/
System.out.println(str1.equals(str2));//true
System.out.println(str2.equals(str3));//true
System.out.println(str3.equals("Hello"));//true
System.out.println("Hello".equals(str1));//true
//如果比较一个常量和一个变量,推荐把常量字符串写在前面:“常量”.equals(变量名)
String str4 = null;
System.out.println("abc".equals(str4));//false
System.out.println(str4.equals("abc"));//【报错】NullPointerException(空指针异常)
/*
【方法二】
public boolean equalsIgnoreCase(String str);(忽略大小写,进行内容比较)
*/
String strA = "Java";
String stra = "java";
System.out.println(strA.equalsIgnoreCase(stra));//true
System.out.println(strA.equals(stra));//false
}
}
1 package api.string.demo;
2
3 public class ConversionString {
4 //【字符串的常用转换相关方法】
5 /*
6 1.public char[] toCharArray():将当前字符串拆分成为字符数组作为返回值
7 2.public byte[] getBytes():获取当前字符串底层的字节数组
8 3.public String replace(CharSequence oldString,CharSequence newString):
9 字符串的“内容替换”(将当前字符串中的oldString字符(串)替换为newString字符(串),返回这个新字符串)
10 CharSequence:可以接收字符串类型。
11 */
12 public static void main(String[] args) {
13 String str = "Hello";
14 //转化为字符数组
15 char[] chars = str.toCharArray();
16 for (int i = 0; i < chars.length; i++) {
17 System.out.println(chars[i]);
18 }
19 //转化为字节数组
20 byte[] bytes = str.getBytes();
21 System.out.println(bytes);
22 for (int i = 0; i < bytes.length; i++) {
23 System.out.println(bytes[i]);
24 }
25 //字符串的“内容替换”
26 String replace = str.replace("l", "*"); //He**o
27 //把str中的"l"替换成为"*"返回一个新的字符串
28 System.out.println(replace);
29 }
30 }
1 package api.string.demo;
2
3 public class InterceptSubString {
4 //【字符串截取方法:】
5 /*
6 1.public String subString(int index):截取从参数索引位置一直到字符串末尾的内容,返回新的字符串。
7 2.public String subString(int begin,int end):截取从begin参数索引位置到end参数索引位置中间的内容,返回新的字符串。【备注】[begin,end)
8 */
9 public static void main(String[] args) {
10 String str = "HelloWorld!";
11 String subStr = str.substring(5);// World
12 System.out.println(subStr);
13 String subStr2 = str.substring(4, 7);//oWo
14 System.out.println(subStr2);
15 }
16 }
1 package api.string.demo;
2
3 public class splitString {
4 //【分裂字符串方法】
5 /*
6 public String[] split(String regex)按照参数规则,将字符串分裂为若干部分,返回一个字符串数组
7 【regex】:正则表达式
8 */
9 public static void main(String[] args) {
10 String str = "aaa,bbb,ccc";
11 String[] strArray = str.split(",");
12 for (int i = 0; i < strArray.length; i++) {
13 System.out.println(strArray[i]);
14 }
15 String str1 = "aaa.bbb.ccc";
16 String[] strArray1 = str1.split(".");
17 for (int i = 0; i < strArray1.length; i++) {
18 System.out.println(strArray1[i]);
19 }
20 //【regex】:正则表达式(.)的正则表达式为(//.)
21 System.out.println(strArray1.length);
22 String[] strArray2 = str1.split("\\.");
23 for (int i = 0; i < strArray2.length; i++) {
24 System.out.println(strArray2[i]);
25 }
26 }
27 }
原文:https://www.cnblogs.com/yujiuyao/p/14646357.html