java基础

什么是字节码  字节码最大的好处

字节码:就是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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值