直接创建的字符串和引用创建的字符串的区别,及字符串常量与引用值存放区别 1、字符串内容比较 2、字符串的常用转换相关方法 3、字符串截取方法 4、分裂字符串方法

注意事项

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

 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);//true24         System.out.println(str1 == str3);//false25         System.out.println(str2 == str3);//false26         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));//trueSystem.out.println(str2.equals(str3));//trueSystem.out.println(str3.equals("Hello"));//trueSystem.out.println("Hello".equals(str1));//true//如果比较一个常量和一个变量,推荐把常量字符串写在前面:“常量”.equals(变量名)String str4 = null;
        System.out.println("abc".equals(str4));//falseSystem.out.println(str4.equals("abc"));//【报错】NullPointerException(空指针异常)/*【方法二】
        public boolean equalsIgnoreCase(String str);(忽略大小写,进行内容比较)         */String strA = "Java";
        String stra = "java";
        System.out.println(strA.equalsIgnoreCase(stra));//trueSystem.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**o27         //把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);// World12         System.out.println(subStr);13         String subStr2 = str.substring(4, 7);//oWo14         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 }