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种 

 

posted @ 2019-06-03 15:18  白河ia  阅读(125)  评论(0编辑  收藏  举报