JAVA试题

1.JDK和JRE有什么区别?

JRE是java运行环境,

JDK是java开发工具包,提供了java的开发环境和运行环境

2.==和equals有什么区别

==:

对于基本数据类型,==用来判断值是否相同                                                                                      

对于引用类型,==用来判断引用是否相同

equals:

equals本质上是==

String和Integer重写了equals方法,用来判断对象的内容是否相同

3.final在java中的作用

final代表最终的,不可改变的,在java中可以修饰类,方法,属性

final修饰的类称为最终类,不能被继承

final修饰的方法不能被子类重写

final修饰的变量为常量,必须初始化赋值,并且值不能修改

4.字符串String是基本数据类型吗?

不是。是引用数据类型

基本数据类型包括:

整型:byte,char,short,int,long

浮点型:float,double

布尔型:boolean

5.java中操作字符串都有哪些类,他们都有什么区别?

String,StringBuffer,StringBuilder

String是不可改类型,StringBuilder和StringBuffer是可改类型的

StringBuffer是线程安全的,效率低,StringBulider是线程不安全的,效率高

StringBuffer和StringBuilder可以在原有的对象基础上进行操作,所以经常经常改变字符串内容,选择StringBuffer和StringBuilder,不选择String

6.String str="a"与String str=new String("a")是否一样?

内存分配方式不一样

String str="a",JVM会将其分配到常量池中

String str=new String("a")会被分配到堆内存中

7.抽象类必须要有抽象方法么?普通类和抽象类有何区别?抽象类能否使用final修饰?接口和抽象类有什么区别?

抽象类不是必须要有抽象方法,抽象类可以有抽象方法,也可以没有抽象方法

普通类不能包含抽象方法,抽象类可以包含抽象方法

抽象类不能直接实例化,通过继承实例化 ,而普通类可以直接实例化

不能,定义抽象类只能通过继承来实例化生成对象,如果被final修饰,代表不能被继承(如果拿final修饰,编译器会报错)

参见抽象类和接口区别

8.java中的IO流分为几种?BIO,NIO,AIO有什么区别?字节流和字符流区别?

按功能来分:输入流(inputstream)和输出流(outputstream)

按类型来分:字节流和字符流

字节流按8位传输,以字节为单位,输入输出数据

字符流按16位传输,以字符为单位,输入输出数据

BIO(Block IO): 同步阻塞式 IO,就是我们平常使用的传统 IO,它的特点是模式简单,使用方便,并发处理能力低
NIO(New IO): 同步非阻塞 IO,是对传统 IO 的升级,为了完成客户端和服务器端通过 Channel(通道)通讯,实现了多路复用
AIO(Asynchronous IO): 是 NIO 的升级,也叫 NIO2,实现了异步非堵塞 IO ,异步 IO 的操作基于事件和回调机制

9.List,Set接口有什么特点?ArrayList和LinkedList有什么区别?Array与ArrayList有什么区别?

List:顺序存储,可重复

Set:无序存储,不可重复

ArrayList:底层是数组,线性表,查询效率高(针对数组下标查询)

LinkedList:底层是双向链表,增删效率高,查询效率(相对于增删)低

Array和ArrayList都是用来存储数据的集合

Array:底层是数组

ArrayList:底层是数组,并对数组进行了功能扩展,是数组的升级版

10.final,finally ,finalize()性质有何不同?作用分别是什么?

性质:

fianl为关键字,代表最终的

finally用于try语句中,为最终执行的意思

finalize()为方法

作用:

final用于标识常量的关键字,存储在常量池中

finalize()是Object类中的方法,用于对象消失时,由jvm进行调用,用于对对象的垃圾回收,如果是开发者自定义,用于释放对象占用的资源

finally后面通常跟大括号,与try配合使用,无论try中的代码是否异常,finally大括号中的代码都会被执行

11.线程同步的方法

wait() :让线程等待,将线程存储到一个线程池中

notify():唤醒被等待的线程,通常唤醒的是线程池中的第一个,让被唤醒的线程处于临时阻塞状态

notifyall():将线程池中所有线程都唤醒

12.&与&&的区别

&是位运算符,&&是逻辑运算符,通过&处理逻辑时如果前面条件为false后面需要继续处理;如果通过&&处理逻辑时如果前面的条件为false则后面不会处理

&&: 短路与运算,当运算左侧已经为false的时候,右侧则不会再参与运算

