Java中String的注意事项和常用方法!

注意事项

直接创建的字符串和引用创建的字符串的区别,及字符串常量与引用值存放区别

 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 }

常用方法

1、字符串内容比较

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
    }
}

2、字符串的常用转换相关方法

 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 }

3、字符串截取方法

 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 }

4、分裂字符串方法

 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 }

 

 
posted @ 2021-04-13 01:39  YuJiuYao  阅读(141)  评论(0编辑  收藏  举报