思安特面試題--String字符串解析

java基礎部分判斷題

//    Object obj =null;    System.out.println(String.valueOf(obj));//result:"null"

//        System.out.println(String.valueOf(null));//error

//        System.out.println("123"==String.valueOf("123")); //true

//        System.out.println("123"==new String("123"));//flase

//        System.out.println(new String("123").equals(String.valueOf("123")));//true

//        System.out.println(new String("123")==String.valueOf("123")); //flase

//        List<String> list=new ArrayList<String>(0);//lsit是一個可變長的集合,0只是默認容量大小,添加前判斷當前容量,不足則擴容;擴容方式:newCapacity = oldCapacity + (oldCapacity >> 1)
//        list.add("123");  
// 		System.out.println(list.get(0));

//        List<Object> list = Collections.emptyList();list.add("123");//error 有時候需要返回一個空集合,直接返回null或者new一個耗性能,要做判空等判斷.使用這個不用判空,不會報空指針異常;該list不能做add操作 原因是,emptylist沒有add方法,使用的是父類abstractList的add方法,該方法報UnsupportedOperationException();不支持該操作

當一個集合(Collection/set/List/map等)被作爲參數傳遞給一個函數時,如何保證函數不能修改它?
在作爲參數傳遞之前,我們可以使用Collections.unmodifiableCollection(Collection c)方法創建一個只讀集合,這將確保改變集合的任何操作都會拋出UnsupportedOperationException。

集合部分推薦觀看博客鏈接,幾乎全解;
https://blog.csdn.net/u010775025/article/details/79315361


字符串解析問題

在這裏插入圖片描述
private final char value[]; //The value is used for character storage

private int hash;  //Cache the hash code for the string

其中第一個就是實際存儲字符串的數組,所有字符串最終的存儲形式都是字符數組。從上圖中可以很清晰的看出,實際的字符數組還是存儲在堆中,常量池中存儲的是String對象。

當執行String str = “Hello”,只是將常量池中"Hello"對象的地址賦給了str。

推薦文章:
https://www.cnblogs.com/fairly/p/6091456.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章