java开发手册——13问

这篇具有很好参考价值的文章主要介绍了java开发手册——13问。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

🥲 🥸 🤌 🫀 🫁 🥷 🐻‍❄️🦤 🪶 🦭 🪲 🪳 🪰 🪱 🪴 🫐 🫒 🫑 🫓 🫔 🫕 🦤 🪶 🦭 🪲 🪳 🪰 🪱 🐻‍❄️ 🫐 🫒 🫑 🫓 🫔 🫕
♔博主昵称:�欢快↑㎡
🕍博客主页:�欢快↑㎡的博客_CSDN博客-学习注意点杂记,BUG集,安装教程领域博主
⚇很方便的在线编辑器:Lightly
🥗感谢点赞🤞🏻评论🤞🏻收藏
相信吧!🤜🏻我们很优秀,还可以更加优秀,加油!🌼让我们一起在写作中记录巩固学习吧!

1.三目运算符空指针问题?

三目运算符condition? 表达式1:表达式2中,表达式1和表达式2在类型对齐时,可能会出现自动拆箱导致NPE异常。

触发自动拆箱的两种场景:

1)表达式1 或者表达式2的值只有一个原始类型。

2)表达式1 或者表达式2的值的类型不一样,会强制拆箱升级成表示范围更大的那个类型。

例子:

Integer a = 1;

Integer b = 2;

Integer c = null;

Integer result = (flag ? a*b : c);

多个 Integer 相乘的结果是 int。

a*b 的结果是int 类型,c会强制拆箱成int类型,会抛出NPE异常。

回顾:

a?b:c?d:e 将按a?b:(c?d:e)执行。

自动装箱与自动拆箱

java中的8种基本数据类型,是存储在栈内存中,不会在堆上分配内存,使用起来更加高效。

但是基本数据类型不是对象,在实际使用中会有诸多不便,如集合类要求元素必须是Object类型,基本数据类型无法使用。

自动装箱 :就是将基本数据类型自动转换成对应的包装类。

自动拆箱:就是将包装类自动转换成对应的基本数据类型。

自动装箱都是通过包装类的valueOf()方法来实现的 。 自动拆箱都是通过包装类对象的xxxValue()来实现的(如 booleanValue()、longValue() 等)。

案列复现:

boolean flag = true; // 设置成 true,保证条件表达式的表达式二一定可以执行
// 如果表达式1为true则表达式2不会执行
boolean simpleBoolean = false; // 定义一个基本数据类型的 boolean 变量
Boolean nullBoolean = null;// 定义一个包装类对象类型的 Boolean 变量,值为 null
boolean x = flag ? nullBoolean : simpleBoolean; // 使用三目运算符并给 x 变量赋值

最后一行代码会进行自动拆箱,导致NPE

当第二位和第三位表达式都是包装类型的时候,该表达式的结果才是该包装类型,否则,只要有一个表达式的类型是基本数据类型,则表达式得到的结果都是基本数据类型。如果结果不符合预期,那么编译器就会进行自动拆箱。

避免方法:

        涉及三目运算符,最好保持第二位和第三位表达式的类型一致,并且如果
要把三目运算符表达式给变量赋值的时候,也尽量保持变量的类型和他们保持一致。
并且,做好单元测试!!!

2.为什么建议初始化HashMap的容量大小?

        HashMap中定义的成员变量:size、loadFactor、threshold、DEFAULT_LOAD_FACTOR 和 DEFAULT_INITIAL_CAPACITY等。

        ● transient int size;
                ○ 记录了 Map 中 KV 对的个数
        ● loadFactor
                ○ 装载因子,用来衡量 HashMap 满的程度。loadFactor 的默认值为 0.75f(static final         float DEFAULT_LOAD_FACTOR = 0.75f;)。
        ● int threshold;
                ○ 临 界 值, 当 实 际 KV 个 数 超 过 threshold 时,HashMap 会 将 容 量 扩 容,
        threshold =容量 * 加载因子
        ● 除了以上这些重要成员变量外,HashMap 中还有一个和他们紧密相关的概念:capacity
                ○ 容量,如果不指定,默认容量是 16(static final int DEFAULT_INI-TIAL_CAPACITY = 1         <<    4;)

        size 和 capacity

                size是已经装了多少元素

                capacity是当前最多可以装下多少个元素

HashMap是有扩容机制的,默认容量是16,当达到扩容条件的时候,就会进行扩容文章来源地址https://www.toymoban.com/news/detail-445123.html

