自十萬個爲何以後。。。
html
(來源百度)
JDK
JDK:Java Development Kit
含義:Java開發工具包 java
JRE
全名:Java runtime environment
含義:Java運行環境 api
JVM
全名:Java Virtual Machine
含義:Java虛擬機 數組
①基本數據類型(也稱原始數據類型) :byte,short,char,int,long,float,double,boolean
。他們之間的比較,應用雙等號(==
),比較的是他們的值。
②引用數據類型:當他們用(==
)進行比較的時候,比較的是他們在內存中的存放地址(確切的說,是堆內存地址)。ide
str = new String("hello"),str = "hello"
的內存分配,以及區別?String str1 = new String("hello");
String str2 = "hello";
String str3 = "hello";
複製代碼
此時在建立str3
的時候會去檢查常量池
裏面是否有"hello"
這個字符串,若是有的話則不建立,直接地址指向。
用String str="";
這種方式建立的字符串都是在常量池
中存在。
用new String("")
來建立的字符串都是在堆中開闢空間
。
函數
📌注
:常量池:常量池(constant pool)
指的是在編譯期被肯定,並被保存在已編譯的.class
文件中的一些數據。它包括了關於類、方法、接口等中的常量,也包括字符串常量。工具
1.寄存器
:最快的存儲區, 由編譯器根據需求進行分配,咱們在程序中沒法控制.
2. 棧
:存放基本類型的變量數據和對象的引用,但對象自己不存放在棧中,而是存放在堆(new
出來的對象)或者常量池中(字符串常量對象存放在常量池中。)
3. 堆
:存放全部new出來的對象。
4. 靜態域
:存放靜態成員(static定義的)
5. 常量池
:存放字符串常量和基本類型常量(public static final)
。
6. 非RAM存儲
:硬盤等永久存儲空間
開發工具
⭐普通類 與 抽象類:
一、普通類能夠去實例化調用;抽象類不能被實例化,由於它是存在於一種概念而不非具體。
二、普通類和抽象類均可以被繼承,可是抽象類被繼承後子類必須重寫繼承的方法,除非自類也是抽象類。spa
⭐抽象類 與 接口:
一、抽象類 和 接口 都是用來抽象具體對象的. 可是接口的抽象級別最高
二、抽象類能夠有具體的方法 和屬性, 接口只能有抽象方法和不可變常量
三、抽象類主要用來抽象類別,接口主要用來抽象功能.
四、抽象類中,且不包含任何實現,派生類必須覆蓋它們。接口中全部方法都必須是未實現的。
五、接口是設計的結果 ,抽象類是重構的結果設計
📌使用方向:當你關注一個事物的本質的時候,用抽象類;當你關注一個操做的時候,用接口。
List、Set、Map
集合ArrayList
建立初始化:4種方式
public static void main(String[] args) {
/** * Arrays.asList方法初始化 */
List<String> list1 = new ArrayList<String>(Arrays.asList("str1","str2","str3"));
/** * 雙大括號初始化(double brace initialization)或者匿名內部類初始化法 * 這種方法必定程度上使代碼更簡潔,但同時可能下降可讀性; * 使用雙大括號初始化會致使內部類文件的產生,而這個過程就會影響代碼的執行效率; * ⭐不推薦使用 */
@SuppressWarnings("serial")
List<String> list2 = new ArrayList<String>(){{
add("str1");
add("str2");
add("str3");
}};
/** * 普通初始化 */
List<String> list3 = new ArrayList<>();
list3.add("str1");
list3.add("str2");
list3.add("str3");
/** * Collections.ncopies初始化 * 把element複製count次填入list4中 */
int count = 5;
String element = "hello";
ArrayList<String> list4 = new ArrayList<String>(Collections.nCopies(count, element));
}
複製代碼
增:
add(String e) :boolean add(int index, String element) :void addAll(Collection<? extends E> c) :boolean addAll(int index, Collection<? extends E> c) :boolean 複製代碼
刪&過濾:
remove(Object obj) :boolean remove(int index) :String removeAll(Collection<?> c) :boolean removeIf(Predicate<? super E> filter) :boolean //過濾 list3.removeIf(o -> o.indexOf('3') > -1);
list3.removeIf(new Predicate<String>() {
@Override
public boolean test(String t) {
return t.indexOf('4') > -1;
}
});
複製代碼
改:
E set(int index, E element) 複製代碼
查:
int indexOf(Object o) int lastIndexOf(Object o) boolean contains(Object o) 複製代碼
Vector
能夠往其中隨意插入不一樣類的對象,即不需顧及類型也不需預先選定向量的容量,並能夠方便地進行查找。
api:
www.runoob.com/java/java-v…
建立初始化:
不帶參數的構造函數初始化
Vector v;//初始化一個size爲0的vector
帶參數的構造函數初始化
Vector v(10);//初始化size,但每一個元素值爲默認值
Vector v(10,"hello");//初始化了10個值爲hello的元素
經過同類型的vector初始化
Vector v(10,"hello");
//經過v初始化
Vector v2(v);
複製代碼
增:
boolean add(Object o);
void add(int index, Object element);
boolean addAll(Collection c);
boolean addAll(int index, Collection c);
void addElement(Object obj);
void insertElementAt(Object obj, int index);
複製代碼
刪:
void clear();
複製代碼
查:
boolean contains(Object elem);
複製代碼
LinkedList
建立初始化:
複製代碼
Queue
HashSet
TreeSet
LinkedHashSet
HashMap
TreeMap
HashTable
Array
與 ArrayList
區別?Array([])
:最高效;可是其容量固定且沒法動態改變;
ArrayList
: 容量可動態增加;但犧牲效率;
對象數組與基本類型數組在運用上幾乎如出一轍,惟一差異在於,前者持有得是reference
,後者直接持有基本型別之值; 例如:
String[] objArr = new String[100];
int[] basArr = new int[10];
複製代碼
Arrays
工具類用於對數組操做的工具類
1,二分查找,數組須要有序
binarySearch(int[])
binarySearch(double[])
2,數組排序
sort(int[])
sort(char[])……
3,將數組變成字符串。
toString(int[])
4,複製數組。
copyOf();
5,複製部分數組。
copyOfRange():
6,比較兩個數組是否相同。
equals(int[],int[]);
7,將數組變成集合。
List asList(T[]);
複製代碼
Collections
工具類1, 對list進行二分查找:
前提該集合必定要有序。
int binarySearch(list,key);
//必須根據元素天然順序對列表進行升級排序
//要求list 集合中的元素都是Comparable 的子類。
int binarySearch(list,key,Comparator);
2,對list集合進行排序。
sort(list);
//對list進行排序,其實使用的事list容器中的對象的compareTo方法
sort(list,comaprator);
//按照指定比較器進行排序
3,對集合取最大值或者最小值。
max(Collection)
max(Collection,comparator)
min(Collection)
min(Collection,comparator)
4,對list集合進行反轉。
reverse(list);
5,能夠將不一樣步的集合變成同步的集合。
Set synchronizedSet(Set<T> s) Map synchronizedMap(Map<K,V> m) List synchronizedList(List<T> list) 複製代碼
Iterator
是什麼?