Java-string字串

pnodnineteen發表於2018-12-17

String、StringBuffer、StringBuilder都是final修飾的,都不可以繼承

String、StringBuffer、StringBuilder底層都是陣列實現的,只不過String中的數值用final修飾,所以String類物件的值不可改變

StringBuffer、StringBuilder都是可變陣列,可以用append()方法在字串尾部新增字串

StringBuffer是線性安全的,StringBuilder是線性不安全的

String string = “string”; 建立1個物件,存放在字串池中,如果字串池中存在該字串,就建立0個物件

String String = new String(“string”); 建立了2個物件,1個存放在字串池中,1個存在堆區中,如果字串池中已經存在該字串,就只建立1個物件

String類的intern()方法可以返回該字串在常量池中的物件的引用

String類的toLowerCase()、toUpperCase()、replace()、trim()、subString()、concat()方法,都不會改變本身引用字串的值,而是返回一個新的字串

每當我們建立字串常量時,JVM會首先檢查字串常量池,如果該字串已經存在常量池中,那麼就直接返回常量池中的例項引用。如果字串不存在常量池中,就會例項化該字串並且將其放到常量池中。由於String字串的不可變性我們可以十分肯定常量池中一定不存在兩個相同的字串


相關文章