Java基础数据类型与核心概念(java基础数据类型口诀)
myzbx 2025-06-23 20:56 53 浏览
一、Java基础数据类型与核心概念
1. 八大基础数据类型及其包装类
- 基础类型:byte、short、int、long、float、double、char、boolean。
- 包装类:Byte、Short、Integer、Long、Float、Double、Character、Boolean。
- 区别:基础类型直接存值于栈中,包装类是对象(堆内存),支持null和额外方法(如类型转换)。
- 应用场景:集合框架(如HashMap)要求对象类型,需用包装类;性能敏感场景优先用基础类型。
2. Java三大特性
- 封装实现:通过private修饰属性,提供getter/setter方法。例如BankAccount类隐藏balance字段。场景:保护敏感数据(如密码)、控制数据有效性(如金额非负)。
- 继承实现:extends关键字,子类复用父类方法/属性。例如Dog继承Animal并重写makeSound()。场景:代码复用(如UI组件复用)、多态基础。
- 多态实现:方法重写(@Override)、接口实现。例如父类引用指向子类对象Animal animal = new Dog()。场景:动态行为(如策略模式)、接口统一(如List与ArrayList/LinkedList)。
3. 重载(Overload)与重写(Override)
- 区别
- 重载重写同一类中,方法名相同、参数列表不同子类覆盖父类方法,需相同签名编译时多态运行时多态返回类型可不同访问权限不能比父类严格示例:setRadius(float)与setRadius(int)示例:Dog重写Animal的makeSound()
- 应用场景:重载用于方法多样性(如不同参数类型),重写用于扩展行为(如子类特有逻辑)。
4. 访问修饰符作用范围
修饰符 | 作用范围 |
public | 全局可见(跨包、跨类) |
protected | 同包+子类(跨包子类) |
private | 仅当前类 |
默认(包私有) | 同包内 |
- 场景:private保护核心算法,protected允许子类扩展,public暴露API。
5.==与equals()
- 区别
- ==equals()基础类型比值,对象比内存地址对象内容比较(需重写)默认行为(Object中==比较地址)默认与==一致,但可重写(如String)
- 正确使用:基础类型用==,对象优先用equals(),避免直接==比较对象(除非确定同一实例)。
6.hashCode()相同,equals()是否一定为true?
- 答案:否。哈希冲突可能导致不同对象hashCode()相同,但equals()返回false。例如,仅按部分字段生成hashCode()时。
- 示例:Person类hashCode()仅用年龄,但equals()比较姓名和年龄。
7. 重写equals()必须重写hashCode()的原因
- 一致性要求:Java规范规定,若a.equals(b)为true,则a.hashCode()必须等于b.hashCode()。否则,哈希表(如HashMap)无法正确存储/检索对象。
- 场景:自定义对象需存入集合时,必须保证equals和hashCode逻辑一致。
8.short s = 1; s = s + 1;与s++的区别
- 区别:s + 1:1是int,运算结果为int,需强制转换(s = (short)(s + 1))。s++:自动类型转换,等价于s += 1。
- 错误示例:s = s + 1会编译失败,而s += 1合法。
9. 浅拷贝与深拷贝
- 区别
- 浅拷贝深拷贝仅复制对象引用递归复制所有嵌套对象修改引用字段影响原对象完全独立
- 实现:浅拷贝:Clone()方法默认实现(如Person.clone())。深拷贝:重写clone()递归复制,或通过序列化/反序列化。
- 场景:浅拷贝用于简单对象,深拷贝用于含复杂引用(如Address字段)。
10. 线程安全单例模式
- 实现方式饿汉式:类加载时初始化,线程安全但浪费资源。双重检查锁:private volatile Singleton instance; + 同步块。静态内部类:延迟加载,线程安全(如DoubleCheckedLockSingleton)。枚举:天然线程安全,防反射破坏。
- 场景:资源池(如数据库连接)、配置中心。
11.final、finally、finalize
- 区别
- finalfinallyfinalize修饰不可变类/方法/变量try块后必执行代码Object方法,GC前调用(已过时)示例:final String NAME = "常量"示例:关闭资源(如IO流)建议用try-with-resources替代。
- 场景:final定义常量,finally释放资源,finalize避免使用。
12. JVM内存区域
区域 | 作用 | 示例 |
程序计数器 | 记录当前线程执行位置 | 多线程切换时恢复执行 |
Java堆 | 存储对象实例 | new Object() |
方法区 | 存储类元数据、常量池 | static变量、String.intern() |
虚拟机栈 | 方法调用栈帧 | 局部变量表、操作数栈 |
13. 类加载机制
- 双亲委派模型:类加载器优先委派给父类加载,最后由子类加载器加载(如AppClassLoader加载应用类)。
- 类加载器类型:启动类加载器(BootstrapClassLoader):加载rt.jar。扩展类加载器(ExtensionClassLoader):加载ext目录。应用类加载器(AppClassLoader):加载CLASSPATH。
- 场景:热部署(自定义类加载器)、插件化架构。
14. 反射机制
- 定义:运行时动态获取类信息、调用方法/构造器。核心类:Class、Method、Field。
- 应用:框架(如Spring依赖注入)。动态代理(如JDK Proxy)。反序列化(通过Class.forName())。
- 性能:反射比new慢10倍以上,建议缓存Class对象。
15. 多态实现
- 方式:继承+重写:子类重写父类方法(如Dog重写Animal的makeSound())。接口:多类型实现同一接口(如Flyable接口的Bird和Airplane)。
- 动态绑定:JVM在运行时根据实际对象类型调用方法。
16. 抽象类 vs 接口
抽象类 | 接口 |
可含方法实现 | 仅声明方法(Java 8+允许默认方法) |
单继承 | 多实现 |
适合状态管理 | 适合定义规范(如Serializable) |
- 选择:抽象类:代码复用(如AbstractList提供基础实现)。接口:多角色扩展(如Robot同时实现Worker和Rechargeable)。
17. Error vs Exception
- 区别
- ErrorException严重系统错误(如OOM)程序可处理的异常(如NullPointerException)不可恢复分为Checked(必须处理)和Unchecked(可选处理)
- 处理:Error通常不捕获,Exception需通过try-catch或声明throws。
18.NoClassDefFoundErrorvsClassNotFoundException
- 区别
- NoClassDefFoundErrorClassNotFoundException类加载时初始化失败(如依赖缺失)反射加载类时未找到类文件Error(不可恢复)Exception(需处理)
- 场景:NoClassDefFoundError常见于动态代理或插件加载失败,ClassNotFoundException常见于反射调用错误类名。
19.try中return与finally执行顺序
- 规则:try中return前,先执行finally,再返回结果。finally中有return会覆盖try的返回值。
- 示例:public int test() { try { return 1; } finally { return 2; } // 最终返回2 }
20. 异常处理与自定义异常
- 机制:try-catch-finally:捕获异常,释放资源。自定义异常:继承Exception(受检)或RuntimeException(非受检)。例如:class OrderException extends Exception { // 业务异常 public OrderException(String msg) { super(msg); } }
- 场景:自定义异常区分错误类型(如InvalidOrderStateException)。
基于原始20个问题,可以延伸出以下进阶问题(按技术领域分类),每个问题均包含核心考点和典型应用场景:
一、数据类型与类型系统扩展
- 自动装箱/拆箱的原理及陷阱考点:Integer缓存机制(-128~127)、NPE风险场景:高并发场景下频繁装箱的性能损耗(如阿里巴巴Java规范禁止在循环中装箱)
- 类型擦除与泛型边界考点:List<String>与List<Integer>本质相同、通配符<?>与<? extends T>场景:Collections.unmodifiableList()的实现原理
- 数值类型优化技巧考点:byte[]替代String传输、BitSet节省内存空间场景:大数据量缓存设计(如Redis键值对存储)
二、面向对象设计扩展
- 组合优于继承的实践案例考点:Java序列化漏洞(readObject方法)、里氏替换原则破坏场景:策略模式实现支付系统(如支付宝/微信/银联支付组件)
- 多态的底层实现机制考点:虚方法表(vtable)、invokevirtual指令场景:JVM性能调优(如热点代码内联优化)
- 设计模式与特性关联考点:装饰器模式(动态组合功能)、代理模式(Spring AOP实现)场景:微服务权限控制链(RBAC模型实现)
三、内存与并发扩展
- JVM参数调优场景考点:-XX:MetaspaceSize与-XX:MaxMetaspaceSize、G1垃圾回收器参数场景:Elasticsearch集群堆外内存配置
- 线程安全实现范式考点:AtomicInteger与LongAdder选择依据、StampedLock读写分离场景:秒杀系统库存扣减(Redis+Lua vs 分布式锁)
- 内存模型与可见性考点:volatile三特性(可见性/禁止指令重排/不保证原子性)场景:双重检查锁单例的volatile必要性
四、反射与元编程扩展
- 反射性能优化方案考点:MethodHandle替代传统反射、CGLIB动态代理场景:MyBatis XML解析性能优化
- 元空间(Metaspace)溢出排查考点:类加载链分析(-XX:+TraceClassLoading)、动态代理类膨胀场景:Dubbo SPI扩展机制导致的内存泄漏
- JDK动态代理原理考点:InvocationHandler调用链、Proxy类生成逻辑场景:Spring事务管理的AOP实现
五、集合框架扩展
- HashMap源码级解析考点:红黑树阈值(8/64)、ConcurrentHashMap分段锁演进场景:线程安全Map选择(Collections.synchronizedMap vs ConcurrentHashMap)
- 队列实现对比考点:ArrayBlockingQueue数组实现 vs LinkedBlockingQueue链表实现场景:Kafka消息队列的环形缓冲区设计
- 自定义集合实现考点:Comparable与Comparator区别、TreeSet红黑树维护场景:订单系统按创建时间排序展示
六、异常体系扩展
- Checked/Unchecked异常设计哲学考点:RuntimeException的传播特性、@ControllerAdvice全局处理场景:REST API统一错误码返回(如HTTP 400/500)
- OOM异常细分类型考点:java.lang.OutOfMemoryError: GC overhead limit exceeded场景:Full GC频繁导致的响应时间抖动排查
- 异常链机制考点:initCause()方法、Exception构造函数参数场景:分布式链路追踪(如SkyWalking异常堆栈透传)
七、JVM高级特性
- 类加载器双亲委派破坏场景考点:Tomcat多Context类隔离、spi机制(java.util.ServiceLoader)场景:Kafka多版本共存部署
- JIT编译优化策略考点:热点代码探测(Counter/Timer)、方法内联阈值场景:高并发服务性能调优(如支付宝交易链路)
- GC算法对比实践考点:CMS并发收集停顿时间 vs G1预测停顿场景:JVM监控工具选择(VisualVM vs Arthas)
八、生态工具扩展
- AOP实现原理对比考点:AspectJ编译时织入 vs Spring运行时代理场景:Spring Boot Actuator监控指标采集
- 字节码增强工具对比考点:Javassist动态修改字节码 vs ASM底层操作场景:MyBatis XML映射文件编译过程
- JVM监控体系构建考点:JMX远程监控、jstack线程dump分析场景:生产环境Full GC根因分析(如大对象堆积)
扩展问题应用场景矩阵
技术领域 | 企业级应用场景 | 性能指标影响 | 常见问题类型 |
反射机制 | ORM框架动态SQL生成 | CPU占用率↑10-20% | 堆栈溢出(StackOverflow) |
并发编程 | 分布式锁实现 | 响应时间P99↑500ms | 死锁、活锁 |
JVM调优 | 大数据ETL任务 | GC时间占比从40%→15% | OOM、频繁Full GC |
设计模式 | 微服务网关路由策略 | QPS提升3倍 | 版本兼容性问题 |
集合框架 | 缓存系统设计 | 内存占用减少30% | 并发修改异常( |
相关推荐
- 如何设计一个优秀的电子商务产品详情页
-
加入人人都是产品经理【起点学院】产品经理实战训练营,BAT产品总监手把手带你学产品电子商务网站的产品详情页面无疑是设计师和开发人员关注的最重要的网页之一。产品详情页面是客户作出“加入购物车”决定的页面...
- 怎么在JS中使用Ajax进行异步请求?
-
大家好,今天我来分享一项JavaScript的实战技巧,即如何在JS中使用Ajax进行异步请求,让你的网页速度瞬间提升。Ajax是一种在不刷新整个网页的情况下与服务器进行数据交互的技术,可以实现异步加...
- 中小企业如何组建,管理团队_中小企业应当如何开展组织结构设计变革
-
前言写了太多关于产品的东西觉得应该换换口味.从码农到架构师,从前端到平面再到UI、UE,最后走向了产品这条不归路,其实以前一直再给你们讲.产品经理跟项目经理区别没有特别大,两个岗位之间有很...
- 前端监控 SDK 开发分享_前端监控系统 开源
-
一、前言随着前端的发展和被重视,慢慢的行业内对于前端监控系统的重视程度也在增加。这里不对为什么需要监控再做解释。那我们先直接说说需求。对于中小型公司来说,可以直接使用三方的监控,比如自己搭建一套免费的...
- Ajax 会被 fetch 取代吗?Axios 怎么办?
-
大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发!今天给大家带来的主题是ajax、fetch...
- 前端面试题《AJAX》_前端面试ajax考点汇总
-
1.什么是ajax?ajax作用是什么?AJAX=异步JavaScript和XML。AJAX是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,AJAX可以使网页实...
- Ajax 详细介绍_ajax
-
1、ajax是什么?asynchronousjavascriptandxml:异步的javascript和xml。ajax是用来改善用户体验的一种技术,其本质是利用浏览器内置的一个特殊的...
- 6款可替代dreamweaver的工具_替代powerdesigner的工具
-
dreamweaver对一个web前端工作者来说,再熟悉不过了,像我07年接触web前端开发就是用的dreamweaver,一直用到现在,身边的朋友有跟我推荐过各种更好用的可替代dreamweaver...
- 我敢保证,全网没有再比这更详细的Java知识点总结了,送你啊
-
接下来你看到的将是全网最详细的Java知识点总结,全文分为三大部分:Java基础、Java框架、Java+云数据小编将为大家仔细讲解每大部分里面的详细知识点,别眨眼,从小白到大佬、零基础到精通,你绝...
- 福斯《死侍》发布新剧照 "小贱贱"韦德被改造前造型曝光
-
时光网讯福斯出品的科幻片《死侍》今天发布新剧照,其中一张是较为罕见的死侍在被改造之前的剧照,其余两张剧照都是死侍在执行任务中的状态。据外媒推测,片方此时发布剧照,预计是为了给不久之后影片发布首款正式预...
- 2021年超详细的java学习路线总结—纯干货分享
-
本文整理了java开发的学习路线和相关的学习资源,非常适合零基础入门java的同学,希望大家在学习的时候,能够节省时间。纯干货,良心推荐!第一阶段:Java基础重点知识点:数据类型、核心语法、面向对象...
- 不用海淘,真黑五来到你身边:亚马逊15件热卖爆款推荐!
-
Fujifilm富士instaxMini8小黄人拍立得相机(黄色/蓝色)扫二维码进入购物页面黑五是入手一个轻巧可爱的拍立得相机的好时机,此款是mini8的小黄人特别版,除了颜色涂装成小黄人...
- 2025 年 Python 爬虫四大前沿技术:从异步到 AI
-
作为互联网大厂的后端Python爬虫开发,你是否也曾遇到过这些痛点:面对海量目标URL,单线程爬虫爬取一周还没完成任务;动态渲染的SPA页面,requests库返回的全是空白代码;好不容易...
- 最贱超级英雄《死侍》来了!_死侍超燃
-
死侍Deadpool(2016)导演:蒂姆·米勒编剧:略特·里斯/保罗·沃尼克主演:瑞恩·雷诺兹/莫蕾娜·巴卡林/吉娜·卡拉诺/艾德·斯克林/T·J·米勒类型:动作/...
- 停止javascript的ajax请求,取消axios请求,取消reactfetch请求
-
一、Ajax原生里可以通过XMLHttpRequest对象上的abort方法来中断ajax。注意abort方法不能阻止向服务器发送请求,只能停止当前ajax请求。停止javascript的ajax请求...
- 一周热门
- 最近发表
- 标签列表
-
- HTML 简介 (30)
- HTML 响应式设计 (31)
- HTML URL 编码 (32)
- HTML Web 服务器 (31)
- HTML 表单属性 (32)
- HTML 音频 (31)
- HTML5 支持 (33)
- HTML API (36)
- HTML 总结 (32)
- HTML 全局属性 (32)
- HTML 事件 (31)
- HTML 画布 (32)
- HTTP 方法 (30)
- 键盘快捷键 (30)
- CSS 语法 (35)
- CSS 轮廓宽度 (31)
- CSS 谷歌字体 (33)
- CSS 链接 (31)
- CSS 定位 (31)
- CSS 图片库 (32)
- CSS 图像精灵 (31)
- SVG 文本 (32)
- 时钟启动 (33)
- HTML 游戏 (34)
- JS Loop For (32)
