Integer,String等引用内存分析
int和Integer
1) int a=数值 , Integer a=数值 , a=new Integer(数值) 这三者进行==比较时,结果永远为true.
原因:Integer类型与int比较时,Integer会自动拆箱。
2) Integer a=数值 与 a=new Integer(数值)这两者进行==比较时,结果永远为false.
原因:这两者都是引用类型,当前者处于[-128,127]范围内时,会直接从IntegerCache中取;不在[-128,127]范围时,会在堆区new一个新对象,此时两者都是堆中的两个独立的对象。
3) Integer a1=数值 与 Integer a2=数值 比较时看情况:
当两者范围均在[-128,127]里,则两者均指向IntegerCache中对应的值,指向的是同一个值,因此 == 为true。
当两者范围不在[-128,127]中,则a1和a2分别指向堆中的两个独立对象,因此 == 为false。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现