【Java基础】Java基础 面试高频考点总结

这篇博客汇总了Java基础和集合面试中的高频考点,包括面向对象的特性、Java与C++的区别、JDK/JRE/JVM的概念、数据类型、String的不可变性、字符串拼接方式、final/finally/finalize的差异、==与equals和hashCode的关系、方法重载与重写、抽象类与接口的对比、static关键字的作用、内部类的应用、泛型与泛型擦除、异常处理、集合类如ArrayList、LinkedList、HashMap的特性和实现原理等,是Java开发者面试复习的宝贵资料。
摘要由CSDN通过智能技术生成

总结的Java基础部分高频的知识(持续更新)

基础

📌什么是面向对象?有什么特性?

面向对象就是把事物给对象化,包括其属性和行为。面向对象又三大特征,分别是:封装、继承、多态。

  • 封装: 就是指将对象的实现细节隐藏起来,通过公共的方法向外暴露除该对象的功能。比如我们通过将成员变量设置为私有后通过提供的getter/setter方法来访问。 使用封装可以提高安全性,简化操作,实现代码的组件化。
  • 继承: 继承是一种提高代码复用的重要手段,当一个子类继承了父类时,就会拥有父类的成员和方法,同时子类还可以自己实现更多的功能。但继承也是一种强耦合关系,父类改变子类也要相应的改变。
  • 多态: 多态就是同一类型对象在执行相同行为的情况下会又不同表现形态。 实现多态就要首先实现继承和重写以及向上转型。把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的实现差异,可以降低类之间的耦合度,易于扩展。
📌面向对象和面向过程的区别?
  • 面向过程是对于一个问题的解决过程的实现,重点强调的是功能的行为和执行过程。而面向对象是站在某一个对象它可以实现的功能的角度,将不同对象可实现的功能组装起来解决问题。
  • 面向过程采用的是自顶向下的设计方式,在设计初期就要考虑到每个模块以及每个函数,所以它的系统的适应性和可扩展性较差。面向对象编程更加符合常规思维,可扩展性好,更加模块化,所以也就拥有更低的耦合。
📌 Java和C++的区别?
  • 都是面向对象的编程语言,支持封装、继承和多态
  • 指针:Java不提供指针来直接访问内存,程序更安全
  • 继承:Java是单继承,C++是多继承,但Java可以实现多个接口
  • 内存:Java有自动内存管理机制,不需要程序员手动释放内存
📌JDK、JRE、JVM分别是什么?
  • JVM:Java虚拟机,是运行Java字节码的虚拟机,JVM有对于不用系统和的特定实现,以保证可以使用相同的字节码得出相同的结果。Java虚拟机不受平台的约束,实现了“一次编译,到处运行”
  • JDK : Java开发工具包,包含了Java虚拟机、Java程序设计语言、Java API类库这三部分
  • JRE:Java运行时环境(Java Runtime Environment),包含了JavaSE API 子集以及Java虚拟机这两部分
📌Java有哪些数据类型?

Java中有两类数据类型,分别是:基本数据类型和引用数据类型

  • 基本数据类型:包括byte(1)、short(2)、int(4)、long(8)、double(8)、float(4)、char(2)、boolean(1)
  • 引用数据类型:包括类、接口、数组等
📌String类为什么设计为不可变的?怎么实现的?
  • 将String对象设置为不可变有很大的好处。
    (1)首先,由于设计为不可变,所以可以实现字符串常量池,就可以在运行时节约很多堆上的空间。
    (2)String设计为不可变也大大提高了安全性,由于很多重要信息比如数据库的用户名密码、网络中的URL和主机名等都是使用String存储,如果String可变,就会引起很多安全问题。
    (3)在多线程下时安全的,由于设计为不可变,所以即使多个线程共享一个字符串,也不会造成多线程不同步的问题
    (4)因为字符串时是不可变的,所以它创建的时候hashcode就被缓存了,不需要重新计算。这就使得字符串很适合作为Map中的键
  • 在实现上,首先String被final关键字修饰,就不能被继承以至于修改。其次String的底层是使用一个char[]实现的,而这个数组也使用了final修饰保证了其不可变性,另外对于String的所有方法都没有将原有的String对象暴露出来,所以别人也就无从修改。至此就保证了String的不可变。
📌 字符串的拼接方式有哪些?它
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值