2015年1月17日 20:36:55
如标题。JAVA基础的自学。大概就是看基础的JAVA书然后弄出来的一些点吧。当作备忘录用。缓慢书写。
啊。今天先把家里电脑的环境什么的部署好再说。。← ←。over。
话说。是不是。。太偷懒了。。。哈哈哈哈。。
2015年1月17日 20:44:09
2015年1月20日 09:01:31
第五章 继承
5.4包装器与打包
·对象包装器类为final类,构造后不可更改内部数值;
·自动打包 list.add(3); → list.add(new Ineger(3));
·字符串转换成整形 int
x=Integer.parstInt(s);
5.5参数数量可变的方法
·printf接收两个参数:格式字符串,Object[]数组
5.6枚举类
·比较两个枚举类的值时,不要调用equals,而直接使用“==”即可
·所有的枚举类都是Enum类的子类
·每个枚举类都有一个values方法,返回全部枚举值数组
·运行中分析类的能力;
·运行中查看对象;
·实现数组的操作代码;
·利用Method对象,类似C++中函数指针;
①Class类
Class类保存着运行时所有对象所属的类;Object类中getClass()可以返回Class类;静态方法forName()获得类名对应的Class对象。
·可直接用==来实现两个类的对比:if(e.getClass()==Employee.class)
·可用newInstance()快速构造一个与e同类的实例:e.getClass().newInstance();
②捕获异常:捕获异常处理器(handler)
没有提供捕获异常处理器程序会终止,并输出异常信息类型
·已检查异常:编译器会检查是否提供给了处理器
·未检查一场:编译器不会检查是否提供给了处理器,如null应用
Class.forName抛出已检查异常:try{ } catch{ }
③分析包的能力
Field,Method,Constructor分别用于描述类的域,方法,构造器; 均可用getName方法返回项目名称;
Field类可用getType返回描述域所属类型的Class对象;
getFields,getMethods,getConstructors将返回public域,方法,构造器数组;包括超类的公有成员;
getDeclareFields,getDeclareMethods,getDeclaredConstructors将返回类声明中的全部域,方法,构造器;
④利用反射分析对象
查看对象域的方法Field类get方法:f为Field类对象,obj为包含f域的类的对象,f.get(obj)将返回一个对象
AccessibleObject类的setAccessible方法为Field,Method,Constructor的公共超类;
数值不是对象查看salary域,用Field类中的getDouble方法(反射机制会自动将域值打包到对象包装器中);
⑤使用反射编写泛型数组代码
java.lang.reflect包中Array类允许动态地创建数组;静态方法newInstance:
调用:Object newArray=Array.newInstance(componentType,newLength);提供元素类型&数组长度;
获取数组长度:Aaary.getLength(a):
⑥方法指针
Method类中invoke方法:调用包装在当前Method对象中的方法:Object invoke(Object obj...args);
invoke的参数和返回值为Object类型
5.8继承设计的技巧
·将公共操作和域放在超类中;
·不要使用受保护的域;
·使用记成实现“is-a”关系;
·除非所有继承的方法都有意义,否则不要使用继承;
·覆盖方法时,不要改变预期行为;
·使用多态,而非类型信息;
·不要过多的使用反射