摘要:并沒有對方法進行加同步鎖,所以是非線程安全的。相同情況下使用相比使用僅能獲得左右的性能提升,但卻要冒多線程不安全的風險。水池異常表示程序可以處理的異常,可以捕獲且可能恢復。
一、String, StringBuffer, StringBuilder
1、可變性
(1)String類型是使用一個final修飾的字符數組,因此它是不可變的。
private final char value[];
那把String定義為不可變有什么好處呢?
安全性:當你在調用其他方法,比如調用一些系統級操作之前,可能會有一系列校驗,如果是可變類的話,可能在你校驗過后,其內部的值被改變了,可能引起嚴重的系統崩潰問題。
性能:進行哈希計算時,由于不可變性,可以只計算一次哈希值,如果設計為可變,那么就需要多次重新計算哈希值,性能上會有損耗。
(2)StringBuilder與StringBuffer都繼承自AbstractStringBuilder類,也采用字符數組存儲,但未用final修飾,因此可變
2、線程安全性
(1)String變量因不可變,可看作常量,因此是線程安全的。
(2)StringBuffer對方法加了同步鎖或者對調用的方法加了同步鎖,所以是線程安全的。 (3)StringBuilder并沒有對方法進行加同步鎖,所以是非線程安全的。
3、性能
(1)每次改變String后都會生成一個新的對象,因此性能損耗較大。
(2)StringBuffer每次都會對StringBuffer對象本身進行操作,性能較String更優。
(3)相同情況下使用StirngBuilder 相比使用StringBuffer 僅能獲得10%~15% 左右的性能提升,但卻要冒多線程不安全的風險。
4、使用場景
(1)操作少量數據用String
(2)單線程下操作大量數據用StringBuilder
(3)多線程下操作大量數據用StringBuffer
5、其他
為何推薦使用StringBuilder而不是“+”做字符串連接?
在使用“+”做字符串拼接時,是會創建一個StringBuilder去完成拼接的,但是如果是在循環中進行操作,就會每次創建一個新的StringBuffer,性能上會有損耗,因此推薦直接使用StringBuffer。
二、Collection和Collections1、java.util.Collection 是一個集合接口。很多類包括map,set等都實現了這個接口。
2、Collections是一個工具類,不能實例化,提供了有一些方法:sort等。
三、char和varchar1、char屬于固定長度字符,而varchar屬于可變長度字符,都可以用來存儲字符串。
2、使用char時,如果輸入的數目小于指定的數目,會在后面補空格;大于指定的數目時,會截取后面的部分。
https://ask.qcloudimg.com/htt...
3、varchar使用時,輸入長度+1即為實際長度,多出來的一個字節用于保存實際使用了多大的長度。
四、Object類有哪些方法1、toString()方法: toString方法返回該對象的字符串表示,其實該字符串內容就是對象的類型+@+內存地址值
2、equals()方法: 判斷這兩個對象是否是相同的,如果不進行重寫,只會判斷對象的地址是否相同,即如果不是同一個對象,就會返回false。
3、hashCode()方法:將十六進制地址值通過哈希算法換算為整值。
4、getClass()方法:獲取對象的字節碼文件(該對象運行時的類)。
五、Java中的內存泄漏Java中的內存泄漏指的是對象雖然不再被使用,但它們仍然被引用。
Vector v=new Vector(10); for (int i=1;i<100; i++) { Object o=new Object(); v.add(o); o=null; }
比如在上述這個例子中,Object對象o被加入了Vector對象v中,雖然o修改為null,這種情況下,v依然引用對象,那么這個對象對于GC來說,就是不可回收的,即產生了內存泄漏。
六、Error和Exception(繼承自同一個類)1、Error(錯誤)是系統中的錯誤,程序員是不能改變的和處理的,是在程序編譯時出現的錯誤,只能通過修改程序才能修正。(水池)
2、Exception(異常)表示程序可以處理的異常,可以捕獲且可能恢復。(水)
(1)CheckedException:(編譯時異常) 需要用try——catch顯示的捕獲,對于可恢復的異常使用CheckedException。
(2)UnCheckedException(RuntimeException):(運行時異常)不需要捕獲,對于程序錯誤(不可恢復)的異常使用RuntimeException。
比如:
NullpointerException:空指針異常(我目前遇見的最多的)
IndexOutOfBoundsException:索引超出邊界異常
注:ClassNotFoundException與NoClassDefFoundError的區別:
(1)ClassNotFoundException是指在類加載器的加載階段找不到類信息。如Class.forName(),ClassLoader.loadClass()等。
(2)NoClassDefFoundError是指在運行使用階段時卻出現了問題。如實例化依賴類找不到(刪除了.class文件)或者類本身就初始化失敗了等。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/75409.html
摘要:我的學習筆記匯總標簽筆記分為兩大部分和筆記內容主要是對一些基礎特性和編程細節進行總結整理,適合了解基礎語法,想進一步深入學習的人如果覺得不錯,請給,這也是對我的鼓勵,有什么意見歡迎留言反饋目錄基礎鞏固筆記反射基礎鞏固筆記泛型基礎鞏 我的java&javaweb學習筆記(匯總) 標簽: java [TOC] 筆記分為兩大部分:javase和javaweb javase javawe...
摘要:而面向搜索引擎,就是我們要及時的使用百度谷歌遇到問題無法解決,先別急著放棄,可以去網絡尋找答案,你的坑大部分別人都已經走過了,大部分都可以找到合適的解決方案。 showImg(https://segmentfault.com/img/remote/1460000019236352?w=866&h=456); 前言: ●眾多的語言,到底哪一門才是適合我的?●我們為什么要學習Java語言呢...
摘要:請回復這個帖子并注明組織個人信息來申請加入。版筆記等到中文字幕翻譯完畢后再整理。數量超過個,在所有組織中排名前。網站日超過,排名的峰值為。主頁歸檔社區自媒體平臺微博知乎專欄公眾號博客園簡書合作侵權,請聯系請抄送一份到贊助我們 Special Sponsors showImg(https://segmentfault.com/img/remote/1460000018907426?w=1...
摘要:請回復這個帖子并注明組織個人信息來申請加入。權限分配靈活,能者居之。數量超過個,在所有組織中排名前。網站日超過,排名的峰值為。導航歸檔社區自媒體平臺微博知乎專欄公眾號博客園簡書合作侵權,請聯系請抄送一份到贊助我們 Special Sponsors showImg(https://segmentfault.com/img/remote/1460000018907426?w=1760&h=...
摘要:最近系統整理了一套初學者最佳的學習方法以及會遇到的坑等,希望對你有所幫助。正常的智商其實,學習并不需要所謂的數學邏輯好,需要英語水平棒。大周期每天學習時間五個小時以上的,建議學習周期。三學習時會遇到的坑不知道學習的重點,下面學習路線會畫。 最近系統整理了一套java初學者最佳的學習方法以及會遇到的坑等,希望對你有所幫助。 目錄: 一、學習java的前提 二、學習java的方法 三、學習...
摘要:主頁暫時下線社區暫時下線知識庫自媒體平臺微博知乎簡書博客園合作侵權,請聯系請抄送一份到特色項目中文文檔和教程與機器學習實用指南人工智能機器學習數據科學比賽系列項目實戰教程文檔代碼視頻數據科學比賽收集平臺,,劍指,經典算法實現系列課本課本描述 【主頁】 apachecn.org 【Github】@ApacheCN 暫時下線: 社區 暫時下線: cwiki 知識庫 自媒體平臺 ...
閱讀 1536·2023-04-26 02:08
閱讀 3128·2021-10-14 09:42
閱讀 7177·2021-09-22 15:34
閱讀 3236·2019-08-30 13:16
閱讀 2718·2019-08-26 13:49
閱讀 1342·2019-08-26 11:59
閱讀 1251·2019-08-26 10:31
閱讀 2170·2019-08-23 17:19