---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ---------------------
一.java5的静态导入
1.import与import static语句的区别:
import语句可以导入一个类或某个包中的所有类
import static 语句导入一个类中的某个静态方法或所有静态方法。
例:
import java.lang.* 一般的是导入一个包中的类。
import static java.lang.Math. max; 导入Math类中的max静态方法。
import static java.lang.Math.*; 导入Math类中的所有静态方法。
二.可变参数Varibleparameter
1.可变参数
1)问题:一个方法接受的参数个数不固定,例如:
System.out.println(add(2,3,5));
System.out.println(add(1,2,3,5));
2)可变参数的特点:
<1>只能出现在参数列表的最后;
<2>...位于变量类型和变量名之间,前后有无空格都可以;
<3>调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,
在方法体中以数组的形式访问可变参数。
三.java5的增强for循环
1.增强for循环
1)语法:for(type 变量名:集合变量名){...}
2)注意事项:
迭代变量必须在()中定义!
集合变量可以是数组或实现了Iterable接口的集合类。
3)举例:
public static int add(int x,int ... args)
{
int sum = x;
for(int arg : args)
{
sum += arg;
}
return sum;
}
四.Class类
1.反射的基石:Class类
1)java程序中的各个java类属于同一类事物,描述这类事物的java类名就是Class.
2)对比提问:众多的人用一个什么类表示?众多的java类用一个什么类表示?
人-->Person
Java类-->Class
3)对比提问:Person类代表人,它的实例对象就是张三,李四这样一个个具体的人,Class
类代表Java类,它的各个实例对象又分别对应什么呢?
<1>对应各个类在内存中的字节码,例如:Person类的字节码,ArrayList类的字节码,等等。
<2>一个类被类加载器加载到内存中,占用一片存储空间,这个空间里面的内容就是类的字节码,
<3>不同的类的字节码是不同的,所以它们在内存中的内容是不同的,这一个个空间可分别用一个个
的对象来表示,这些对象显然具有相同的类型,这个类型是什么呢?
4)如何得到各个字节码对应的实例对象(Class类型)
<1>类名.class,例如:System.class
<2>对象.getClass(),例如:new Date().getClass()
<3>Class.forName("类名"),例如:Class.forName("java.util.Date")//查询或加载
2.class与Class的区别:
class是指java类,java类用于描述一类事物的共性,该类事物有什么属性,没有什么属性,至于这个属性的值是什么,则由这个类的实例对象来确定,不同的实例对象有不同的属性值。
java程序中的各个类,也属于同一类事物,Class类是用来描述java程序中的各个java类这一事物的,Class类描 述了类的名字,类的访问属性,类所属的包名,字段名称的列表,方法名称的列表等等。
3.Class.forName("java.lang.String");中forName()的作用:
返回字节码。有两种方式:第一,字节码已加载过。第二,字节码未被加载过,在java虚拟机中还不存在,
则用类加载器去加载,然后缓存到虚拟机中,以后就不用再加载了。
五.反射概念
反射就是把Java类中的各种成分映射成相应的java类。例如,一个java类可用一个Class类的对象来
表示,一个类中的组成部分有:成员变量,方法,构造方法,包等等信息也可用一个个的java类来
表示,就像汽车是一个类,汽车中的发动机,变速箱等等也是一个个类。表示java类的Class类显然
要提供一系列的方法,来获得其中的变量,方法,构造方法,修饰符,包等信息,这些信息就是用
相应类的实例对象来表示,它们是Field,Method,Contructor,Package等等。
一个类中的每个成员都可以用相应的反射API类的一个实例对象来表示,通过调用Class类的方法
可以得到这些实例对象。然后再使用这些对象。
六.JavaBean
1.内省:英文是Intorspector ,它主要用于对JavaBean进行操作。
2.JavaBean:
1)JavaBean是一种特殊的java类,主要用于传递数据信息,这种java类中的方法主要用于访问私有的
字段,且方法名符合某种命名规则。
2)如果要在两个模块之间传递多个信息,可以将这些信息封装到一个JavaBean中,这种JavaBean的实例对象
通常称之为值对象(Value Object,简称VO)。这些信息在类中用私有字段来存储,用set()和get()
方法来设置和获取。
3)通过提供的set和get方法就知道属性名,一个类被当作JavaBean使用时,JavaBean的属性是根据方法名
推断出来的,它根本看不到java类内部的成员变量。如果第二个字母是小写的,则把第一个字母变成小写的。
4)符合JavaBean特点的类可以当做一个JavaBean来使用,比普通类操作更方便,快捷。
七.注解Annotation
1.注解的定义和作用
1)注解相当于一种标记,在程序中加了注解就等于为程序打上了某种标记。java编译器,开发工具,
和其他程序可以用反射来了解你的类及各种元素上有无何种标记,看你有什么标记,就去干相应
的事。标记可以加在包,类,字段,方法,方法的参数以及局部变量上。
2)一个注解就是一个类,使用一个注解就相当于创建了一个注解类的实例对象。
2.java提供的几个基本注解
1)@SuppressWarnings压制警告注解
使提示不再出现。如:@SuppressWarnings("deprecation")//不再提示过时
2)@Deprecated使过时注解
标识某个方法或类等已过时,以告诉新人以后尽量不要再使用该方法,同时又 不会影响以前的老程序。
3)@Override覆盖注解
在子类覆盖父类方法时,将非法的覆盖标识出来(或使不正确的覆盖报错),以便修正。
3.注解的应用结构图
注解类
@interface A
{
}
应用了"注解类"的类
@A
class B
{
}
对"应用了注解类的类"进行反射操作的类
class C
{
B.class.isAnnotionPresent(A.class);
A a = B.class.getAnnotion(A.class);
}
八.类加载器
1.类加载器
1)类加载器及其作用:
字节码的原始信息存放在硬盘上的classpath指定的目录下,java程序用到某个类,虚拟机要先
将该类的字节码加载到内存里,进行处理后得到的就是字节码。实现这个过程的机制就是类加载器,
其作用就是加载类。
2)类加载器BootStrap
类加载器也是java类,因为其他是java类的类加载器本身也要被类加载器加载,显然必须有
第一个不是java类的类加载器,它就是BootStrap.
BootStrp是JVM里的第一个类加载器,它不是java类,不需要被加载,它是嵌套在JVM内核里的,
它是用C++写的二进制代码。
3)java虚拟机中可以安装多个类加载器,系统默认三个主要类加载器,每个类负责加载特定
位置的类:
1)类加载器及其作用:
字节码的原始信息存放在硬盘上的classpath指定的目录下,java程序用到某个类,虚拟机要先
将该类的字节码加载到内存里,进行处理后得到的就是字节码。实现这个过程的机制就是类加载器,
其作用就是加载类。
2)类加载器BootStrap
类加载器也是java类,因为其他是java类的类加载器本身也要被类加载器加载,显然必须有
第一个不是java类的类加载器,它就是BootStrap.
BootStrp是JVM里的第一个类加载器,它不是java类,不需要被加载,它是嵌套在JVM内核里的,
它是用C++写的二进制代码。
3)java虚拟机中可以安装多个类加载器,系统默认三个主要类加载器,每个类负责加载特定
位置的类:BootStrap,ExtClassLoader,AppClassLoader
----------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------