到了这里,关于java开发手册——13问的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 阿里Java开发手册~安全规约

    1. 【强制】隶属于用户个人的页面或者功能必须进行权限控制校验。 说明: 防止没有做水平权限校验就可随意访问、修改、删除别人的数据,比如查看他人的私信 内容、修改他人的订单。 2. 【强制】用户敏感数据禁止直接展示,必须对展示数据进行脱敏。 说明: 查看个人

    2024年02月15日
    浏览(47)
  • 开发手册|Java后端开发规范重点条目整理

    Ps:部分熟知的开发规范未收录在本文中!暂无排版格式,等待后续添加…… 1.1 命名风格 代码中的命名严禁使用拼音与英文混合的方式 alibaba / taobao / youku / hangzhou 等国际通用的名称可视同英文 类名使用大驼峰的形式命名,例如 UpperCameCase 方法、参数与变量使用小驼峰的形式

    2024年02月14日
    浏览(45)
  • 04.阿里Java开发手册——注释规约

    【强制】 类、类属性、类方法的注释必须使用 Javadoc 规范,使用 /**内容*/ 格式,不得使用 // xxx 方式。 说明:在 IDE 编辑窗口中,Javadoc 方式会提示相关注释,生成 Javadoc 可以正确输出相应注释;在 IDE中,工程调用方法时,不进入方法即可悬浮提示方法、参数、返回值的意义

    2024年01月16日
    浏览(43)
  • 瑞_Java开发手册_(四)安全规约

    🙊前言:本文章为瑞_系列专栏之《Java开发手册》的安全规约篇。由于博主是从阿里的《Java开发手册》学习到Java的编程规约,所以本系列专栏主要以这本书进行讲解和拓展,有需要的小伙伴可以点击链接下载。本文仅供大家交流、学习及研究使用,禁止用于商业用途,违者

    2024年01月17日
    浏览(48)
  • 瑞_Java开发手册_(七)设计规约

    🙊前言:本文章为瑞_系列专栏之《Java开发手册》的设计规约篇。由于博主是从阿里的《Java开发手册》学习到Java的编程规约,所以本系列专栏主要以这本书进行讲解和拓展,有需要的小伙伴可以点击链接下载。本文仅供大家交流、学习及研究使用,禁止用于商业用途,违者

    2024年01月17日
    浏览(44)
  • 瑞_Java开发手册_(三)单元测试

    🙊前言:本文章为瑞_系列专栏之《Java开发手册》的单元测试篇。由于博主是从阿里的《Java开发手册》学习到Java的编程规约,所以本系列专栏主要以这本书进行讲解和拓展,有需要的小伙伴可以点击链接下载。本文仅供大家交流、学习及研究使用,禁止用于商业用途,违者

    2024年01月20日
    浏览(42)
  • 瑞_Java开发手册_(一)编程规约

    🙊前言:本文章为瑞_系列专栏之《Java开发手册》的编程规约篇,本篇章主要介绍命名风格、常量定义、代码格式、OOP规约、日期时间、集合处理、并发处理、控制语句、注释规约以及其它常见的编程规约。由于博主是从阿里的《Java开发手册》学习到Java的编程规约,所以本

    2024年01月21日
    浏览(45)
  • 阿里巴巴_java开发规范手册详解

    反例: _name, $name, __name 说明:正确的英文拼写和语法可以让阅读者易于理解,避免歧义。注意,纯拼音命名方式更要避免采用。 正例:renminbi / alibaba / taobao / youku / hangzhou 等国际通用的名称,可视同英文。 反例:DaZhePromotion [打折] / getPingfenByName() [评分] / int 某变量 = 3 正例:

    2024年02月06日
    浏览(47)
  • 码出高效:Java开发手册笔记(线程安全)

        并发与并行的目标都是尽可能快地执行完所有任务。以医生坐诊为例,某个科室有两个专家同时出诊,这就是两个并行任务,其中一个医生,时而问诊,时而查看化验单,然后继续问诊,突然又中断去处理病人的咨询,这就是并发。在并发环境下,由于程序的封闭性全

    2024年02月08日
    浏览(39)
  • 瑞_Java开发手册_(二)异常日志

    🙊前言:本文章为瑞_系列专栏之《Java开发手册》的异常日志篇,本篇章主要介绍异常日志的错误码、异常处理、日志规约。由于博主是从阿里的《Java开发手册》学习到Java的编程规约,所以本系列专栏主要以这本书进行讲解和拓展,有需要的小伙伴可以点击链接下载。本文

    2024年01月16日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包