java学习关于String方法的总结

一:String 类对象的实例化

       一般有以下两种方法,第一种,直接赋值,第二种则是通过new 一个对象,通过构造方法来实例化一个对象。

示例代码:

String str = "123456";      //对象实例化方式一:直接赋值
String str1 = new String("987654"); //对象实例化方式二:构造方法

这里需要注意的是,方法一所实例化的对象存储在方法区内,而方法二实例化的对象存储在堆中。示例图片如下:

二:String的比较(==  和 equals()方法)

        通常的比较方式是通过“==”来进行比较,而这种比较形式在String类中则是相当于在比较目标的地址,而不是具体的判断其内容是否相等,在String中如果想要具体的比两个目标的具体内容,则是需要使用String.equals()方法,他的具体用法则是会在下面的示例代码中具体实现。

代码如下:

        String str2 = new String("boy");
        String str3 = new String("boy");
        if(str2 == str3 ){
            System.out.println("他们的地址相等");
        }
        if(str2 != str3){
            System.out.println("他们的地址不相等");
        }
        if(str2.equals(str3)){
            System.out.println("他们的值相等");
        }

输出结果:

三:实例化的区别

        一个新对象的创建,首先需要知道他的存储区间在哪里,如果创建2个相同内容的变量,就如第一节所讲的那样,有两种方式,他们的存储地点不同,直接赋值的存储地点为方法区,而通过构造方法创建的对象的存储地点为堆中,如果即将存储的新内容在方法区已经有相同的内容存在,那么新对象就会也指向已有的内容的地址,而如果堆上的相同内容通过手动入池将其放入方法区内时,同样的也不会再次创建对象,也是直接指向已有的内容,谨记这一点,在方法区不存在两个相同的内容。

代码示例:

        String str = "123";         
        String str1 = "123";
        String str2 = new String("123");
        String str3 = new String("123").intern();
        System.out.println(str == str1);
        System.out.println(str == str2);
        System.out.println(str1 == str3);
        System.out.println("=================");
        System.out.println(str.equals(str1));
        System.out.println(str.equals(str2));
        System.out.println(str.equals(str3));

运行结果:

通过这个例子再联系第二点所提到的比较方法,不难看出==所比较的是内存地址,而equals()方法则是比较的存储内容。

四:String类所包含的一些方法

public static void main(String[] args) {
        //字符串比较字符串替换方法
        String str = "abcd123";
        String arr = "abcD123";
        char[] str1 = str.toCharArray();        //将字符串转为字符数组
        char[] str2 =  {'z','a','c','s','f'};
        String str3 = new String(str2);         //将目标数组转为字符串
        String str4 = new String(str2,1,4);
        //将目标数组从下标1到4转为字符串
        System.out.println(Arrays.toString(str1));
        System.out.println(str3);
        System.out.println(str4);
        System.out.println(str.charAt(3));  //取得当前字符串下标的字符
        System.out.println(str.equals(arr));    //有符号比较
        System.out.println(str.equalsIgnoreCase(arr));  //无符号比较
        System.out.println(str.compareTo(arr)); //比较两个字符串的大小关系
    }

输出结果:

代码如下:

public static void main(String[] args) {
        //字符串查找,字符串替换方法
        String str = "abcdefgh";
        System.out.println(str.contains("de"));     //true
        //判断一个字符串是否存在
        System.out.println(str.indexOf("cd"));      //2
        //从开始位置查找字符串,如果存在则返回起始下标,不存在则返回-1
        System.out.println(str.indexOf("ef",3));    //4
        //从指定位置开始查找字符串位置
        System.out.println(str.lastIndexOf("bc"));  //1
        //右后向前查找子字符串位置
        System.out.println(str.lastIndexOf("ab",5)); //0
        //从指定位置右后向前查找子字符串位置
        System.out.println(str.startsWith("ab"));   //true
        //判断字符串是否以指定字符串开头
        System.out.println(str.startsWith("de",4)); //false
        //从指定位置开始判断字符串是否以指定字符串开头
        System.out.println(str.endsWith("fgh"));    //true
        //判断字符串是否以指定字符串结尾
        String pop = "hello lucky";
        System.out.println(pop.replaceFirst("l","w"));
        //替换首个指定内容      hewlo lucky
        System.out.println(pop.replaceAll("l","w"));
        //替换全部的指定内容     hewwo wucky
    }

执行结果:

代码如下:

//字符串拆分方法
    // 注意的是 * ^ : \ | . 这6个字符的实现必须使用\ 
    // 而\的实现又需要\,所以一会为\\* 实现对*的分割
    public static void main(String[] args) {
        String str = "hello boy hello girl";
        String str1 = "hello*boy*hello*girl";
        String str2 = "hello^boy^hello^girl";
        String[] pop = str.split(" ");
        String[] pop2 = str1.split("\\*");
        String[] pop3 = str2.split("\\^");
        //以空格字符拆分字符串并存储在数组中

        String[] pop1 = str.split(" ",3);
        //以空格字符拆分字符串并存储在数组中,长度可设置
        System.out.println(Arrays.toString(pop));
        System.out.println(Arrays.toString(pop1));
        System.out.println(Arrays.toString(pop2));
        System.out.println(Arrays.toString(pop3));
    }

执行结果:

代码如下:

public static void main(String[] args) {
        //字符串截取方法
        String str = "asdfghjk";
        String str1 = " Light long Light sanye ";
        System.out.println(str.substring(5));
        //从指定位置开始截取直到结尾
        System.out.println(str.substring(0,4));
        //从指定区间截取内容,遵循左闭右开原则即[0,4)
        System.out.println(str1.trim());
        //去掉字符串的左右空格
        System.out.println(str1.toUpperCase());
        //字符串转为大写
        System.out.println(str1.toLowerCase());
        //字符串转为小写
        System.out.println(str.concat(str1));
        //字符串的连接,等于+的作用,不会放入池中
        System.out.println(str.isEmpty());
        //判断字符串是否为空
    }

运行结果:

以上就是对String 类方法的一些总结,这只是众多方法中的一部分,更多的方法可以再自行搜索学习,以求不断地进步,希望对大家有所帮助,看完有帮助的话不要忘记点个赞鼓励鼓励我!我先给自己点个赞。

猜你喜欢

转载自blog.csdn.net/lin140611/article/details/89262703