Java基础面经整理

java概述

跨平台

  • 一次编写,到处运行,的跨平台性是由于JVM的存在,C/C++编程是面向操作系统的。需要开发者极大的关心不同操作系统之间的差异;但是Java平台通过虚拟机屏蔽了操作系统的底层细节,让开发人员不需要关心操作系统之间的差异

  • 通过中间件达到“解耦”是计算机的“艺术手法”

JVM、JRE、JDK之间的关系

在这里插入图片描述

  • JVM

    • Java程序需要运行在虚拟机上,不同的平台有自己的虚拟机。所以Java语言可以实现跨平台
  • JRE

    • JRE = JVM+Java程序所需的核心类库 主要是java.lang包
  • JDK

    • JDK = JRE+Java的开发工具 如编译工具、打包工具等等

什么是字节码,采用字节码的好处

字节码:Java源代码经过JVM编译器编译之后产生的文件.class文件,.class文件不面向任何指定的处理器和操作系统,只面向虚拟机

用字节码的好处:一定程度上解决了传统解释性语言执行效率低的问题,同时保留率解释性语言可移植的特点。所以Java程序运行时比较高效,又因为JVM的存在使得.class文件不需要在不同系统上重新编译即可运行

运行流程

Java源代码—>编译器—>jvm可执行的.class文件—>JVM---->jvm中解释器----->机器可执行的二进制码—>程序执行

Java基础

public、private、protected以及不写的区别

  • Java支持四种不同的访问权限

private:在同一个类中可见,使用对象:变量、方法、 不能修饰类

default:(不写情况下):在同一个包内可见,可以对 类、接口、变量、方法使用

protected:对同一包内的类和所有子类可见。使用对象:变量、方法 不能修饰类

public:对所有类可见。使用对象:类、接口、变量、方法

在这里插入图片描述

&和&&区别

&运算符有两种用法:按位与 逻辑与

&&运算符是短路与运算 之所以是短路运算就是 如果&&的左边是false就不去判断右边 直接输出flase

final、finally、finalize区别

  • final是一个修饰符关键字,可以修饰类、方法、变量、

    • 修饰类不能被继承

    • 修饰方法不能被重写

    • 修饰变量不能被重新赋值

    • 可以防止指令重排序

  • finally是一个异常处理关键字,一般用在try-catch-finally中,finally中的代码无论是否有异常都会执行,一般从来存放一些关闭资源的代码

  • finalize是Object类里面的方法,一般由垃圾回收器来调用,他的设计目的是保证对象在被垃圾回收前完成特定资源的回收,不推荐使用,JDK9被标记为deprecated

this和super关键字用法

  • this是指向对象本身的一个指针

    • 普通的直接引用,this相当于是指向当前对象本身

    • 当形参与成员名字重名,this用来区分

    • 引用本类的构造函数

  • super是指向自己父类中的对象的指针

    • 直接引用父类对象

    • 当子类对象与父类重名时,用super进行区分

    • 引用父类的构造函数

static存在的意义

static主要意义在于创建独立于具体对象的变量或者方法,即使没有创建对象,也能使用和调用方法

static还可以用来形成静态代码块来优化程序性能 static块可以置于类中的任何方法,可以多个static块,类被初次加载的时候,会按照static的顺序来执行每个static块,并且只会执行一次

break、continue、return区别

break结束当前循环体

continue用来跳出当前循环进入下次循环

return 结束当前方法,直接返回

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值