Java基础篇(二)

文章目录

1.堆和栈的区别是什么?

  • 用途:
    1.栈用于存储局部变量、方法调用的参数,方法返回地址以及一些临时数据。每一个线程在创建时会创建一个栈,这个栈随着方法执行增长减小,每当一个方法执行时会创建一个栈帧,用于存储信息,方法执行完毕后栈帧从栈中弹出。
    2.堆用于存储对象实例,用new关键字创建的对象实例会在堆上分配空间。
  • 生命周期:
    1.栈的数据有确定的生命周期,在方法调用结束时对于的栈帧会被销毁,栈的局部变量也会消失。当线程执行结束时,栈内存会被自动回收。
    2.堆中的对象生命周期不确定,对象会在垃圾回收机制检测到对象不再被引用的时候回收。
  • 存取速度:
    1.栈的存取速度快,因为栈遵循先进后出原则,操作简单快捷。
    2.堆存取速度较慢,对象在堆上的分配和时间需要更多时间,而且垃圾回收也会影响性能。
  • 存储空间:
    1.栈的空间相对较小且固定,由操作系统管理。栈溢出可能是递归过深或者局部变量过大。
    2.堆的空间可以动态分配,具有可扩展性,可能会导致内存碎片化问题,分配和回收由JVM管理。堆溢出通常是创建了太多的大对象,或者不能及时回收不用对象。
  • 可见性:
    1.栈中数据对线程私有,每个线程都有自己的栈空间,天生线程安全。
    2.堆的数据对线程共享,所有线程都可以访问堆上的对象。

2.泛型的理解有什么?

泛型:参数化类型,是一种可以表示其他数据类型的数据类型,解决数据类型的安全问题,在类声明或实例化时只要指定好具体类型即可。

作用:泛型强制在编译时检查类型匹配,自动处理类型转化,,无需手动强转,代码复用,实现通用算法和数据结构。

3.Exception和Error的区别是什么?

1.Excepti(异常):Exception类及其子类表示程序在运行过程中可能遇到的、可以被捕获和处理的异常情况,通常是由于外部因素(网络中断,文件不存在)或者程序逻辑错误导致的。

2.Error(错误):Error类及其子类表示了在程序运行期间发生的,JVM或者系统级别错误,一般无法预览和恢复。例如JVM内存耗尽,JVM错误,线程死锁等。

区别:

1.继承体系:

二者皆继承自Throwable,是并列关系,表示不同性质的问题。

2.发生时机:

Exception通常在程序运行时发生,但编译器异常在编译阶段就会被编译器强制检查,一般是可预见问题。

Error通常在程序运行时发生,但它们表面JVM或系统的问题,而不是程序逻辑问题,往往是突发的、无法预料的。

3.严重性:

Exception相对不严重,通常不会导致程序崩溃。

Error严重,内存溢出、栈溢出等,程序无法正常进行。

4.可恢复性:

Exception大多数是可恢复的。我们可以通过try-catch捕获并执行相对于异常处理逻辑(如重试,给出提示,记录日志)

Error通常是不可恢复的,超出程序控制范围,需要进行检查重启

5.处理方式:

Exception用try-catch捕获,或者用throws关键字声明抛出

Error发生时最好做法让程序终止管理人员接入解决

相关推荐
tryxr14 分钟前
Chat2Excel 文件服务模块上传文件功能开发
java·项目·oss·easyexcel·文件服务
Tangyuewei16 分钟前
Java 写 Agent:模型只是组件
java·开发语言
小玮看世界1 小时前
[Python]从合并区间到传感器融合区:合并区间在传感器区域融合的实际落地
开发语言·python
彧azz1 小时前
Java学习语法篇:变量
java·学习
繁星蓝雨2 小时前
C++的设计与演进大纲(如何从C语言一步步成长为C++)
c语言·开发语言·c++·c++历史·c++演进
Evand J2 小时前
【MATLAB例程,图像降噪滤波9】自适应维纳滑动窗口滤波(Wiener)图像降噪、方法对比,有中文注释
开发语言·图像处理·计算机视觉·matlab·滑动窗口·滤波·降噪
杜大哥2 小时前
python程序:如何查看电脑【电池电量的剩余百分比】 和 【是否插入连接着充电器】?
开发语言·python
wuyk5552 小时前
Python网络爬虫入门到实战 第01章:爬虫到底是什么?原理、流程、合法性、风险全解析(零基础必看)
开发语言·爬虫·python
信誓旦旦的程序猿2 小时前
【量化系统从零构建 #04】存储设计:选型·建库·交易日历
java·人工智能·python·股票数据api·股票数据·股票数据api接口·股票api数据接口
yurenpai(27届找实习中)2 小时前
Java 10 的 var 为什么不能随便用?从订单汇总看懂类型推断与泛型陷阱
java·开发语言·java18