【JAVA面试题】JAVA基础

1.jdk和jre的区别?

jdk(java development kit)主要面向开发
jre(java runtime environment)主要用在运行java程序。
在这里插入图片描述

2.==和equals的区别?

基础数据类型:只能用==
引用型变量(例如字符串和new出来的对象):==用于判断是不是同一个对象,equals用于判断对象的内容是不是一样的。

3.两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?

两个对象equals相等,则它们的hashcode必须相等,反之则不一定。
两个对象==相等,则其hashcode一定相等,反之不一定成立。

4.final的作用

被final修饰的类不能被继承
被final修饰的方法不能被重写
被final修饰的变量数值不能改变

5.java中Math.round(-1.5)是多少?

-1。Math.round()是在原数值上加0.5再向下取整。

6.string属于基础数据类型吗?

不属于。java的基础数据类型是byte、short、char、int、long、float、double、boolean。

7. 操作字符串的有哪些类?有什么区别?

StringBuilder、StringBuffer、String
String:被final修饰的,对String对象的操作都不会改变原字符串,都会生成新的对象
StringBuffer:里面的所有方法都加了同步关键字,在多线程里面使用,是线程安全的
StringBuilder:如果需要频繁的对字符串进行修改的话用StringBuilder比较好。

8.String str="i"与 String str=new String(“i”)一样吗?

不一样,前者是把i这个值在内存中的地址给了str,这个i是在常量池里面的;而后者是创建了一个新的字符串对象,然后将这个对象的地址给str,这个i在堆内存里面。

9.如何翻转字符串?
9.1.使用stringBuilder的reverse()方法
StringBuilder sb=new StringBuilder("abc").reverse().toString();

reverse()方法翻转字符串,toString()方法将StringBuilder的类型转换为string

9.2.使用String的==toCharArray()方法将字符串转为字符数组,然后用空字符串逆序拼接字符数组;或者直接使用String的charAt()==方法,逆序获得字符再拼接
String str="abc";
char[] chars=str.toCharArray();
String ans="";
for(int i=chars.length-1;i>=0;i--)
	ans+=chars[i];
9.String类常用的方法有哪些?
String str="abc";
str.charAt(0);
char[] chars=str.toCharArray();  // 字符串转字符数组
str.indexOf(a);  // a出现的第一个位置
str.trim();  // 去掉字符串两边的空格
str.subString(0,1);  // 截取第一个字符为新的字符串
str.split("b");  // 拆分字符串为字符串数组
10.抽象类中一样要有抽象方法吗?

抽象类不一样要有抽象方法,一个类有抽象方法就一定要声明为抽象方法。
https://www.cnblogs.com/ibelieve618/p/6410910.html

11.抽象类能用final修饰吗?

不能,因为抽象类就是用于被继承的,被final修饰就不能被继承了。
抽象类的子类必须实现抽象类中所有抽象方法,不然该子类还是一个抽象类

12.接口和抽象类的相同点和区别?

相同点:

  • 都不能被实例化
  • 接口的实现类和抽象类的子类只有实现了全部抽象方法才能被实例化

区别:

  • 抽象类用于抽象类别,接口用于抽象功能
  • 抽象类里面可以有构造方法,抽象方法,具体的方法和属性;接口里面只能有抽象方法和不可变常量
  • 抽象方法可以有public、protected和default;接口只能是public
13.java中的io流分为几种?

输入流、输出流
字符流、字节流
节点流、处理流

14.BIO NIO AIO区别?

BIO(Blocking IO)
同步阻塞IO,数据的读取写入在一个线程内完成。用于活动连接数不是很高(小于单机1000)的场景下。性能不是很好。
NIO(New IO)
同步非阻塞IO,适用于低负载,低并发的场景。
AIO(Asynchronous IO)
异步非阻塞IO

同步/异步:发出请求后是否需要等待返回结果
同步就是程序发起调用的时候,这个调用得到结果才返回就是同步;发起调用之后不管有没有结果,直接返回就是异步。
阻塞/非阻塞:在调用结果返回之前,当前线程是否会被挂起
阻塞就是程序发起调用之后,在返回结果之前一直被挂起就是阻塞;如果该调用在结果返回之前,这个调用不会让这个线程被挂起就是非阻塞。

15.HashMap和Hashtable的区别?

hashtable线程安全,hashmap线程不安全
HashMap可以使用null作为key,而Hashtable则不允许null作为key
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值