什么是字节码 字节码最大的好处
字节码:就是java源代码经过虚拟机编译器编译之后的文件也就是.class文件
字节码的好处:java通过字节码的方式解决了传统解释型语言执行效率低的问题,同时保留了解释性语言可移植的特点。而且字节码不专对一种特定机器,因此,无需重新编译便可以在不同的计算机上运行。
Java源代码---->编译器---->jvm可执行的Java字节码(即虚拟指令)---->jvm---->jvm中解释器----->机器可执行的二进制机器码---->程序运行。
不同的机器解释器(如windows,linux)不同的,即jdak或者jre目录bin下java.exe文件。
什么是java程序的主类?应用程序和小程序的主类有什么不同?
一个程序中可以有多个类,但是只有一个类是主类。在java应用程序中,这个主类是指包含在main()方法的类,而在java小程序中,这个主类是继承自动系统类JAppket或Applet的子类,应用程序的主类不一定要求public类,但是小程序的主类要求必须是public类,主程序是java程序执行的入口点
java应用程序与小程序之间有哪些差别?
简单的说应用程序是从主线程启动,applet小程序没有main方法,主要是镶字浏览器页面上运行(调用init()线程或者是run()来启动),镶入浏览器这点跟flash的小游戏类似。
Oracle JDK和OpenJDK的对比
Oracle JDK版本每三年发布一次,而OpenJDk每三个月发布一次
OpenJDK是一个参考模型并且完全开源,而Oracle JDK是OpenJDK的一个实现,并不是完全开源的,
OracleJDK比OpenJDK更加的稳定,OpenJDK和OracleJDK代码几乎一样。企业开发选择OracleJDK它经过了彻底的测试和稳定
响应性和JVM性能这方面,OracleJDK与OpenJDK相比提供了更好的性能
java有哪些数据类型
基本数据类型:数值型 byte,short,long 浮点类型 float,double
字符型 char 布尔型 boolean
引用数据类型 类class 接口interface 数组【】
(String)底层就是Char类型的数组
最有效的2乘以8
2<<3 左移三位 相当于乘以2的三次方
Math.round(11.5)等于多少?Math.round(-11.5)等于多少
Math.round(11.5)返回值12 Math.round(-11.5)返回11 四舍五入原理加上0.5
final有什么用
被final修饰的类不可以被继承
被final修饰的方法不可以被重写
被final修饰的变量不可以被改变
final finally finalize区别
final可以修饰类,变量,方法
finally一般用在try-catch代码快中,处理异常的时候,通常我们将一定要执行的代码方法finally代码块
finalize 是一个方法,属于Obiect类中的一个方法,而Object类是所有类的父类,该方法一般有垃圾回收器调用,当调用System.gc()方法的时候。由垃圾回收器finalize()回收垃圾,一个对象是否可以回收的最后判断。
this关键字用法
this是自身的一个对象,代表对象本身,可以理解:指向对象本身的一个指针。
this的用法在java中大体分为三种
1普通的直接引用,this相当于是指向当前对象本身
2形参与成员名字重合,用this来区分
3应用本类的构造函数
static意义
即使没有创建对象,也可以使用属性和调用方法
被static修饰的变量或者方法是独立与该类的任何对象。不属于任何一个实例对象。而是被类的实例对象所共享
被static修饰的变量或者方法是优先于对象存在的,也就说当一个类加载完毕,即使没有创建对象,也可以访问
面向对象的底层也就是面向过程 只不过把这一部分封装起来
继承
子类拥有父类非private的属性和方法
抽象类不可以被final修饰 抽象类要被继承然后实现里边的方法
成员变量和局部变量
成员变量 随着对象的创建而存在,随着对象的消失而消失。存储在堆内存中
局部变量 在方法调用完,或者语句被执行的时候存在,存储在栈内存中,当方法调用完,后者语句结束后,就自动释放
hashCode和equals
在使用hashset进行存储时,会先见检查对象是否重复
先对其hashcode值进行判断,如果hashcode相同使用equals进行判断值
如果两个对象hashcode相同equals不一定
equals相同则hashcode相同
java只有值传递
java常用的包
java.lang 这是系统的基础类;
java.io 这里面是所有输入输出有关的类,比如文件操作等
java.nio 为了完善io包中的功能,提高io包性能而写的一个新包
java.net 这里面是与网络有关的类
java.util这是个系统辅助类,特备是集合类
java.sql 这是数据库操作的类
IO流
输入流输出流
字符流和字节流
节点流和处理流
字符流:Reader输入流 Writer输出流
字节流:InputStream输入流 OutputStream输出流
BIO Block IO同步阻塞式IO 平常使用的传统IO
NIO Non IO同步户端和非阻务塞IO,客服端通过Channel通道通讯
AIO Asynchronous IO 异步非阻塞IO
关于Integer
Integer a=new Integer(3);
Integer b=3;
int c=3;
a==b false
a==c true
b==c true
Integer a1=128;
Integer a2=128;
a1==a2 flase
Integer a1=127;
Integer a2=127;
a1==a2 true
对于对象引用类型:==比较的是对象的内存地址
对于基本数据类型:==比较的是值
而Integer存储的整数字面量在-128到127之间 那么自动装箱时不会产生新的
Integer对象而是直接引用常量池中的Integer,超出范围a1==a2为flase