JAVA——基础知识加强

来源:互联网 发布:金蝶erp软件 编辑:程序博客网 时间:2024/06/06 03:09


JAVA培训,物联云培训


overLoad vs override




jdk1.5新特性:




package baseStrengthen;
import static java.lang.Math.*;
public class StaticImport
{
public static int add( int x ,int ... args)
{
int sum=x;
// for(int y=0; y<args.length; y++)
// {
// sum += args[y];
// }

for(int arg:args)
{
sum += arg;
}
return sum;

}
public static void main(String[] args)
{

theNew();
// System.out.println(add(2,3,4));
// System.out.println(max(3,6));
}

// JDK1.5新特性,自动拆箱和装箱
public static void theNew()
{
Integer i = 3;
System.out.println(i+32);
// -128 到 127 在一个字节范围内 ,就不再创建新的对象了,所以属于
同一个对象,如果不在这个范围内,就不是同一个对象。
// 这也是一个模式,叫做享元模式,flyweight


Integer i1 =127;
Integer i2 = 127;
Integer i3 = 137;
Integer i4 = 137;
System.out.println(i1==i2);
System.out.println(i3==i4);

}

}




枚举:JDK1.5的一个新特性,比较重要,以前是 C语言里面的东西,
现在又把以前的东西找回来。


把某些数据类型的值固定,只能使用固定的那几个值,除此之外不能使用其他的值。


 枚举就相当于是一个类,枚举里面元素,成员,就相当于是对象。
枚举的构造方法必须是私有的,在枚举的后面跟上一个括号()就表示要使用哪个构造方法。
枚举的关键字,enum相当于class.




外部类只有默认的和public修饰,内部类可以有四个修饰符号,public private,protected,默认的。


枚举后面用大括号,表示他的匿名内部子类。




package baseStrengthen;


public class EnumDemo
{
public static void main(String[] args)
{
// WeekDay weekDay = WeekDay.SUN;
//// System.out.println(weekDay.nextDay());
//
// WeekDay1 weekDay1 = WeekDay1.FRI;
// System.out.println(weekDay1);
// System.out.println(weekDay1.name());
// System.out.println(weekDay1.ordinal());
// System.out.println(WeekDay1.valueOf("SUN").toString());



}

public enum WeekDay1
{
// 元素列表必须是第一行
SUN(2),MON(),TUE,WED,THI,FRI,SAT;
private WeekDay1()//枚举的构造方法必须是私有的。
{
System.out.println("first");
}
private WeekDay1(int day)
{
System.out.println("second");
}

}

public enum TrafficLamp
{
RED
{
public TrafficLamp nextLamp()
{
return GREEN;
}
},
GREEN
{
public TrafficLamp nextLamp()
{
return YELLOW;
}
},
YELLOW
{
public TrafficLamp nextLamp()
{
return RED;
}
};
public abstract TrafficLamp nextLamp();
}


}




反射机制,
Class是一个大写的类,是一个类的名字叫Class.


Person p1 = new Person();
Person p2 = new Person();


得到字节码的几种方式:
Class cls1 = Date.class//Date类型的字节码;


p1.getClass();
Class.forName("java.lang.String");


有九个预定义的Class对象。


isPrimitive();是否是基本数据类型或者叫是否是原始类型。
isArray();是否是数据类型。




反射:
反射就是把JAVA类中的各种成分映射成相应的JAVA类,反射是用于做框架用的。




Method类,Constructor类。


反射比较占用性能,会导致程序性能严重下降






package baseStrengthen;


public class ReflectTest
{
public static void main(String[] args)throws Exception
{
String str1 = "dalkfj";
Class cls1 = str1.getClass();
Class cls3 = String.class;
Class cls2 = Class.forName("java.lang.String");


System.out.println(cls2==cls1);
System.out.println(cls1==cls3);
System.out.println(str1.getClass().isPrimitive());//是否是基本数据类型
System.out.println(int.class.isPrimitive());//是否是基本数据类型
System.out.println(int.class==Integer.class);
System.out.println(int.class == Integer.TYPE);


}
}




JUnit:JAVA测试工具,用于测试程序的,测试程序建议使用JUnit。


私有的构造函数不可以被外面的访问,但是反射可以做到这一点。
































































































































































原创粉丝点击