当前位置: 首页 > news >正文

Java知识复习(一)基础知识

1、什么是JVM、JDK和JRE?

  1. JVM是指运行Java字节码的虚拟机。而字节码文件指的就是扩展名为.class的文件,
  2. JDK指功能齐全的Java SDK,能够创建和编译程序
  3. JRE指Java运行的环境,包括JVM、类库和命令等

2、重载和重写的主要区别

  1. 重载:在同一个类中,方法名相同,但参数类型可以不同
  2. 重写:在运行期,子类对父类中的方法进行重新编写。其方法名和参数类型都必须相同,但抛出的异常范围需要小于等于父类,访问修饰符范围要大于等于父类。

3、String、StringBuffer和StringBuilder的主要区别

  1. String的对象不可变,每次修改都是创建一个新的String对象,并将引用指向新的String对象。而StringBuffer和StringBuilder每次都会对其本身进行操作,而不用生成新的对象并改变对象的引用。
  2. StringBuffer的所有公开方法都是加了同步锁的,所以是线程安全,适用于多线程;而StringBuilder并没有对方法进行同步锁,所以是非线程安全的,适用于单线程。

4、自动装箱和拆箱

  1. 装箱:将基本类型用它们对应的引用类型包装起来
  2. 拆箱:将包装类型转换为基本数据类型

简单来说就像下面这样,它的装拆箱过程是自动进行的

Integer i = 10;  //装箱
int n = i;   //拆箱

5、静态方法和静态变量(static关键字)

  1. 静态方法:静态方法不需要通过类的实例就可以被调动,所以在静态方法中不能调用其他非静态变量和非静态方法。
  2. 静态变量:静态变量可以被类的所有实例所共享;在类的内部,可以直接访问类的静态变量。

6、接口和抽象类的区别

  1. 接口里只能包含抽象方法,静态方法和默认方法(加default),不能为普通方法提供方法实现,抽象类则完全可以包含普通方法,接口中的普通方法默认为抽象方法。
  2. 一个类可以扩展extend多个接口,但只能实现一个抽象类implements。
  3. 接口方法的默认修饰符是public,而抽象方法可以有public、protected和default这些修饰符,但不能用private,因为抽象方法就是为了被重写的
  4. 接口中只能有public static final变量,而抽象类中没有规定。
  5. 总的来说,抽象是一种模板设计,必须要重写某些方法;而接口是一种行为规范,每个方法不是必须要重写的。

7、==和equals()

  1. == :作用是判断两个对象的地址是否相等(基本数据类型= =比较的是值,引用数据类型= =比较的是内存地址)
  2. equals() :判断两个对象是否相等,如果类没有覆盖equals()方法,则等价于通过==比较这两个对象,但通常类会覆盖equals方法,进而比较的是两个对象的内容是否相等。(例如 String)

8、异常处理

  • 所有的异常都有一个共同的祖先:Throwable类。Throwable类有两个重要的子类Exception(异常)和Error(错误)。
  • Exception能被程序本身处理(try-catch),Error是无法处理的(只能尽量避免)
  • Exception可以分为受检查异常(编译时就报错,必须显式处理,即try-catch)和不受检查异常(即运行时异常,不处理也可以通过编译,但运行到此时会报错)
  • 运行时异常包括:NumberFormatException(字符串转换为数字的格式错误)、ArrayIndexOutOfBoundsException(数组越界)、ClassCastException(类型转换错误)等

9、浅拷贝和深拷贝

  1. 浅拷贝:对基本数据类型进行值传递,对引用数据类型进行引用传递般的拷贝
  2. 深拷贝:对基本数据类型进行值传递,对引用数据类型,创建一个新的对象,并复制其内容

10、序列化和反序列化

  1. 序列化:将数据结构或对象转换成二进制字节流的过程
  2. 反序列化:将在序列化过程中所生成的二进制字节流转换成数据结构或对象的过程

常见应用场景:网络传输(计网向下打包的过程,对应TCP/IP协议的应用层)、存储到文件、存储到数据库、存储到内存(PS:上述反向过程就是反序列化的过程)

11、transient关键字

**应用场景:**如果某些变量不想被序列化,则使用transient关键字修饰,修饰后,但对象被反序列化时,该变量值不会被持久化和恢复,会被置成默认值(例如:int变量就会变成0)

http://www.lryc.cn/news/19395.html

相关文章:

  • springboot+vue.js校园车辆用车预约管理系统
  • 【 K8s 源码之调度学习】Pod 间亲和性和反亲和性的源码分析
  • 计及绿证交易及碳排放的含智能楼宇微网优化调度(Matlab代码实现)
  • 场景扩展,体验升级 | DBMotion新增无公网数据库迁移、支持监控报警等多项功能
  • 【正点原子FPGA连载】第十五章eMMC读写测试实验 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南
  • i2c子系统
  • 【K3s】第17篇 Helm版本和支持的Kubernetes版本对照表
  • 如何自己搭建一个ai画图系统? 从0开始云服务器部署novelai
  • SpringSecurity过滤请求导致的系统bug
  • css\js\vue知识点
  • 在vue项目中使用video.js实现视频播放和视频进度条打点
  • 【代码训练营】day41 | 01背包问题 416. 分割等和子集
  • linux网络编程-多进程实现TCP并发服务器
  • C语言的学习小结——数组
  • HTB-Photobomb
  • 【LSTM】2 多因素单步骤预测
  • ChatGPT从下游应用“火”到了上游芯片厂,国内谁将受益?
  • 算法单调栈—Java版
  • 在Linux中进行rocketmq及rocketmq控制台安装与配置
  • 2023年全国最新食品安全管理员精选真题及答案4
  • es-07脚本查询
  • JM员工福利与健康平台,企业关怀Always Online
  • 如何使用U-Mail搭建企业邮件服务器?
  • 用规则来搭建团队:写周报不一定是坏事
  • Apollo使用方法
  • 科研快讯 | 14篇论文被信号处理领域顶级国际会议ICASSP录用
  • 设计模式—策略(Strategy)模式
  • STM32 触摸屏移植GUI控制控件
  • 数仓模型之维度建模
  • Servlet笔记(9):Cookie处理