java基礎知識匯總(持續更新中....)
1.java四大特性:抽象、繼承、封裝,多態
構造函數:
http://blog.csdn.net/qq_33642117/article/details/51909346
2.java數據基本類型:byte short int long double float char boolean,
包裝類型:Boolean,Character,Byte,Short,Integer,Long,Float,Double
Integer :整型變量的值在-128-127之間時不會new新的對象,而是直接引用常量池中的Integer對象
,當增形變量的值不在-128-127之間時直接new新對象
public class Test03 { public static void main(String[] args) { Integer f1 = 100, f2 = 100, f3 = 150, f4 = 150; System.out.println(f1 == f2);//結果為true System.out.println(f3 == f4);//結果為false } }
3.靜態代碼塊:靜態代碼塊在類加載時執行,且只執行一次
ps: 在new對象之前加載 例:
public class StaticTest { public static void main(String[] args){ new Test1(); new Test1(); } } class Test1{ public Test1(){ System.out.println("Test1構造方法"); } static{ System.out.println("我是靜態代碼塊,先執行我!!"); } }
執行結果
我是靜態代碼塊,先執行我!! Test1構造方法 Test1構造方法
4.jvm內存中棧stack 堆heap 方法區method area
棧:定義基本數據變量,對象引用,函數調用的現場保存
堆:new關鍵字 創建對象 GC(垃圾收集器管理)的主要區域
方法區和堆都是各個線程共享的內存區域,
String str = new String("hello");
str放在棧中,new的字符串對象放在堆中, hello放在方法區的常量池中
https://www.cnblogs.com/dingyingsi/p/3760730.html
5.StringBuffer與StringBuider區別
StringBuffer支持並發操作,線程安全,適合多線程, 作用:String是不可改變
其屬性不可改變,當對String對象操作的時候可能會產生大量的中間字符串對象,造成
因此使用可以改變的StringBuffer
StringBuider 不支持並發操作,線程不安全,不適合多線程,單線程中性能高
https://www.cnblogs.com/A_ming/archive/2010/04/13/1711395.html
str.intern() 的作用:會將共享池中的字符串與外部的字符串s進行比較,如果共享池中已經有
與之相等的字符串,則不會將外部的字符串放入共享池,返回的也是共享池中的
字符串,如果不同則將外部的字符串放入共享池中,並返回其字符串的句柄
-------這樣做的好處就是節省空間。
//常量池中本來就不含有jva字符,所以new的jva會放入常量池,屬於同一個對象,返回true String s1 = new StringBuilder("j").append("va").toString(); System.out.println(s1.intern()==s1);//true //常量池中本身就有字符串java所以返回的並不是同一個字符串 s2.intern()返回常量池中的 //java s2為new的字符所以不相等返回false String s2 = new StringBuilder("ja").append("va").toString(); System.out.println(s2.intern()==s2);//false */
6.泛型:
https://www.cnblogs.com/lwbqqyumidi/p/3837629.html
java基礎知識匯總(持續更新中....)