• 2019-06-2 java学习日记


    String类的常见面试题

    注:基本数据类型比较的是值,引用数据类型比较的是地址值

     1.判断定义为String类型的s1和s2是否相等

    1 private static void demo1() { 
    2     //常量池中没有这个字符串对象,就创建一个,如果有直接用即可
    3         String s1 = "abc";
    4         String s2 = "abc";
    5         System.out.println(s1 == s2);             //true    
    6         System.out.println(s1.equals(s2));         //true
    7     }

    2.下面这句话在内存中创建了几个对象?

    1 private static void demo2() {
    2         //创建几个对象
    3         //创建两个对象,一个在常量池中,一个在堆内存中
    4         String s1 = new String("abc");        
    5         System.out.println(s1);
    6     }

    3.判断定义为String类型的s1和s2是否相等

    private static void demo3() {
            String s1 = new String("abc");            
        //记录的是堆内存对象的地址值        
            String s2 = "abc";                        
        //记录的是常量池中的地址值
            System.out.println(s1 == s2);             //false
            System.out.println(s1.equals(s2));         //true
        }

    4.判断定义为String类型的s1和s2是否相等

    1 private static void demo4() {
    2         //byte b = 3 + 4;                        
    3     //在编译时就变成7,把7赋值给b,常量优化机制
    4         String s1 = "a" + "b" + "c";
    5         String s2 = "abc";
    6         System.out.println(s1 == s2);             //true,java中有常量优化机制    
    7         System.out.println(s1.equals(s2));         //true
    8     }

    5.判断定义为String类型的s1和s2是否相等

    public static void main(Sting[] args) {
            String s1 = "ab";
            String s2 = "abc";
            String s3 = s1 + "c";
            System.out.println(s3 == s2);        
        //他这里的从堆里的abc与常量池里的abc比较
            System.out.println(s3.equals(s2));         //true
        }  
    }        

    String的判断功能

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

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

     1 private static void demo1() {
     2         String s1 = "heima";
     3         String s2 = "heima";
     4         String s3 = "HeiMa";
     5         
     6         System.out.println(s1.equals(s2));        //true
     7         System.out.println(s2.equals(s3));        //false
     8         
     9         System.out.println("---------------");
    10         
    11         System.out.println(s1.equalsIgnoreCase(s2));    
    12         System.out.println(s1.equalsIgnoreCase(s3));     //不区分大小写
    13     }

    3,boolean contains(String str):判断大字符串中是否包含小字符串
    4,boolean startsWith(String str):判断字符串是否以某个指定的字符串开头
    5,boolean endsWith(String str):判断字符串是否以某个指定的字符串结尾

     1 private static void demo2() {
     2         String s1 = "我爱heima,哈哈";
     3         String s2 = "heima";
     4         String s3 = "baima";
     5         String s4 = "我爱";
     6         String s5 = "哈哈";
     7         
     8         System.out.println(s1.contains(s2));      //判断是否包含传入的字符串
     9         System.out.println(s1.contains(s3));
    10         
    11         System.out.println("------------------");
    12         System.out.println(s1.startsWith(s4));      //判断是否以传入的字符串开头
    13         System.out.println(s1.startsWith(s5));
    14         
    15         System.out.println("------------------");
    16         System.out.println(s1.endsWith(s4));      //判断是否以传入的字符串结尾
    17         System.out.println(s1.endsWith(s5));
    18     }

    5,boolean isEmpty():判断字符串是否为空。

    1 public static void main(String[] args) {        
    2         String s1 = "heima";
    3         String s2 = "";
    4         String s3 = null;
    5         
    6         System.out.println(s1.isEmpty());
    7         System.out.println(s2.isEmpty());
    8         System.out.println(s3.isEmpty());    //java.lang.NullPointerException
    9     }

    ""空串和null的区别

    1,""空串是字符串常量,同时也是一个String类的对象,
    既然是对象当然可以调用String类中的方法
    2,null是空常量,不能调用任何的方法,否则会出现空指针异常,
    null常量可以给任意的引用数据类型赋值

    注:常量有字符串常量,字符常量,null常量,整数常量,小数常量和布尔常量6种 

  • 相关阅读:
    10. Regular Expression Matching
    9. Palindrome Number (考虑负数的情况)
    8. String to Integer (整数的溢出)
    7. Reverse Integer (整数的溢出)
    LeetCode Minimum Size Subarray Sum
    LeetCode Course Schedule II
    Linux 文件缓存 (一)
    LeetCode Tries Prefix Tree
    Linux : lsof 命令
    LeetCode Binary Tree Right Side View
  • 原文地址:https://www.cnblogs.com/Sherwin-liao/p/10967764.html
Copyright © 2020-2023  润新知