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 结束当前方法,直接返回