【java】:初识String

目录

目录

1.关于字符串的修改

2.字符串与字符之间的相互转化

3.字符串比较

4.字符串查找

5.字符串替换

6.字符串拆分

7.字符串截取

8.其他操作方法


 

1.关于字符串的修改

法一:借助源字符串,创建新的字符串,
    public class Main {
            public static void main(String[] args) { String str4="hello";
        str4="H"+str4.substring(1);//借助源字符串,创建新的字符串,即字符串拼接
                                  // str4.substring(1):“ello”
        System.out.println(str4);//Hello
    }
 }
法二:使用反射破坏原来的封装,访问一个类内部的private成员
    public class Main {
            public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException {
       //必不可少
        String str5="hello";
        Field valueFild=String.class.getDeclaredField("value");
        valueFild.setAccessible(true);//将value字段的访问属性设为可访问
        char[] value=(char[])valueFild.get(str5);
         value[0]='H';//修改第0号位置的字符
        System.out.println(str5);//Hello
     }
}

2.字符串与字符之间的相互转化

public class Main {
   public static void main(String[] args){
     char[] arr={'a','s','d','f','g'};
     
       /*
       /将字符数组转化为字符串
        */
     String  s1_arr=new String(arr);
     System.out.println(s1_arr);//asdfg
     
     String s2_arr=new String(arr,2,3);
     //将字符数组中的部分内容转为字符串
     //new String(String arr,int offset,count)
     // 从offset=2开始,往后的count=3位转为字符串
     System.out.println(s2_arr);//dfg
     System.out.println(s1_arr.charAt(3));//f
     // 取得字符串中指定位置的字符,索引从0开始
​
     char[] data_s1_arr=s1_arr.toCharArray();
     // string.toCharArray()将字符串string转为字符数组
     for(int i=0;i<s1_arr.length();i++)
     {
         System.out.println(data_s1_arr[i]);
         // 结果:
         //a
         //s
         //d
         //f
         //g
     }
​
     String s1_arr_to_string=new String(data_s1_arr);//将字符数组转为字符串
     System.out.println(s1_arr_to_string);//asdfg
     String s1_arr_to_string2=new String(data_s1_arr,2,2);
     //将字符数组中的部分内容转为字符串
     //new String(char string_arr,int offset,count)
     // 从offset=2开始,往后的count=2位字符转为字符串
     
     System.out.println(s1_arr_to_string2);//df
​
     byte[] byte_arr=s1_arr_to_string.getBytes();//获取ASCII码值,以字节数组返回
     for(int i=0;i<s1_arr_to_string.length();i++){
         System.out.println(byte_arr[i]);//ascii值a:97,s:115···
     }
     System.out.println(new String(byte_arr));//将ASCII码值转为字符,再转为字符串
    }
}

3.字符串比较

public class Main {
   public static void main(String[] args){
   String string1 = "hello";
    String string2 = "Hello";
    System.out.println(string1.equals(string2));//区分大小写比较两字符串是否相等
    //false
    System.out.println(string1.equalsIgnoreCase(string2));//不区分大小写比较两字符串是否相等
    //true
    System.out.println(string1.compareTo(string2));//比较两个字符串大小关系
    //ASCII码,小写字母 > 大写字母的值,
    // 通常返回一个整形(string1-string2)的ASCII码值之差
    }
}

4.字符串查找

