java基础面试(一)

1.java中常见的数据类型有哪些?
java中常见的数据类型有8种。byte字节型,内存中占一个字节;short短整型,占两个字节;int整型,占4个字节;long长整型,占8个字节。
float单精度浮点型,占4个字节;double双精度浮点型,占8个字节。
char字符型,占2个字节;boolean布尔型

2.java语言的优势有哪些?

  • 面向对象(封装,继承,多态)
  • 可靠性
  • 安全性
  • 平台无关性(java虚拟机实现)
  • 支持多线程
  • 支持网络编程
  • 执行方式为解释型执行+编译执行并存

3.说明jdk1.8之后的变化
(1)增加了lambda表达式
(2)接口中增加了默认方法和静态方法
(3)HashMap结构由数组+链表转为红黑树

4.说说JDK、JRE、JVM三者之间的关系
使用JDK编写java程序后,通过JDK的编译程序javac将程序编译为字节码文件。在JRE上运行这些字节码文件,JVM会解析并映射到真实操作系统的CPU指令集和OS的系统调用。

5.==和equals()的区别?
(1)==是运算符,用于基本类型是比较值,用于引用类型是比较内存地址
(2)equals()是object类中的方法。基本数据类型没有重写equals()方法,默认使用object中的方法,采用 ==比较内存地址;引用类型重写了equals方法,进行值或内存的比较,例如String类。

6.java是按值传递还是按引用传递?
值传递是指在调用方法时,将实际参数的值或内存地址复制一份传递到方法中;引用传递是指在调用方法时,将参数的内存地址直接传递到方法中。
java中使用的都是值传递。如果是基本类型,赋值参数的值传递给方法;如果是引用类型,赋值对象参数的Heap堆中的内存地址值,传递给方法。

7.String类中有哪些常用方法?

  • indexOf() 返回指定字符的索引
  • charAt() 返回指定索引对应的字符
  • length() 返回字符串长度
  • replace() 替换字符
  • spilt() 分割字符串
  • trim() 去掉两端的空格
  • substring() 截取字符串
  • toUpperCase() 转大写
  • toLowerCase() 转小写
  • equals() 字符串比较
  • getBytes() 得到byte型的数组

8.String、StringBuffer、StringBuilder三者之间的区别?
(1)String 被final修饰,是不变的。每次操作都会生成新的String对象,然后指针指向新的String对象。
(2)StringBuffer和StringBuilder都继承自AbstractStringBuilder父类,使用char型数组存储,没有被final修饰,所有可以在原有对象的基础上进行操作。
(3)每次对String类进行操作都会生成新的对象,性能和内存开销都会很大。
(4)StringBuilder和StringBuffer都是在原有基础上操作,不会生成新的对象,性能开销较小。

9.StringBuilder和StringBuffer之间有什么区别?
(1)StringBuffer对操作方法加了同步锁,所以线程是安全的。
(2)StringBuilder并没有对操作方法加同步锁,所以线程不安全。
(3)相同情况下,使用StringBuilder比使用StringBuilder会获得百分之10-百分之15的性能提升,但需要承担多线程不安全的风险。

10.String、StringBuilder、StringBuffer三者使用场景?

  • 字符串少量修改,使用String
  • 单线程频繁修改,使用StringBuilder
  • 多线程频繁修改,使用StringBuffer

11.final关键字的用法?

  • final修饰的类为最终类,不能被继承
  • final修饰的方法为最终方法,不能被重写
  • final修饰的变量叫常量,常量必须初始化,且不能被修改(基本类型不能被修改,引用类型不会再分配内存空间)

12.final、finally、finalize的区别?

  • final用于声明变量、方法和类,分别表示常量、不能被重写、不能被子类继承
  • finally是异常处理语句处理的最后一部分,表示不论怎样都会被执行
  • finalize是object的方法,在垃圾回收器执行的时候,会调用被回收对象的该方法,供垃圾收集时执行其他资源回收等操作。
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值