1、 常見縮寫:
IDE -->Itegrity development environment 集成開發工具
GUI -->Graphical User Interface 圖形化界面
CLI -->Command Line Interface 命令行方式
JVM -->Java Virtual Machine Java虛擬機
JRE -->Java Runtime Environment Java運行環境
JDK -->Java Development Kit Java開發工具包
API -->Application Programming Interface 應用程序接口
Awt -->Abstract Window ToolKit 抽象窗口工具包
DNS -->域名解析服務
DOM -->document object model 文檔對象模型
TCP -->Tracsmission Control Protocol 傳輸控制協議
UDP -->User Datagram Protocol 用戶數據報協議
OSI -->Open System Interconnection 開放系統互聯參考模型
2、 面試經驗:
a. 規範代碼,規範書寫變量
b. 隨和做人,認真做事
c. 答出別人答不出的兩點
overlord與override
特點之一:當父類的方法是私有時,子類寫了一個和父類一樣的方法,不叫覆蓋
d. 升級的單個因素:
1. 提高效率;
2. 簡化書寫;
3. 提高安全性;
3、 eclipse操作:
a. myeclipse是eclipse的一個插件
b. eclipse是基於JDK的
c. 配置快捷鍵:window--->preferences--->General--->Keys--->contents
d. 一個工作空間Workspace裏面有多個工程Project
e. 視圖與透視圖
f. 高版本的JDK開發的程序低版本的JRE不能運行,高版本的JRE能運行低版本JDK開發的程序
g. 注意快捷鍵的使用和設置,在Template中設置快捷鍵
h. 通過build path中設置庫版本
i. 選中需要打印的語句Alt+/
4、 靜態導入:jdk1.5提供的
(1)import語句可以導入一個類或某個包中的所有類
(2)inport static 語句導入一個類中的某個靜態方法或所有靜態方法。
5、 JDK1.5新特性:
a. 靜態導入類庫
b. 可變參數:
1. 只能出現在參數類表的最後;
2. ...位於變量類型和變量名之間,前後有無空格都可以;
3. 調用可變參數的方法時,編譯器爲該可變參數隱含創建一個數組,在方法體中以數組的形訪問可變參數。
c. 增強for循環
語法:
for(type 變量名 : 集合變量名){...}
注意事項:
迭代變量必須在()中定義;
集合變量可以是數組或實現了Iterable接口的集合類;
d. 基本數據類型的自動拆箱與裝箱:
自動裝箱:Integer num=12;
自動拆箱:System.out.println(num+12);
Integer num1=12;//129;//Integer.valueof(12);
Integer num2=13;//129;//Integer.valueof(12);
System.out.println(num1==num2);true//false//true
-128~127在一個字節內的數字,一旦被封裝成Integer對象後,就會緩存池中,下次有要把一個數封裝成Integer對象時,首先會在池中找
這是一種設計模式:享元模式 flyweight
e. 枚舉
f. StringBuilder 1.5版本之後出現的
g. invoke中傳的參數1.5版本中是可變數組的形式,1.4版本是把參數列表封裝成一個數組再傳進來
i. Map[] map={name:"zss",age:18};java7新特性
j. 註解
k. 泛型
6、 享元模式:flyweight
如果很多很小的對象,有很多相同的東西,可以把它變成一個對象,那些不同的屬性把他們變成方法的參數,稱之爲外部狀態,那些相同的屬性稱之爲內部狀態
7、 枚舉:
a.爲什麼要有枚舉?
枚舉就是要讓某個類型的變量的取值只能爲若干個固定值中的一個,否則,編譯器就會報錯。
枚舉可以讓編譯器在編譯時就可以控制源程序中填寫的非法值,普通變量的方式在開發階段無法實現這一目標。
b.擴展:枚舉類的value, valueof, name, toString, ordinal等方法
c.總結:枚舉是一種特殊的類,其中的每個元素都是該類的一個實例對象
一個枚舉類實例:
public class EnumTest {
public static void main(String[] args) {
System.out.println(WeekDay.valueOf("SUN").toString());
System.out.println(WeekDay.values().length);
System.out.println(TrafficLamp.valueOf("RED").nextLamp());
}
public enum WeekDay {
SUN(1), // 指定參數列表
MON(), STU, WED, THT, FRI, SAT;// 後面有方法必須有“;”隔開,方法必須位於枚舉元素之後
private WeekDay() {
System.out.println("first");
}// 構造方法必須是私有的
private WeekDay(int day) {
System.out.println("second");
}
}
public enum TrafficLamp {
RED(30) {
public TrafficLamp nextLamp() {
return GREEN;
}
},
GREEN(45) {
public TrafficLamp nextLamp() {
return YELLOW;
}
},
YELLOW(5) {
public TrafficLamp nextLamp() {
return RED;
}
};
public abstract TrafficLamp nextLamp();
private int time;
private TrafficLamp(int time) {
this.time = time;
}
}
}
d. 枚舉就相當於一個類,其中也可以定義構造方法、成員變量、普通方法和抽象方法。e. 枚舉元素必須位於枚舉體中的最開始部分,枚舉元素列表的最後要有分好與其他成員分隔。
把枚舉中的成員方法或變量等放在枚舉元素的前面,編譯器報告錯誤。
f. 帶構造方法的枚舉:
構造方法必須定義成私有的
如果有多個構造方法,該如何選擇哪個構造方法?
枚舉元素MON和MON()的效果一樣,都是調用默認的構造方法。
g. 帶方法的枚舉:
定義枚舉TrafficLamp
實現普通的next()方法
實現抽象的next()方法:每個元素分別是由枚舉類的子類來生成實例對象,這些子類採用類似內部類的方式進行定義。
增加上表示時間的構造方法
h. 枚舉只有一個成員時,就可以作爲一種單利的實現方式。
8、反射的基石--->Class類
Class--->代表一類什麼樣的事物
Java程序中的各個Java類屬於同一類事物,描述這類事物的Java類名就是Class
Person p1=new Person();
Person p2=new Person();
獲取字節碼對應的實例對象(Class類型)
1. Class cls1= Person.class;//字節碼1;
2. Class cls2= p2.getClass();//字節碼2;
3. Class.forName("類名")//反射實用的主要是這一種
九個預定義Class實例對象:
Intclass==Integer.TYPE...
數組類型的的Class實例對象
Class.isArray();
總之,只要是在源程序中出現的類型,都有各自的Class實例對象,例如:int[],void,
9、 反射就是把java類中的各種成分映射成相應的java類。
10、 Constructor類:
Constructor類代表某個類中的一個構造方法
得到某個類所有的構造方法:
Constructor Constructors[]=Class.forName("java.lang.String").getConstructor(StringBuffer.class);
創建一個實例對象:
通常方式:String str=new String(new StringBuffer("abc"));
反射方式:String str=(String)constructor.newInstance(new StringBuffer("abc"));
11、 Field類 字段
Point pt1 = new Point(3, 5);
Field fieldY=pt1.getClass().getField("y");
//fieldY不代表具體的值,只是一個變量
System.out.println(fieldY.get(pt1));
Field fieldX=pt1.getClass().getDeclaredField("x");
fieldX.setAccessible(true);//取消權限校驗,暴力訪問
System.out.println(fieldX.get(pt1));
12、 Method類
Method類代表某個類中的一個成員方法
得到類中的某一個方法:
Method charAt=Class.forName("java.lang.String").getMethod("charAt",int.class);
調用方法:
通常方式;System.out.println(str.charAt(1));
放射方式:System.out.println(charAt.invoke(str,1));
如果傳遞給Method對象的invoke()方法的一個參數爲null,就就意味着什麼樣的意義呢?
說明該Method對象對應的是一個靜態方法
13、 用放射方式去調用某個類中的main方法
String startingClassName = args[0];
Method mainMethod = Class.forName(startingClassName).getMethod("main",String[].class);
mainMethod.invoke(null,new Object[]{new String[]{"123","456","789"}});
14、 數組反射:
Object[]a=new Object[]{"a",1};
a[0].getClass.getName();
15、 ArrayList、hashSet的比較及Hashcode分析
注意內存泄漏,不用的東西,沒有被釋放,還一直佔用着內存空間
16、 類加載器
配置文件的加載也是用類加載器
RefectDemo.class.getClassLoader().getResourceAsStream(目錄);
RefectDemo.class.getResourceAsStream(目錄);
在classpath指定的目錄下逐一的查找需要加載的類文件
17、 內省(IntroSpector)---JavaBean
JavaBean--->是一種特殊的Java類,他的方法的名字按照一定的規則起名字
如:int getAge();
void setAge(int age);
當方法中有以set...,get...開頭的方法名,該類就可以當作JavaBean類使用。
特點:去掉set,get,剩下的屬性名Age--->如果第二個字母是小寫的,則把第一個字母變成小寫的-->age
gettime--->time
setTime--->time
setCPU--->CPU
爲了好看考慮
當作JavaBean類處理,比較方便
public class JavaBeanDemo {
public static void main(String[] args) throws Exception {
Point p = new Point(3, 5);
String propertyName = "x";
// "x"-->"X"-->"getX"-->MethodGetX-->
// 屬性描述類,獲取一個類中的某個屬性
PropertyDescriptor pd = new PropertyDescriptor(propertyName,
p.getClass());
// 通過屬性獲取bean類型類的方法
Method methodGetX = pd.getReadMethod();
Object retVal = methodGetX.invoke(p);
System.out.println(retVal);
Method methodSetX = pd.getWriteMethod();
methodSetX.invoke(p, 8);
System.out.println(p.getX());
}
}
---------------------------------------------------------------------------
public static void main(String[] args) throws Exception {
Point p = new Point(3, 5);
String propertyName = "x";
BeanInfo beanInfo = Introspector.getBeanInfo(p.getClass());
PropertyDescriptor[]pds=beanInfo.getPropertyDescriptors();
for(PropertyDescriptor pd : pds){
if(pd.getName().equals(propertyName)){
Method methodGetX=pd.getReadMethod();
}
}
}
---------------------- android培訓 、 java培訓 、 期待與您交流! ---------------------- 詳細請查看:www.itheima.com