JAVA基础知识总结

1、JVM、JRE和JDK的区别:

JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性。java语言是跨平台,jvm不是跨平台的。

JRE(Java Runtime Environment):java的运行环境,包括jvm+java的核心类库。

JDK(Java Development Kit):java的开发工具,包括jre+开发工具。

2、 环境变量path和classpath的作用:

path:是配置Windows可执行文件的搜索路径,即扩展名为.exe的程序文件所在的目录,用于指定DOS窗口命令的路径。

classpath:是配置class文件所在的目录,用于指定类搜索路径,JVM就是通过它来寻找该类的class类文件的。

3、数据类型

基本数据类型(4类8种):
        整数类型:byte、short、int、long
        浮点数类型:float、double
        字符类型:char
        布尔类型:boolean
引用数据类型:
        类
        接口
        数组类型

4、&和&&的区别

&&:会出现短路,如果可以通过第一个表达式判断出整个表达式的结果,则不继续后面表达式的运算;只能操作boolean类型数据;

&:不会出现短路,将整个表达式都运算。既可以操作boolean数据还可以操作数(判断数的二进制两个位,赋值0或1)。

5、java语言的三种技术架构

J2EE:企业版

J2SE:标准版

J2ME:小型版

6、重载

概念:在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可。    
特点:与返回值类型无关,只看参数列表——参数类型以及参数个数。    
好处:方便于阅读,优化了程序设计。

7、构造方法

特点:方法名与类名相同;没有返回类型没有返回值。

作用:构造函数是用于创建对象,并对其进行初始化赋值,对象一建立就自动调用相对应的构造函数。

构造方法的注意事项:

①如果一个自定义类没有构造方法,系统会默认给出一个无参构造方法;

②如果一个自定义类提供了构造方法,那么系统将不再给出无参构造方法(必须手动给出无参构造方法)。

构造方法和成员方法的区别:

①格式区别:构造方法和类名相同,并且没有返回类型,也没有返回值;普通成员方法可以任意起名,必须有返回类型,可以没有返回值。

②作用区别:构造方法用于创建对象,并进行初始化值;普通成员方法是用于完成特定功能的。

③调用区别:构造方法是在创建对象时被调用的,一个对象建立,只调用一次相应构造函数;普通成员方法是由创建好的对象调用,可以调用多次。

8、构造代码块

作用:给对象进行初始化,对象一建立就执行,而且优先于构造函数执行

构造代码块和构造函数的区别:构造代码块是给所有不同对象的共性进行统一初始化;构造函数是给对应的对象进行初始化。

9、静态代码块、构造代码、构造方法执行顺序

静态代码块--->构造代码块--->构造方法

10、 单例设计模式

①设计模式:解决某类问题行之有效的方法,是一种思想,是规律的总结。

②特点:用来保证某个类在内存中只有一个对象。

③保证唯一性的思想及步骤:

为了避免其他程序建立该类对象,先禁止其他程序建立该类对象,即将构造函数私有化;

为了其他程序访问到该类对象,在本类中创建一个该类私有对象;

为了方便其他程序访问到该类对象,对外提供一个公共访问方式;

比如API中的Runtime类就是单例设计模式。

④单例设计模式的两种方式:

饿汉式:当类加载的时候,就创建对象。

懒汉式:当使用的使用,才去创建对象。

饿汉式和懒汉式的区别:

饿汉式是类一加载进内存就创建好了对象;懒汉式则是类加载进内存的时候,对象还没有存在,只有调用了getInstance()方法时,对象才开始创建。

注:开发常用饿汉式,因为饿汉式简单安全。懒汉式多线程的时候容易发生问题。

最佳单例模式:DCL双检查锁机制(DCL:double checked locking)
public class Singleton {
    // volatile保证了uniqueInstance的修改对各个线程的可见性
    // 将自身实例化对象设置为一个属性,并用static修饰
    private volatile static Singleton uniqueInstance;
    // 构造方法私有化
    private Singleton() {}  
    // 静态方法返回该实例
    public static Singleton getInstance() {
    // 第一次检查instance是否被实例化出来,如果没有进入if块
        if (uniqueInstance == null) {
    // 某个线程取得了类锁,实例化对象前第二次检查instance是否已经被实例化出来,如果没有,才最终实例出对象
            synchronized (Singleton.class) {
                if (uniqueInstance == null) {
                    uniqueInstance = new Singleton();
                 }
            }
        }
        return uniqueInstance;
    }
}

11、final关键字

最终的意思,可以用于修饰类,方法,变量。

①final修饰的类不能被继承。

②final修饰的方法不能被重写。

③final修饰的变量是一个常量。

final、finally、finalize的区别:

finally:是异常处理里面的关键字。它其中的代码永远被执行。特殊情况:在执行它之前jvm退出。System.exit(0)。

finalize:是Object类中的一个方法。它是于垃圾回收器调用的方式。

12、instanceof关键字

用于判断某个对象是否是某种类型。

使用:对象名 instanceof 子类(实现)名。

13、throws和throw的区别

①有throws的时候可以没有throw;
    有throw的时候,如果throw抛的异常是Exception体系,那么必须有throws在方法上声明。

②throws用于方法的声明上,其后跟的是异常类名,后面可以跟多个异常类,之间用逗号隔开;
    throw用于方法体中,其后跟的是一个异常对象名。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值