JAVA 高新技术,java高新技术
分享于 点击 5168 次 点评:64
JAVA 高新技术,java高新技术
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流!
----------------------GUI编程
JAVA 高新技术
Java ee :Java Platform,Enterprise Edition Java平台企业版
ide :Integrated Development Environment 集成开发环境
JMS: Java Message Service Java消息服务
JMX: Java Management Extensions Java管理扩展
JNDI:Java Naming and Directory Interface Java命名和目录接口
静态导入:
导入一个类下面的特定方法:
eg: import java.Math.min;
导入一个类下面的所有方法
eg: import java.Math.*;
JDK 1.5新特性
1、可变参数:
一个方法接受的参数个数不固定,例如:
System.out.println(add(1,3,11));
System.out.println(add(3,1));
public static int add(int x,int ...args){
int sum =x;
for(int i = 0;i<args.length;i++){
sum += args[i];
}
}
2、增强for循环
语法:
for(type 变量名:集合变量名){...}
public static int add(int x,int ...args){
int sum =x;
//原有写法
/*
for(int i = 0;i<args.length;i++){
sum += args[i];
}
*/
//增强写法
for(int arg :args){
sum+=args[i];
}
}
3、基本数据类型的自动装箱与拆箱
享元模式(flyweight)
自动装箱:
将一个int类型的数据封装成一个Integer对象
Integer num1=12;
自动拆箱:
将一个Integer对象自动转换为一个一个int类型的数据
System.out.println(num1+13);
自动装箱和拆箱只能针对-128~+127之间的整型数据
Integer num1 =10;
Integer num2 =10;
System.out.println(num1==num2); ------->true
Integer num3=133;
Integer num4=133;
System.out.println(num3==num4); ------->false
享元模式:把具有相同属性的一类对象的同一属性封装成一个对象,其他的特有属性则封装为方法,这样可以大大减小内存的占用。
4、枚举类的实现
枚举的定义:
简单定义方法demo:
public enum WeekDay{
SUN,MON,TUE,WED,THU,FRI,SAT
}
public static void main(String[] args){
WeekDay mon =WeekDay.MON;
System.out.println(mon);
}
较为复杂的定义方法demo:
public enum TrafficLamp{
RED(30){
@Override
public TrafficLamp nextLamp() {
// TODO Auto-generated method stub
return GREEN;
}},
GREEN(45){
@Override
public TrafficLamp nextLamp() {
// TODO Auto-generated method stub
return YELLOW;
}},
YELLOW(5){
@Override
public TrafficLamp nextLamp() {
// TODO Auto-generated method stub
return RED;
}};
public abstract TrafficLamp nextLamp();
private int time;
private TrafficLamp(int time){
this.time= time;
}
private TrafficLamp(){
}
}
5、Class类——反射的基石
Java程序中的各个Java类属于同一类事物,描述这类事物的Java类名就是Class
Class类的实类对象即为各个类在内存中的字节码,例如,Person类的字节码,ArrayList类的字节码
获得类的字节码方法:
(1)类名.class 如:System.class
(2)对象.getClass 如:new Date().getClass();
(3)Class.forName(),如:Class.forName("java.util.Date");
6、反射——实现框架功能
反射就是把Java类中的各种成分映射成相应的java类。
Constructor类------->构造方法
Field类----------->成员变量
ReflectPoint pt = new ReflectPoint(23,23);
Field fieldY = pt.getClass().getField("y");
int temp = fieldY.get(pt);
Field fieldX = pt.getClass().getDeclaredField("x");
filedX.setAccessible(true);
int tempx = fieldX.get(pt);
成员变量反射demo:
private static void changStringValue(Object obj)throws Exception{
Field[] fields = obj.getClass().getFields();
for(Field field:fields){
if(field.getType()==String.class){
String oldValue = (String)field.get(obj);
String newValue = oldValue.replace('b','a');
field.setValue(obj,newValue);
}
}
}
Method类---------->类中的方法
String str = new String("abcdefg");
Method methodCharAt = String.class.getMethod("charAt", int.class);
System.out.println(methodCharAt.invoke(str, 3));
框架与框架要解决的核心问题
我做房子卖给用户住,由用户自己安装门窗和空调,我做的房子就是框架,用户需要使用我的框架,把门窗插入我提供的框架中,框架与工具类有区别,工具类被用户的类调用,而框架则是
调用用户提供的类。
7、类加载器:
将配置文件放在classpath目录下,利用类加载器来加载配置文件
Test.class.getClassLoader().getResourceAsStream("config.properties");
Test.class.getResourceAsStream("config.properties");
8、内省——JavaBean
int getAge()
void setAge(int age)
符合上述规则的类就可以称为JavaBean类
JDK中提供了对JavaBean进行操作的一些API,这套API就称为内省,用内省这套APPI操作JavaBean比用普通类的方式更方便
int x = 10;
String propertyName = "x";
PropertyDescriptor pd = new PropertyDescriptor(propertyName,pt.getClass());
Method methodGetX = pd.getReadMethod();
Object retVal = methodGetX.invoke(pt);
Method methodSetX = pd.getWriteMethod();
methodSetX.invoke(pt,5);
利用工具包进行操作
BeanUtils.setProperty(pd,"x","100");
BeanUtils.getProperty(pd,"x");
PropertyUtils.setProperty(pd,"x","100");
9、注解的应用
注解类
@interface A{
}
应用了“注解类”的类
@A
Class B{
}
对“应用了注解类的类”进行反射操作的类
Class C{
B.class.isAnnotionPresent(A.class);
A a =B.class.getAnnotion(A.class);
}
10、泛型
泛型是提供给Java编译器使用的,可以限定集合中的输入类型,让编译器挡住源程序的非法输入,编译器编译带类型说明的集合时会去掉“类型”信息,是程序运行效率不受影响,对于参数
化的泛型定义,getClass()方法的返回值和原始类型完全一样,由于编译生成的字节码会去掉泛型的类型信息,只要能跳过编译器,就可以往某个泛型集合中加入其他类型的数据,例如,用
反射得到集合,再调用其add方法即可。
?:表示任意类型,使用?通配符可以引用其他各种参数化的类型,?通配符定压抑的变量主要用作引用,可以调用与参数化无关的方法,但是不能调用与参数化有关的方法。
限定通配符的上边界
Vector<? extends Number> x =new Vector<Integer>();
限定通配符的下边界
Vector<? super Number> y = new Vector<Object>();
泛型的简单应用:
public class Test {
public static void main(String[] args){
String str[] = new String[]{"abc","def","ghi"};
swap(str,1,2);
for(int i=0;i<str.length;i++){
System.out.println(str[i]);
}
}
//泛型方法:
private static <T> void swap(T[] a,int i,int j){
T temp = a[i];
a[i] = a[j];
a[j] = temp;
}
private static <T> T add(T x, T y){
return null;
}
}
CRUD:数据库的增删改查
//泛型类:
public class Test {
public static void main(String[] args){
}
public class GenericDao<E>{
public void add(E x){
}
}
}
通过反射找回泛型的具体类型:
Method m = Test.class.getMethod("applyVector", Vector.class);
Type[] t = m.getGenericParameterTypes();
ParameterizedType pType = (ParameterizedType) t[0];
Type[] temp = pType.getActualTypeArguments();
System.out.println(temp[0]);
11、Java类加载器
Java虚拟机中可以安装多个类加载器,系统默认有三个主要的类加载器,每个类负责加载特定位置的类:
BootStrap,ExtClassLoader,AppClassLoader
相关文章
- 暂无相关文章
用户点评