java基础加强_补充笔记
生活随笔
收集整理的這篇文章主要介紹了
java基础加强_补充笔记
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
java基礎加強
1、JDK5.0新特性介紹
jdk5.0的代號為:tiger(老虎)2、靜態導入
作用:靜態導入類的某個靜態成員(包括靜態屬性和靜態方法)。語法:
import static java.lang.System.out;
import static java.util.Arrays.*;
import static java.lang.Math.*;
應用:實際開發中一般不用,因為比較抽象。
示例代碼:
import static java.lang.System.out;
import static java.util.Arrays.*;
import java.util.List;
public class Demo1 {
public static void main(String[] args) {
// out.println("aa");
// out.println("bbb");
// out.print("ccccc");
String[] ss = {"cc", "bb", "aa"};
List<String> list = asList(ss); // 把數組轉成集合 Arrays.asList(ss);
sort(ss); // 排序 Arrays.sort(ss);
// 遍歷數組
for (int i = 0; i < ss.length; i++) {
out.println(ss[i]);
}
}
}
3、自動裝箱和拆箱
裝箱:基本類型-->包裝類型拆箱:包裝類型-->基本類型
Object o = 10; // 自動裝箱+自動轉換
int i = (Integer) o; // 強制轉換+自動拆箱
小面試題:
Integer i = null; // 沒有new,說明堆里是空的。
int j = i;
答:語法無錯誤,但是不能運行,運行會報空指針異常。NullPointerException
Java的規范指出:特定的基本類型一定會被裝箱成相同的包裝類型。這些對象會被高速緩存以重復使用,并且會被當做一般對象使用。
這些特殊的值是boolean值的true和false、所有的byte值、介于-128至127的short、int、long值,以及介于\u0000與\u007F之間的任何一個char。
因此這些基本類型的包裝類的對象,是同一個對象。
4、增強for循環
增強for循環設計的目的:替換迭代器。增強for循環只能用在數組、或實現Iterator接口的集合類上。
注意:增強for循環,只適合遍歷集合數據。不適合修改或刪除元素。如果要修改或刪除使用普通for循環。
語法:
for (元素類型 元素名 :數組或實現了IteraTable接口的集合) {
System.out.println(元素名);
}
5、可變參數
注意:可變參數實際就是數組。如果需要其它參數,則要把可變參數寫在最后。即:一個方法的參數列表中,只能有一個可變參數,且必須放在最后。
在一個方法的參數列表中,不能使用多個可變參數。
語法:參數(數據類型 ... 變量名)
public int sum(int ... nums) { // 把可變參數當成數組
int sum = 0;
for (int i = 0; i < nums.length; i++) {
sum += nums[i];
}
return sum;
}
6、枚舉
enum關鍵字用于定義一個枚舉類。應用場景:當給一個變量賦值時,值只能是特定或有一定范圍時使用。
特點:
1. 枚舉類也是一種特殊形式的Java類。
2. 枚舉類中聲明的每一個枚舉值代表枚舉類的一個實例對象。
3. 與java中的普通類一樣,在聲明枚舉類時,也可以聲明屬性、方法和構造函數,但枚舉類的構造函數必須為私有的(這點不難理解)。
4. 枚舉類也可以實現接口、或繼承抽象類。
5. JDK5中擴展了swith語句,它除了可以接收int, byte, char, short外,還可以接收一個枚舉類型。
6. 若枚舉類只有一個枚舉值,則可以當作單態設計模式使用。
Java中聲明的枚舉類,均是java.lang.Enum類的孩子,它繼承了Enum類的所有方法。常用方法:
name() 返回當前對象的名稱
ordinal() 返回當前對象的索引
values() 返回枚舉類中的所有對象,此方法雖然在JDK文檔中查找不到,但每個枚舉類都具有該方法,它遍歷枚舉類的所有枚舉值非常方便。
valueOf(Class enumClass, String name) 把其它類型數據轉換為枚舉類型
7、反射
反射是框架設計的靈魂!!!反射就是把Java類中的各種成分映射成一個個的java對象(加載類時,解剖出類的各個組成部分)。
例如,一個類有:成員變量,方法,構造方法,包等等信息,利用反射技術可以對一個類進行解剖,把各個組成部分映射成一個個對象。
Class類用于表示.class文件。
如何得到某個class文件對應的字節碼文件對象:
1. Class clazz = Class.forName(""); // 根據完整類名,得到類的字節碼文件對象。
2. 類名.class;
3. 對象名.getClass();
與構造函數相關的方法:
得到public類型的構造函數
Constructor getConstructor(Class ... parameterTypes) 根據可變參數類型,得到指定的公共的構造函數。
Constructor[] getConstructors() 得到所有的公共的構造函數。
示例代碼:
clazz.getConstructor(); // 得到無參的公共的構造函數
clazz.newInstance(); // 創建此 Class 對象所表示的類的一個新實例。
clazz.getConstructor(String.class, int.class); // 得到含有兩個參數的公共的構造函數
clazz.newInstance("tom", "18"); // 創建此 Class 對象所表示的類的一個新實例。
總之,只要是在源程序中出現的類型,都有各自的Class實例對象,例如,int,voi,...
8、內省
為什么要學內省?開發框架時,經常需要使用java對象的屬性來封裝程序的數據,每次都使用反射技術完成此類操作過于麻煩,
所以SUN公司開發了一套API,專門用于操作java對象的屬性。
什么是JavaBean和屬性的讀寫方法?
通過內省技術訪問(java.beans包提供了內省的API)JavaBean的兩種方式。
1. 通過PropertyDescriptor類操作Bean的屬性
2. 通過Introspector類獲得Bean對象的 BeanInfo,然后通過 BeanInfo 來獲取屬性的描述器( PropertyDescriptor ),
通過這個屬性描述器就可以獲取某個屬性對應的 getter/setter 方法,然后通過反射機制來調用這些方法。
Beanutils工具類:
導入jar文件:
commons-beanutils-1.8.3.jar
commons-logging-1.1.1.jar
apache開源組織
9、泛型
我的GitHub地址:https://github.com/heizemingjun
我的博客園地址:http://www.cnblogs.com/chenmingjun
我的螞蟻筆記博客地址:http://blog.leanote.com/chenmingjun
Copyright ?2018 黑澤明軍
【轉載文章務必保留出處和署名,謝謝!】 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎
總結
以上是生活随笔為你收集整理的java基础加强_补充笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于libtorrent库的安装
- 下一篇: centos7 编译安装mysql-5.