传智播客java培训2010年4月16日JAVA高新技术总结(1)
今天晚上有一个小小的成就,因为帮助同寝室的同学解决了一个.js方面的问题,学了JQuery也算是没有白学。室友很优秀,虽然只有高中学历,但是完全不比我们班上的本科生差,他有自己的梦想,也有自己的人生规划,同时,最值得我学习的就是,他有着与一般人所没有的坚持和严格的作息时间,他可以做到说十二点睡觉就睡觉,不拖沿。
今天晚上白天的课是ORACLE安装和基本SQL的讲解,所以留着明天把SQL多表查询之后一起进行总结,今天回寝室删悼了以前安装好的ORACLE之后,安装并不顺利。但今天,我又听到了老师讲到的案例故事,一个同学去笔试其实很大我一部分题都是JAVA基础方面的内部,该同学说:其实只有把JAVA基础学打牢固了,其实还是不难!听到这句话,也不是我想临时报佛脚,我也一直都有把JAVA基础的高级部分深入的学习一下,特别是,比如反射,AOP,注释,在后期的学习中有着致关重要的影响,因为框架的使用中,都用到了这些知识,如果对这些知识的了解和掌握了,就可以很轻松的理解这些思想。所谓万丈高楼从低而起,基础是真的很重要,这也是我学这么久的JAVA以来,以及以前的学习过程中体会到的。
1.自动装箱,装箱。
享元模式 :有很多个小的对象他们有很多的属性相同,把他们变成一对象,那些不同的属性变得方法的参数,作为外部状态,相同的属性作为内部状态。
2.反射
1.当我们想到用什么来封装一个人的与有共性时,我们会想到用一个Person类来封装人的名字,性别,身高等属性以及方法。但是,又想一样,是不是所有的方法都有他们的共性呢?有没有这样一个类,用来封装所有类的共有属性呢?有,JAVA提供了这样一个类,就Class。这就是我们要学习反射时,要操纵的一个类。
2.得到一个类的Class对象有三种方法:(以Person为例),使用的机会都很高,第三种是我们在反射中经常说到的!
a) Person.class
b) Person p = new Person(); p.getClass();
c) Class.forName(Person);
3.所有的基本类型,包装类型以及void都有自己的 class对象。包装类与基础类型的class对象不相同。共享一个class对象。总之,只要在程序中出现的类型都有class与之对象。
4.文凭的重要性!!张老师说的话真是句句精辟,这样才是人类灵魂的工程师噻!虽然他说是想学校多招学生,但他同时更提到的是学历对于学生的重要性!感慨万千!!
5.Constructor类
a) 代表一个类中的一个构造方法。
1. Constructor[] cns = Class.forName().getConstructor();
a) 根据传入参数来选择。这儿用到了JDK1.5新特性,动态传参。
b) 反射的使用会降低程序的性能。
c) 一个类生成的对象共享一个Field,ReflectPoint 有两个属性x,y
ReflectPoint pt1 = new ReflectPoint(3,6);
ReflectPoint pt2 = new ReflectPoint(3,7);
Field field = pt1.getClass().getField("y");
System.out.println(field.get(pt2));//输出7
System.out.println(field.get(pt1));//输出6
从上面的案例可以证明,class对象在同一类生成对象的是共享的。
//利用反射改变对象的属性的方法
// Field对象代码一个域对象,类型一个类中的属性,这儿的数据得到了一个类中的所有的域对象
Field[] fields = pt3.getClass().getFields();
for (Field f : fields) {
// f.getType()得到属性的类型
if (f.getType() == String.class) {
// System.out.println(f.get(pt3));
// 得到值
String oldValue = (String) f.get(pt3);
// 替换
String newValue = oldValue.replaceAll("b", "a");
// 重新赋值
f.set(pt3, newValue);
}
}
}
//利用方法去调用一个对象的方法,以字符串为例:
//利用反射调用String的方法
String str1 = "abcd";
String s2 = str1.substring(0,3);
//Method是对方法的封装
//getMethod访求第一个参数是方法名,第二个代表参数的类型,同时是可变长度
Method method = String.class.getMethod("substring", int.class,int.class);
//调用方法
String s3 = (String) method.invoke(str1,0,3);
不知不觉就一点了呵!睡觉,明天还得继续奋斗!加油,冉平!