字符串

作者: 李哈哈_bing | 来源:发表于2018-01-03 16:49 被阅读0次
    String s = new String(“hello”)和String s = “hello”;的区别?
    答:有。前者会创建2个对象,后者创建1个对象。
    ==:比较引用类型比较的是地址值是否相同
    equals:比较引用类型默认也是比较地址值是否相同,而######String类重写了equals()方法,比较的是内容是否相同。
    String s1 = new String("hello");
            String s2 = "hello";
            System.out.println(s1 == s2);// false
            System.out.println(s1.equals(s2));// true
     String s5 = "hello";
            String s6 = "hello";
            System.out.println(s5 == s6);// 字符串字面量,直接从内存找,所以true
            System.out.println(s5.equals(s6));// true
    
    看程序写结果
    字符串如果是变量相加,先开空间,在拼接。
    字符串如果是常量相加,是先加,然后在常量池找,如果有#####就直接返回,否则,就创建。
     String s1 = "hello";
            String s2 = "world";
            String s3 = "helloworld";
            System.out.println(s3 == s1 + s2);// false。字符串如果是变量相加,先开空间,再拼接。
            System.out.println(s3.equals((s1 + s2)));// true
    
            System.out.println(s3 == "hello" + "world");//true。字符串如果是常量相加,是先加,然后在常量池找,如果有就直接返回,否则,就创建。
            System.out.println(s3.equals("hello" + "world"));// true
    
     通过反编译看源码,我们知道这里已经做好了处理。
            // System.out.println(s3 == "helloworld");
            // System.out.println(s3.equals("helloworld"));
    
    

    String类的判断功能:

    1.boolean equals(Object obj):比较字符串的内容是否相同,区分大小写

    2.boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,忽略大小写

    3.boolean contains(String str):判断大字符串中是否包含小字符串

    4. boolean startsWith(String str):判断字符串是否以某个指定的字符串开头

    5.boolean endsWith(String str):判断字符串是否以某个指定的字符串结尾

    6.boolean isEmpty():判断字符串是否为空。

    public class StringDemo {
        public static void main(String[] args) {
            // 创建字符串对象
            String s1 = "helloworld";
            String s2 = "helloworld";
            String s3 = "HelloWorld";
    
            // boolean equals(Object obj):比较字符串的内容是否相同,区分大小写
            System.out.println("equals:" + s1.equals(s2));
            System.out.println("equals:" + s1.equals(s3));
            System.out.println("-----------------------");
    
            // boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,忽略大小写
            System.out.println("equals:" + s1.equalsIgnoreCase(s2));
            System.out.println("equals:" + s1.equalsIgnoreCase(s3));
            System.out.println("-----------------------");
    
            // boolean contains(String str):判断大字符串中是否包含小字符串
            System.out.println("contains:" + s1.contains("hello"));
            System.out.println("contains:" + s1.contains("hw"));
            System.out.println("-----------------------");
    
            // boolean startsWith(String str):判断字符串是否以某个指定的字符串开头
            System.out.println("startsWith:" + s1.startsWith("h"));
            System.out.println("startsWith:" + s1.startsWith("hello"));
            System.out.println("startsWith:" + s1.startsWith("world"));
            System.out.println("-----------------------");
    
            // 练习:boolean endsWith(String str):判断字符串是否以某个指定的字符串结尾这个自己玩
    
            // boolean isEmpty():判断字符串是否为空。
            System.out.println("isEmpty:" + s1.isEmpty());
    
            String s4 = "";
            String s5 = null;
            System.out.println("isEmpty:" + s4.isEmpty());
            // NullPointerException
            // s5对象都不存在,所以不能调用方法,空指针异常
    //        System.out.println("isEmpty:" + s5.isEmpty());
            
        }
    }
    

    String类的获取功能

    相关文章

      网友评论

          本文标题:字符串

          本文链接:https://www.haomeiwen.com/subject/rtxsgxtx.html