黑马程序员_java技术加强

来源:互联网 发布:淘宝旺铺免费装修模板 编辑:程序博客网 时间:2024/06/06 00:56

---------------------- android培训、java培训、期待与您交流! ----------------------

进入java技术加强的学习了,自我感觉进入了一个较为高深的层次了,现在是看张孝祥老师的视频了,相比起老毕,祥叔更显稳重,毕竟两位老师都有各自不同的风格。不过在此深表遗憾的是祥叔已经不在了,是我们乃至世界的一大损失,但是他所倡导的精神却永远熠熠生辉。

视频伊始,祥叔介绍了学习java技术加强的必要性和重要性,而且还重点提到了jdk1.5的新特性,以下是本人自行从视频和相关资料中的归纳:

1.       泛型(Generics)可以指定集合的元素类型。

2.       增强的for循环(enhanced  for  loop)就是for-each

3.       自动装箱/自动拆箱(Autoboxing /unboxing)基本类型与其包装类型自动转换

4.       类型安全的枚举(Type safe enum)增加类enum,取值范围有限时使用

5.       格式化打印(formatted  print)c语言中printf()风格的格式化输出

6.       静态导入(static  import)可使被导入类的所有静态变量和静态方法在当前类直接可见

7.       可变参数(var args)可以声明一个可以接受可变数目的参数的方法

8.       元数据(Metadata)是开发者们借助厂商提供的工具可以进行更简易的开发

9.       引入StringBuilder类,该类的方法不是同步的,这使得它比StringBuffer更加轻量级和有效。

10.   控制台输入控制(Console input),在jdk1.5之前我们只能通过JOptionPane.showInputDialog 进行输入,但在1.5中我们可以通过类Scanner在控制台进行输入操作

11.   协变返回类型(Covariant  return types)jdk1.5之前我们覆盖一个方法是无法改变方法的返回类型,但在jdk1.5中可以改变。

除了以上的新特性之外,祥叔还重点讲述了反射的概念及应用,据说这个知识点是一个难点而且挺重要的。

关于反射比较精辟的一个定义是一个大学生提出来的:反射就是把Java类中各种成分映射成相应的java类。学完这节之后再来琢磨琢磨这句话,果然是至理名言。例如一个java类中一个Class 类的对象来表示,一个类中的组成部分:成员变量,方法,构造方法,包等信息也用一个个的java类来表示,就像汽车是一个类,发动机,变速箱等也都是一个个的类。表示java的Class类显然要提供一系列的方法来获得其中的变量,方法,构造方法,包等相关信息,这些信息就是用相应的实例对象来表示,它们是Field,Method, Constructor,package等等。

 反射的基石------Class类(大写C),java程序中的各个java类属于同一类事物,描述这类事物的java类名就是Class。

通俗一点的讲,Class类的对象对应的是java中各个类对应的字节码,譬如一下代码:

  Person p=new Person();//这里Person类定义了一个对象

而Class类的对象就是此Person类的字节码:

  Class  cls=Person.class;//Person类的字节码充当Class的对象。

对于如何得到各个字节码对应的实例对象(Class 类型)有三种方式:

第一,   直接类名.class,例如 System.class

第二,   通过类定义的对象获得,即对象.getClass(),例如:new Date().getClass()

第三,   通过Class类的静态方法,Class.forName(类名),例如:Class.forName(“java.lang.String”)

当然对于基本数据类型和void关键字有预定好的Class实例对象,如:boolean,byte,char,short,int,long,float和double。

还有它们所对应的类也有预定好的实例对象:

Boolean.TYPE=Boolean.class   Char.TYPE=char.class   Byte.TYPE=byte.class  

Short.TYPE=short.class      Integer.TYPE=int.class   Long.TYPE=long.class

Float.TYPE=float.class    Double.TYPE=double.class   Void.TYPE=void.class

   总之任何类型的类都可以用“.class”来表示,换句话说都有各自的Class实例对象,例如int[], void 等等。

   关于反射的其余内容,我也不再一一赘述,祥叔在视频里分析讲解的极为透彻,在此我只是写出自己学习的一点收获,希望与大家分享,并恳请大家给出批评指正意见。

 

---------------------- android培训、java培训、期待与您交流! ----------------------

原创粉丝点击