关闭

Java总结杂记

95人阅读 评论(0) 收藏 举报

JDK升级的目的:1.简化书写;2.提高效率;3.增加安全性。
JDK 1.5特性:
1.自动装箱与拆箱:自动装箱的过程:每当需要一种类型的对象时,这种基本类型就自动地封装到与它相同类型的包装中。自动拆箱的过程:每当需要一个值时,被装箱对象中的值就被自动地提取出来,没必要再去调用intValue()和doubleValue()方法。自动装箱,只需将该值赋给一个类型包装器引用,java会自动创建一个对象。自动拆箱,只需将该对象值赋给一个基本类型即可。java——类的包装器类型包装器有:
Double,Float,Long,Integer,Short,Character和Boolean

2.枚举
把集合里的对象元素一个一个提取出来。枚举类型使代码更具可读性,理解清晰,易于维护。枚举类型是强类型的,从而保证了系统安全性。而以类的静态字段实现的类似替代模型,不具有枚举的简单性和类型安全性。简单的用法:JavaEnum简单的用法一般用于代表一组常用常量,可用来代表一类相同类型的常量值。复杂用法:Java为枚举类型提供了一些内置的方法,同事枚举常量还可以有自己的方法。可以很方便的遍历枚举对象。

3.静态导入
通过使用 import static,就可以不用指定 Constants 类名而直接使用静态成员,包括静态方法。import xxxx 和 import static xxxx的区别是前者一般导入的是类文件如import java.util.Scanner;后者一般是导入静态的方法,import static java.lang.System.out。

4.可变参数(Varargs)
可变参数的简单语法格式为:methodName([argumentList], dataType…argumentName);

5.内省(Introspector)
是 Java语言对Bean类属性、事件的一种缺省处理方法。例如类A中有属性name,那我们可以通过getName,setName来得到其值或者设置新的值。通过getName/setName来访问name属性,这就是默认的规则。Java中提供了一套API用来访问某个属性的getter /setter方法,通过这些API可以使你不需要了解这个规则(但你最好还是要搞清楚),这些API存放于包java.beans中。一般的做法是通过类Introspector来获取某个对象的BeanInfo信息,然后通过BeanInfo来获取属性的描述器 (PropertyDescriptor),通过这个属性描述器就可以获取某个属性对应的getter/setter方法,然后我们就可以通过反射机制来调用这些方法。

6.泛型(Generic)
一个集合可以放任何类型的对象,相应地从集合里面拿对象的时候我们也不得不对他们进行强制得类型转换。引入泛型,允许指定集合里元素的类型,这样你可以得到强类型在编译时刻进行类型检查的好处。

7.For-Each循环
For-Each循环得加入简化了集合的遍历。

杂记:将同步和锁封装成对象,并将操作锁的隐式方式定义到了该对象中,将隐式动作变成了显示动作。Lock接口:出现替代了同步代码块或者同步函数,将同步的隐式操作变成显示操作,同时更为灵活,可以一个锁上加上多个监听器。Lock(),获取锁;unlock(),释放锁。锁的关闭通常通常放在finally块中。Condition接口:出现了await(),signal(),signalAll()。

设计模式:

1.单例设计模式:当多个线程使用同一个配置信息对象的时候,就需要保证对象的唯一性。而单例设计模式就是为了解决这个问题,保证内存中的某一个类在内存中的对象唯一性。
1.1 如何保证对象的唯一性:
1.1.1 不允许其他程序使用new创建该类对象;
1.1.2 在该类创建一个本类实例;
1.1.3 对外提供一个方法让其他程序可以获得该对象。
1.2 步骤:
1.2.1 私有化该类的构造对象;
1.2.2 通过new在本类创建一个本类的对象;
1.2.3 定义一个公有的方法,将创建的对象返回。
1.3 饿汉式:
class Single{
//类加载的时候就创建本类对象
private static Single single = new Single();
private Single(){}
//公有方法
public static Single getInstance(){
Return single;
}
}
1.4 懒汉式:
Class Single{
//延迟加载类对象
private static Single single = null;
private Single(){}
//公有方法
public static Single getInstance(){
if(single==null)
single = new Single();
return single;
}

}
2.装饰模式:对原有的类进行功能的整改,增强。装饰与继承的区别:装饰比继承更加灵活,装饰类和被装饰类都必须同属同一个接口或者父类。通过继承扩展得来的功能必将使得整个类体系变得更加臃肿。

3.代理技术:工厂模式/配置文件
4.享元模式 用常量构造的String类就使用了享元模式。-128—127 是存在常量池中的 而超出的则会在内存中开辟出来存储。
杂记:

1.基本类型不是Object,基本类型的数组是Object。
一个基本类型可以赋值给一个Object
一个基本类型的一维数组不能用等号赋值给Object一维数组。
一个基本类型的二维数组能够用等号赋值给Object一维数组。
一个Object变量可以接收一个基本类型的变量,也可以接收一个基本类型的一维数组。
对象型数组则没有限制。
2.内存泄露:一个东西不被使用之后,依然占用着内存。
3.BeanUtils使用字符串形式对属性进行操作//PropertyUtils使用属性本身的类型进行操作。
4.注解/Annotation 一个注解就是一个类
5.泛型通配符 ? ?做参数不能调用涉及到类型的方法。
6.泛型不考虑继承关系 泛型真实类型必须是引用类型 不能是基本类型 new int[] 里面的元素不能自动装箱。
7.泛型编译的去类型化,不是重载,Vector.class = Vector.class

—————不断更新中—————

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:2322次
    • 积分:137
    • 等级:
    • 排名:千里之外
    • 原创:12篇
    • 转载:0篇
    • 译文:0篇
    • 评论:1条