Java学习笔记5

java平台与内存管理

     java具有”平台独立性“,指的是可以在一个平台上编写编译程序,在另外的平台上运行程序。实现的机制为:“中间码(也就是字节码,后缀为.class)”和“JVM”,程序被编译之后,不是生成在硬件平台上的可执行代码,而是“中间码”,然后又不同硬件平台上的JVM来翻译”中间码“生成不同硬件平台的可以执行代码。因此JVM不具有“平台独立性”,因为每个平台的JVM都是不一样的。

     顺序:java代码-》中间码-》JVM-》操作系统-》硬件

     java字节码(中间码)执行分为两种方式:及时编译方式+解释执行方式(常用)。

及时编译方式:解释器先将字节码翻译成机器码,然后执行机器码

解释执行方式:解释器每次解释 并执行一小段。

JVM会将生成的.class文件从硬盘加载到内存中,并组织生成一个java应用程序。这个加载过程由类加载器完成。分为显式和隐式加载。隐式:使用new等方式创建对象。显式:直接调用class.forName()把类加载到JVM。

Java中四种线程安全的单例模式实现方式

饿汉式,懒汉式加双重检锁(本身是线程不安全的),枚举,静态内部类

面试问道:什么是单例模式,需要回答三个元素:

1. 构造方法私有化

2. 静态属性指向实例

3. public static的 getInstance方法,返回第二步的静态属性

主要掌握“饿汉式”和”懒汉式“的实现代码:

首先是饿汉式:

package charactor;
 
public class GiantDragon {
 
    //私有化构造方法使得该类无法在外部通过new 进行实例化
    private GiantDragon(){
         
    }
 
    //准备一个类属性,指向一个实例化对象。 因为是类属性,所以只有一个
 
    private static GiantDragon instance = new GiantDragon();
     
    //public static 方法,提供给调用者获取12行定义的对象
    public static GiantDragon getInstance(){
        return instance;
    }
     
}

懒汉式:

package charactor;
 
public class GiantDragon {
  
    //私有化构造方法使得该类无法在外部通过new 进行实例化
    private GiantDragon(){       
    }
  
    //准备一个类属性,用于指向一个实例化对象,但是暂时指向null
    private static GiantDragon instance;
      
    //public static 方法,返回实例对象
    public static GiantDragon getInstance(){
        //第一次访问的时候,发现instance没有指向任何对象,这时实例化一个对象
        if(null==instance){
            instance = new GiantDragon();
        }
        //返回 instance指向的对象
        return instance;
    }
      
}

两者各自的适用范围是:

饿汉式是立即加载的方式,无论是否会用到这个对象,都会加载。懒汉式,是延迟加载的方式,只有使用的时候才会加载。因此,如果业务上允许有比较充分的启动和初始化时间,就使用饿汉式,否则就使用懒汉式 。

 

抛InterruptedException的代表方法有:

        java.lang.Object 类的 wait 方法

        java.lang.Thread 类的 sleep 方法

        java.lang.Thread 类的 join 方法

 

构造函数

1、如果没写构造函数会自动提供一个没有参数的默认的构造函数,里面什么都不执行。

2、在new之后自动调用,其名称和类名相同,但是没有返回值(因此连void也不需要加)

3、构造函数不能被继承,因此不能被覆盖(overide)。但是可以重载;因此,在父类没有提供无参数的构造函数时,子类必须显式地调用父类的构造函数;而如果父类提供了无参的构造函数,那么子类无需显式调用父类构造函数。

4、而如果子类与父类都没有定义构造函数的话,编译器会自动给他们都生成一个默认的无参构造函数。

5、注意类里面的普通方法是可以和构造函数一个名称的。区别就是构造函数无返回值,不需要加void,但是普通方法如果没有返回值需要加void。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值