java概述
对java平台的理解对Java是解释执行的理解JVM,JRE,JDK 的区别什么是跨平台,原理是什么什么是字节码,采用字节码最大的好处是什么 基础语法
数据类型访问修饰符& 和 &&,| 和 || 的区别final finally finalize的区别this super
java概述 对java平台的理解对java平台的理解
分为三个方面,java的面向对象与其类库、java的跨平台、java的虚拟机和垃圾回收机制。
(1)java的面向对象和类库:java是一门面向对象的语言,允许程序员以优雅的思维方式进行复杂的编程。java的类库很全,如其核心类库,集合容器、线程相关类、JUC并发包、异常和安全,IO/NIO(NIO是NEW IO, 和IO的作用相同但是其效率更高) 等类库。
(2)java的跨平台:java是“一次编写,到处运行”,他以虚拟机为中间层,非常容易的获取到了跨平台的能力。而C/C++ 是面相操作系统来编程的,开发者需要关心不同操作系统之间的差异,JAVA却通过虚拟机来取消了这种差异。
(3)java的虚拟机和垃圾回收机制:Java通过垃圾收集器回收分配内存,大部分情况下程序员不需要操心内存的分配与回收。针对虚拟机的效率也有优化的技术,如:JIT技术,会将热点代码编译成机器码。AOT技术,在运行前,通过工具将字节码转为机器码。
对Java是解释执行的理解
首先,先了解编译执行和解释执行的区别,编译执行就相当于将代码或指令等按照一定的规范来书写,再利用编译器一次性翻译成CPU能识别的。而解释执行就是发送一条指令便翻译执行一条指令,这样效率较低。
这种说法是不太准确的,在 开发时,首先是将源码(即我们写的Java 代码)通过javac 编译为字节码,在运行的时候,通过jvm中的解释器,将字节码转化为机器码。但是在一些常见的JVM中都提供了JIT编译器,其会将热点代码编译为机器码,这种情况下这部分热点代码就属于编译执行而不是解释执行。
JVM,JRE,JDK 的区别
JVM:Java Virtual Machine ,java虚拟机,Java程序需要运行在自己的虚拟机上,不同平台都有自己的虚拟机,也是因此Java可以实现跨平台。
JRE:Java Runtime Environment, java运行环境,其包含java虚拟机和java运行所包需要的核心类库。核心类库主要包括java.lang包下的,包含了运行java必不可少的系统类,如:包装类型,基本数学函数,字符串处理,线程,异常处理类等,一个开发好的java程序,装上jre即可运行。
JDK:java Development Kit ,java开发工具,是给java开发人员使用,包含了java开发工具和jre,安装了jdk就不需要安装jre了。
java开发工具: java.exe 运行工具 , javac.exe 编译工具,javaw.exe GUI 工具
可以理解为
jvm + 核心类库 = jre
jre + 开发工具 = jdk
什么是跨平台,原理是什么
跨平台就是一次编译到处运行.原理就是java通过jvm虚拟机来运行在各个平台,只要装了相应的java虚拟机就可以运行java程序
什么是字节码,采用字节码最大的好处是什么
字节码是java的源代码通过java虚拟机的编译器(javac)编译而成,放在.class文件里,不面向任何的处理器和操作系统,只面向虚拟机
好处: 通过字节码的方式,一定程度的解决了解释型语言效率低的问题,且保留了解释型语言可移植的特点,所以其效率高.由于字节码文件只面向虚拟机,所以放到别的平台上不需要再次编译即可运行
执行顺序: java源代码经过编译器(javac)编译成字节码----jvm执行字节码(即虚拟命令)-----jvm中的解释器将其转化为机器码----机器执行二进制机器码—运行
- 数据类型
(1)基本数据类型: byte,short,int,long,float,double,boolean,char,1,2,4,8,4,8,1,2
(2)引用数据类型:class,interface,数组…
- 访问修饰符
java中可通过访问修饰符来保护类,对象,变量,方法.
(1)private , 只能在同一类中可见。可作用在变量、方法中
(2)default, 不写修饰符默认就是default,在同一包内可见。可作用在类、接口、变量、方法中。
(3)protected, 对同一包内的类和所有子类可见,可作用在变量、方法中。
(4)public: 对所有类可见,可作用对象:类、接口、方法、变量
- &运算符有两种用法:按位与和逻辑与
&& 是短路运算符,逻辑与&和短路与&&的差别非常大,虽然两者都要求等号两边都为true结果才为true但是 &&当等号左边的值为false的时候便不会计算右边的值,因此被称为短路与
| 和 || 也是一样。
- final finally finalize的区别
(1)final是一个修饰符关键字,其可以修饰类、方法、变量,final修饰的类就不能被继承,final修饰的方法不能被重写,final修饰的变量不能被重新赋值
(2)finally 是一个异常处理的关键字,一般用在try-catch-finally中,在处理异常的时候通常会将一定执行的代码放到finally中,表示不管是否出现异常都会执行改代码,一般用来放关闭资源的代码。
(3)finalize 是属于Object类的一个方法,该方法一般由垃圾回收器来调用,它的设计目的是保证对象在被垃圾收集前完成特定资源的回收,现在已经不推荐使用.jdk9中已经弃用
- this super
(1) this是指向对象本身的一个指针
其用法分为三类
普通直接引用,相当于指向了当前对象本身
当形参和成员名重名,用this来区分
引用本类的构造函数
(2)super 可以理解为是指向自己父类对象的一个指针,且指的是离自己最近的一个父类
其用法分为三类
普通直接引用,相当于指向当前对象的父类并引用,可以使用super.xx来引用父类的成员
当子类中的成员变量或方法与父类的重名时,可以使用super来区分
引用父类的构造函数



