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