& : 两侧都参与运算(效率低)

13.重载与重写的区别

参见方法重载与方法重写

14.对象设置为null,是否会被GC立即回收

不会,在下一个垃圾回收的周期中,这个对象将被回收。

15.列出5个jdbc的操作步骤

(1)载入JDBC驱动程序

(2)定义连接URL,建立数据库连接对象

(3)获取执行器

(4)执行查询或更新

(5)操作结果集

16.说出几条java中方法重载的最佳实现

方法重载参数定义时,要避免自动装箱的混乱(int可以自动装箱成Integer)

不要重载参数数量的值,而只是参数顺序不一样的重载

如果重载的方法参数过多,采用可变参数

17.SimpleDateFormat是线程安全的吗?

不是,dateformat下的实现SimpleDateFormat是线程不安全的。

Dateformat底下所有的类都不是线程安全的

18.java中的java.util.date与java.sql.date有什么区别?

java.util.Date 就是在除了SQL语句的情况下面使用,java.sql.Date 是针对SQL语句使用的,它只包含日期而没有时间部分;

java.util.Date 转 java.sql.Date:

这也就是下转型,需要造型,但是由于时间格式不一样,需要以毫秒的形式进行转换:

java.sql.Date s = new java.sql.Date(util.getTime());

java.sql.Date 转 java.util.Date:

这是上转型,会自动转换:

java.util.Date u = sqltime;

19.在java中如何将字符串转化为整数

String s=”123”;

Int i;

方式一: i=Integer.parseInt(s);

方式二:i=Integer.valueOf(s).intValue();

20.接口是什么?为什么定义接口而不直接定义类?

接口用于定义API,也就是定义方法的规则;

 接口提供了抽象方法目的是为了满足多重实现方式,譬如:List接口,既可以使用随机访问的ArrayList,也可以使用方便插入和删除的LinkedList;接口中不允许写非抽象方法但是jdk1.8除外(可以具备static和default修饰的方法);

21.int和Integer的区别?

Int是基本数据类型,Integer是包装类;

基本数据类型作为数据类型不具备方法;

Integer作为包装类具备方法可以完成某些功能;

22.switch能否作用在byte,string,long

Jdk5以前switch表达式只能支持byte、short、char、int;jdk5开始java switch引入了枚举(enum)类型;jdk7开始switch还引入了String类型,但是long在上述版本中都不可以使用

23.数组有没有length方法,字符串有没有方法 

 数组没有length方法,只有length属性

字符串有length方法

24.java中如何跳出当前的多重嵌套循环

可以在循环前添加标识符A,然后通过break A跳出嵌套循环,类似于c和c++的goto(但是不推荐使用)

25.构造器的英文单词是什么?是否能够被重写?重写的英文单词是什么?

constructor

 构造器不能被继承,因此不能被重写,但是在子类中可以通过关键字super()去引用父类构造器;

 构造器不能被重写但是可以被重载

26.是否存在两个对象通过equals判断相同,但却有不同的HashCode?

不对,如果两个对象x 和 y 满足 x.equals(y) == true,它们的哈希码(hashCode)应当相同(注意不考虑重写equals方法完成值判断)。

Java 对于eqauls 方法和 hashCode 方法是这样规定的:

(1)如果两个对象相同(equals 方法返回 true),那么它们的hashCode 值一定要相同;

(2)如果两个对象的 hashCode 相同,它们并不一定相同。

27.字符串类是否可以被继承?

不能,因为String类被final修饰

28.描述jvm加载class文件的流程?

十二条

29.char类型变量能不能存储一个中文汉字?

能,两个字节

30.抽象的方法,是否可以同时是静态的?是否可以同时是本地方法native?是否同时可被synchronized修饰

都不能

抽象类中的方法需要子类重写,而static修饰的方法无法被重写

native:用来声明本地方法,该方法的实现由非java 语言实现,比如C。一般用于java与外环境交互,或与操作系统交互,native可以与所有其它的java 标识符连用,但是abstract除外(譬如:native public void Native1( int x ) 该方法有外界负责实现,它不是抽象方法);
synchronized:用于防止多个线程同时调用一个对象的该方法,与static连用可防止多个线程同时调用一个类的该方法
abstract与synchronized不能同时使用,
从synchronized的功能也可以看出,用synchronized的前提是该方法可以被直接调用,显然和abstract不能直接用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值