public class Main {
   public static void main(String[] args){
        String string3 = "xu heng shuai a";
        System.out.println(string3.contains("shuai "));//true
        System.out.println(string3.contains("a "));//false
        String string4 = "xuzhiheng";
        System.out.println(string4.indexOf("xu"));//0,x的下标为0
        //int indexOf(String str):从头开始查找指定的字符串str的位置,
        // 查到了返回位置的索引值
        System.out.println(string4.indexOf("hui"));//找不到hui,返回-1
        //找不到则返回-1
        System.out.println(string4.indexOf("xu", 4));//-1
        //int indexOf(String str,int fromIndex):从指定的位置 fromIndex 开始查找指定的字符串str的位置,
        System.out.println(string4.lastIndexOf("xu"));//0
        //int lastIndexOf(String str):从后往前开始查找字符串
        //注意:字符串顺序依然是从前往后
        System.out.println(string4.lastIndexOf("ux"));//-1
        System.out.println(string4.lastIndexOf("heng", 4));//-1
        //lastIndexOf(String str,int fromIndex):
        // 从后往前跳过fromIndex 个字符开始查找字符串str
        System.out.println(string4.startsWith("xu"));//true
        //Boolean startsWith(String str):
        // 判断源字符串是否是以str开头的
        // 返回值为Boolean类型,
        //如果是返回:true
        System.out.println(string4.startsWith("heng"));//false
        //如果不是则返回:false
        System.out.println(string4.startsWith("zhi", 2));//true
        //Boolean startsWith(String str,int toffset):
        //判断源字符串从 toffset 位置开始的是否以“str”为开头
        // 返回值为Boolean类型,
        //如果是返回:true
        System.out.println(string4.startsWith("zhi", 3));//false
        //如果不是则返回:false
        System.out.println(string4.endsWith("heng"));//true
        //Boolean endsWith(String str):
        //判断源字符串是否以“str”为结尾的
        // 返回值为Boolean类型,
        //如果是返回:true
        System.out.println(string4.endsWith("Heng"));//false
        //如果不是则返回:false
    }
}

5.字符串替换

public class Main {
   public static void main(String[] args){
        System.out.println(string4.replaceAll("zhi"," "));//xu heng
        //String replaceAll(regex str1,replacement str2):
        //将str1替换为str2
        System.out.println(string4.replaceFirst("xu","Xu"));//Xuzhiheng
        //String replaceFirst(regex str1,replacement str2):
        //将开头的str1替换为str2
    }
}

6.字符串拆分

public class Main {
   public static void main(String[] args){
        String string5 = "xu heng shuai a";
        String[] string5_arr1=string5.split(" ");
        System.out.println(Arrays.toString(string5_arr1));//[xu, heng, shuai, a]
        //String split(String str):
        //将源字符串在“str”处拆分
        String[] string5_arr2=string5.split(" ",2);// [xu, heng shuai a]
       // String split(String str,int limit):
        //将源字符串在“str”处拆分,拆分后的数组长度为limit
        System.out.println(Arrays.toString(string5_arr2));
        String[] string5_arr3=string5.split(" ",3);
        System.out.println(Arrays.toString(string5_arr3));//[xu, heng, shuai a]
     }
 }

7.字符串截取

public class Main {
   public static void main(String[] args){
        String string6="abcdefghijklmn";
        System.out.println(string6.substring(5));//fghijklmn
        // String substring(int index):
        //从指定索引处截取到结尾
        System.out.println(string6.substring(5,8));//fgh
        // String substring(int start,int end):
        //截取指定内容:start索引处开始,end索引处结尾
    }
}

8.其他操作方法

public class Main {
   public static void main(String[] args){
        String string7=" a heng zai ";
        System.out.println(string7.trim());//“a heng zai”
        //String trim():
        // 去掉字符串中的左右空格,保留中间的空格
        System.out.println(string7.toUpperCase());//“ A HENG ZAI ”
        //String toUpperCase():
        //转大写
        System.out.println(string7.toLowerCase());//“ a heng zai ”
        //String toLowerCase():
        //转小写
​
        String string8=new String(string7);
        //new出来的字符串并不是存储在字符串常量池中,
        String string9=new String(string7).intern()  ;
        // 加上“.intern()”,返回字符串的引用,                                                 // 而且是一个常量池中地址
        // 此时可以用“==”比较两个字符串
        System.out.println(string7==string8);//false
        //string7位于字符串常量池中,而string8不是位于字符串常量池中
        //所以无法比较
        System.out.println(string7==string9);//true
        //对于字符串常量池中的字符串可以用“==”判断是否相等
        String string10="hello";//字符串常量池
        System.out.println(string10.concat(" world."));//hello world.
        //String concat(String str):
        //给源字符串拼接上str
        //相当于“+”连接符,不入池
        System.out.println(string10.length());//5
        //注意:“.length()”,不是“.length”
        System.out.println(string10.isEmpty());//false
        //Boolean isEmpty(string str):
        //判断字符串str是否为 空字符串,不是null,而是长度等于0
        System.out.println("".isEmpty());//true
        System.out.println(" ".isEmpty());//false
​
    }
}

猜你喜欢

转载自blog.csdn.net/qq_44292334/article/details/112851607