发布网友 发布时间:2022-04-23 00:33
共1个回答
热心网友 时间:2022-04-09 03:31
在渐渐认识到自己的缺陷和不足之后,开始加深自己对java基础的学习,通过视频、博客收集了一些资料。下面分享给大家!
整理之中的意外收获:
1、java虚拟机监控命令:打开cmd窗口-->输入jvisualvm。第一次打开的话可能会稍微久一点,以后就好了。
2、两个变量切换的3种方式:
a、采取第三方变量
[java] view plain copy
int a=8,b=9;
int temp;
temp = b;
b=a;
a=temp;
[java] view plain copy
int a=8,b=9;
a=a+b;
b=a-b;
a=a-b;
c、采取^的方式[java] view plain copy
int a=8,b=9;
a = a^b;
b = a^b; //(a^b)^b = a = 8
a = a^b; //(a^b)^a = b = 9
4、二维数组和一维数组的定义方式:int[] x,int x[] ; int [] [] y,int y[][], int[] y[];
下面进入正题
单例模式
单例模式的用意如下:1、确保一个类只有一个实例被创建
2、提供一个对对象的全局访问指针
3、在不影响单例类的客户端的情况下允许有多个实例
饿汉式:
饿汉式存在的问题:由于实例不用做创建,是直接返回创建好的实例,所以饿汉式节省了时间上的消耗,但是由于实例本身是静态的,所以会一直占用内存空间
[java] view plain copy
<span style="white-space:pre;"> </span>public class Single{
private static Single s = new Single();
private Single(){}
public static getInstance(){
return s;
}
}
懒汉式:一、
[java] view plain copy
<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加锁[java] view plain copy
<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;
}
}
三、内部双重判断和同步锁[java] view plain copy
<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一般用于子类类型有限的情况下。