Java基本概念及易混淆知识点整理(一)

1.JVM(Java Virtual Machine)
Java 虚拟机(JVM)是运行 Java 字节码的虚拟机。JVM 有针对不同系统的特定实现(Windows,Linux,macOS),目的是使用相同的字节码,它们都会给出相同的结果。字节码和不同系统的 JVM 实现是 Java 语言“一次编译,随处可以运行”的关键所在。

2.JDK ( Java Development Kit )
它是功能齐全的 Java SDK。它拥有 JRE 所拥有的一切,还有编译器(javac)和工具(如 javadoc 和 jdb)。它能够创建和编译程序。

3.(Java Runtime Environment)
JRE 是 Java 运行时环境。它是运行已编译 Java 程序所需的所有内容的集合,包括 Java 虚拟机(JVM),Java 类库,java 命令和其他的一些基础构件。但是,它不能用于创建新程序。

4.Java和C++的比较
都是面向对象的语言,都支持封装、继承和多态
Java 不提供指针来直接访问内存,程序内存更加安全
Java 的类是单继承的,C++ 支持多重继承;虽然 Java 的类不可以多继承,但是接口可以多继承。
Java 有自动内存管理垃圾回收机制(GC),不需要程序员手动释放无用内存
在 C 语言中,字符串或字符数组最后都会有一个额外的字符’\0’来表示结束。但是,Java 语言中没有结束符这一概念。

5.编译与解释并存
Java语言编译成class结尾的字节码文件,然后由Java解释器执行.

6.字符型常量和字符串常量
形式上: 字符常量是单引号引起的一个字符; 字符串常量是双引号引起的 0 个或若干个字符
含义上: 字符常量相当于一个整型值( ASCII 值),可以参加表达式运算; 字符串常量代表一个地址值(该字符串在内存中存放位置)
占内存大小: 字符常量只占 2 个字节; 字符串常量占若干个字节 (注意: char 在 Java 中占两个字节),

7.常见关键字使用场景
访问控制: private protected public
类,方法和变量修饰符: abstract class extends final implements interface native new static strictfp synchronized transient volatile
程序控制: break continue return do while if else for instanceof switch case default
错误处理: try catch throw throws finally
包相关: import package
基本类型: boolean byte char double float int long short null true false
变量引用: super this void

8.自增(++),自减(–)运算符
符号在前先加减,符号在后后加减

9.continue ,break ,return
continue :指跳出当前的这一次循环,继续下一次循环。
break :指跳出整个循环体,继续执行循环下面的语句。
return :用于跳出所在方法,结束该方法的运行。可以直接return结束方法,也可以return返回数据.

10.== 和 equals
== :它的作用是判断两个对象的地址是不是相等。即判断两个对象是不是同一个对象。(基本数据类型== 比较的是值,引用数据类型==比较的是内存地址)
equals() : 它的作用也是判断两个对象是否相等,它不能用于比较基本数据类型的变量。

11:hashCode()与 equals()
重写 equals 时必须重写 hashCode.如果两个对象相等,则 hashcode 一定也是相同的.但是两个对象的hashcode相同,这两个对象不一定相等.

12.基本数据类型和对应的包装类型
基本数据类型:char boolean byte short int long float doble
对应包装类型:Character Boolean Byte Short Integer Long Float Double

13,重载和重写
重载:多个方法具有相同的方法名,但是参数个数以及类型不完全相同
重写:子类继承自父类的相同方法,需要做出不同于父类方法的逻辑或返回值等情况,需要覆盖父类方法.并用相关的逻辑去代替,这种行为称为重写.

14,构造器Constructor 不能被 override(重写),但是可以 overload(重载),所以你可以看到一个类中有多个构造函数的情况。

15.继承:
子类拥有父类对象所有的属性和方法(包括私有属性和私有方法),但是父类中的私有属性和方法子类是无法访问,只是拥有。
子类可以拥有自己属性和方法,即子类可以对父类进行扩展。
子类可以用自己的方式实现父类的方法

16,反射机制
JAVA 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为 java 语言的反射机制。

18,进程
进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。简单来说,一个进程就是一个执行中的程序,它在计算机中一个指令接着一个指令地执行着,同时,每个进程还占有某些系统资源如 CPU 时间,内存空间,文件,输入输出设备的使用权等等。换句话说,当程序在执行时,将会被操作系统载入内存中。 线程是进程划分成的更小的运行单位。线程和进程最大的不同在于基本上各进程是独立的,而各线程则不一定,因为同一进程中的线程极有可能会相互影响。从另一角度来说,进程属于操作系统的范畴,主要是同一段时间内,可以同时执行一个以上的程序,而线程则是在同一程序内几乎同时执行一个以上的程序段。

19.线程
线程与进程相似,但线程是一个比进程更小的执行单位。一个进程在其执行的过程中可以产生多个线程。与进程不同的是同类的多个线程共享同一块内存空间和一组系统资源,所以系统在产生一个线程,或是在各个线程之间作切换工作时,负担要比进程小得多,也正因为如此,线程也被称为轻量级进程。

20.线程的状态
在这里插入图片描述
21. BIO,NIO,AIO 有什么区别?

BIO (Blocking I/O): 同步阻塞 I/O 模式,数据的读取写入必须阻塞在一个线程内等待其完成。

NIO (Non-blocking/New I/O): NIO 是一种同步非阻塞的 I/O 模型,

AIO (Asynchronous I/O): AIO 也就是 NIO 2。它是异步非阻塞的 IO 模型。

22,类的生命周期:
加载,验证,准备,解析,初始化,使用.卸载.

23,类加载的过程:
加载,验证,准备,解析,初始化.

24.JVM 中内置了三个重要的 ClassLoader,除了 BootstrapClassLoader 其他类加载器均由 Java 实现且全部继承自java.lang.ClassLoader:

25.BootstrapClassLoader(启动类加载器) :最顶层的加载类,由C++实现,负责加载 %JAVA_HOME%/lib目录下的jar包和类或者或被 -Xbootclasspath参数指定的路径中的所有类。
ExtensionClassLoader(扩展类加载器) :主要负责加载目录 %JRE_HOME%/lib/ext 目录下的jar包和类,或被 java.ext.dirs 系统变量所指定的路径下的jar包。
AppClassLoader(应用程序类加载器) :面向我们用户的加载器,负责加载当前应用classpath下的所有jar包和类。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值