------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ---------
1。javac是编译器,java是运行环境。java版本高于javac版本可以正常运行,反之不行。
2。eclipse开发环境下,分为workspace-项目-包的结构,上层结构的配置改变会影响下层。
3.常用操作:alt+/自动补全; ctrl+/注释鼠标选择区域;ctrl+Shift+T打开类型;ctrl+1快速修正自定义模板:windows-首选项-java-editor
4.静态导入。如 import static java.lang.Math;
int a,b; b=cos(a); 用静态导入可以省去原来的Math.
5.可变参数。可变参数必须是参数列表中最后一个 function(String str,double d,int...is){函数体中通过is[]数组来读取 }
6.for-each循环。int[]a;for(int b:a){ 对b操作 } 等价于 for(int i=0;i<a.length;i++){int b=a[i]; 对b操作 }
7.自动装箱 Integer i=9 等价于 Integer i=new Integer(9)
8.枚举:定义枚举。任何函数都必须位于枚举元素之后。元素之间逗号,所有元素之后分号。构造函数必须为private枚举元素后面括号中写入构造函数的参数。创建枚举对象的时候会创建每一个元素,并调用每个元素对应的构造函数。
9。用普通类模拟枚举
class WeekDay{
private WeekDay(){}
public final static WeekDay Monday=new WeekDay();
......}
用抽象类模拟枚举
<span style="font-family:Microsoft YaHei;font-size:14px;"> abstract class WeekDay{
public final static WeekDay Monday=new WeekDay() {
public WeekDay nextDay() {
return Sunday; } };
public final static WeekDay Sunday=new WeekDay(){
public WeekDay nextDay() {
return Monday; } };
public abstract WeekDay nextDay();
}</span>
用抽象方法定义nextDay就将大量if-ele转换成了一个个独立的类
10.Class类是所有java类的类型,Class类的实例就是对应类的字节码。就比如同一个类的实例对象之间是代码相同而变量不同;
Person.class就是Person类的字节码要获得Class类:
(1)静态变量:Person.class
(2)实例对象的Getclass()方法(3)Class.forName("java.lang.Math") forName的功能就是加载Math类的字节码。
反射:反射就是把Java类中的各种成分映射成相应的java类
(3)Class.forName("java.lang.Math") forName的功能就是加载Math类的字节码。
反射:反射就是把Java类中的各种成分映射成相应的java类。
为什么要用反射去调用?
可以通过改变输入的字符串去控制程序运行,而不用改变代码。
(4)反射调用含有数组参数的函数:
method.invoke(...,new Object[]{new string[]{...}});
或method.invoke(...,(Object)new String[]{...});
(5)数组的字节码,维数相同类型相同class就相同
(6)数组反射:可以得到数组中某个具体元素的类型,能得到原数组是什么类型的数组。
如int[]a=new int[3];
Object[] a=new Object[]{"a",1}
a[0].getClass().getName()得到具体元素的类型
11.反射的作用:实现框架功能
(1)在写框架时,不知道要被调用的类名。在程序中无法直接new出对象,只有用反射来做。
(2)框架调用用户程序,用户程序调用工具程序,这就是框架与工具的区别。
(3)用配置文件加反射来调用hasHset和arrayList
<span style="font-family:Microsoft YaHei;font-size:14px;">Collection collection=null;
InputStream is=new FileInputStream("F:/android/my_workspace/exam/src/com/itheima/config.properties");
Properties props=new Properties();
props.load(is);
is.close();
String className=props.getProperty("className");
collection=(Collection) Class.forName(className).newInstance();</span>
------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ---------