整理之中的意外收获:
1、java虚拟机监控命令:打开cmd窗口-->输入jvisualvm。第一次打开的话可能会稍微久一点,以后就好了。
2、两个变量切换的3种方式:
a、采取第三方变量
- int a=8,b=9;
- int temp;
- temp = b;
- b=a;
- a=temp;
b、不通过第三方变量
- int a=8,b=9;
- a=a+b;
- b=a-b;
- a=a-b;
c、采取^的方式
- int a=8,b=9;
- a = a^b;
- b = a^b;
- a = a^b;
3、java的垃圾回收机制:在堆内存当中,
不再被使用的实体
将会在垃圾回收机制中进行不定时的清除
4、二维数组和一维数组的定义方式:int[] x,int x[] ; int [] [] y,int y[][], int[] y[];
下面进入正题
单例模式
单例模式的用意如下:1、确保一个类只有一个实例被创建
2、提供一个对对象的全局访问指针
3、在不影响单例类的客户端的情况下允许有多个实例
饿汉式:
饿汉式存在的问题:由于实例不用做创建,是直接返回创建好的实例,所以饿汉式节省了时间上的消耗,但是由于实例本身是静态的,所以会一直占用内存空间
- <span style="white-space:pre;"> </span>public class Single{
- private static Single s = new Single();
- private Single(){}
- public static getInstance(){
- return s;
- }
- }
懒汉式:
一、
- <span style="white-space:pre;"> </span>
-
-
- public class Single{
- private static Single s = null;
- private Single(){}
- public static Single getInstance(){
- if(s==null)
- s = new Single();
- return s;
- }
- }
二、getInstance加锁
- <span style="white-space:pre;"> </span>
-
-
- public class Single{
- private static Single s = null;
- private Single(){}
- public static Single synchronized getInstance(){
- if(s==null)
- s = new Single();
- return s;
- }
- }
三、内部双重判断和同步锁
- <span style="white-space:pre;"> </span>
-
-
- public class Single{
- private static Single s = null;
- private Single(){}
- public static Single getInstance(){
- if(s==null){
- synchronized(Single.class){
- if(s==null)
- s = new Single();
- }
- }
- return s;
- }
- }
java类与类之间不能多继承而可以多实现的原因:
多继承继承的是另外一个类,而继承的方法有方法体。实现的接口中的方法是没有方法体的,
所以即使实现的多个接口间有相同的方法但是由于没有方法体,所以在实现类中实现该方法
之后会将所有接口中与该方法一致的方法进行覆盖。所以可以实现多实现而不可以实现多继承。
接口之间可以进行多继承,如果继承的接口间存在相同方法时,需要超类之间的方法返回值一致。
否则接口之间的多继承无法实现。
面向对象编程的三大特性:多态、继承、封装
判断引用对象数据类型关键字:A instanceof Object。instanceof一般用于子类类型有限的情况下。