借助阿里开发规约,回顾一下Java开发编码基础方面的知识,结合自己使用中遇到的问题,记录一下规约中以前翻过的错、有共鸣的问题。

1、覆写方法时要加上@Override注解。重写一个类型T的equals方法,一开始把参数类型写成T,比较没起作用,后来改成Object后才生效,如果加上注解一开始就会报错提示。

【强制】所有的覆写方法,必须加@Override 注解。 说明:getObject()与 get0bject()的问题。一个是字母的 O,一个是数字的 0,加@Override 可以准确判断是否覆盖成功。另外,如果在抽象类中对方法签名进行修改,其实现类会马上编 译报错。

2、如果一个对象放入Set或者作为HashMap的key一定要重写hashCode和equals方法。要注意这两个方法的规定:

  一个对象只要内容不变,则它的hashCode方法返回的整数不变。

  两个对象equals返回true,则它们的hashCode方法返回的整数一定相同,否则它们的hashCode方法返回的整数不一定不相同。

  两个对象它们的hashCode方法返回的整数不相同,则它们肯定不满足equals,否则它们返回的整数相同,则不一定满足equals。

  判断两个对象是否相同最终时要通过equals方法,但在Set或HashMap中放入元素时可以通过hashCode方法减少equals方法的调用次数,从而提高性能。

【强制】关于 hashCode 和 equals 的处理,遵循如下规则: 1) 只要重写 equals,就必须重写 hashCode。 2) 因为 Set 存储的是不重复的对象,依据 hashCode 和 equals 进行判断,所以 Set 存储的 对象必须重写这两个方法。 3) 如果自定义对象作为 Map 的键,那么必须重写 hashCode 和 equals。 说明:String 重写了 hashCode 和 equals 方法,所以我们可以非常愉快地使用 String 对象 作为 key 来使用。

3.Arrays.asList()把数据转成集合时后台的数据仍是数组。

【强制】使用工具类 Arrays.asList()把数组转换成集合时,不能使用其修改集合相关的方 法,它的 add/remove/clear 方法会抛出 UnsupportedOperationException 异常。

说明:asList 的返回对象是一个 Arrays 内部类,并没有实现集合的修改方法。Arrays.asList 体现的是适配器模式,只是转换接口,后台的数据仍是数组。

String[] str = new String[] { "you", "wu" };

List list = Arrays.asList(str);

第一种情况:list.add("yangguanbao"); 运行时异常。

第二种情况:str[0] = "gujin"; 那么 list.get(0)也会随之修改。

4、创建线程或线程池时要指定名字方面排查问题。

【强制】创建线程或线程池时请指定有意义的线程名称,方便出错时回溯。 正例:

public class TimerTaskThread extends Thread { public TimerTaskThread() { super.setName("TimerTaskThread"); ... }

阿里巴巴Java开发手册(纪念版).pdf

阿里Java开发规约笔记相关推荐

  1. 阿里Java开发规约(2)

    本文是对阿里插件中规约的详细解释二,关于插件使用,请参考这里 及时清理不再使用的代码段或配置信息. 说明:对于垃圾代码或过时配置,坚决清理干净,避免程序过度臃肿,代码冗余 Positive examp ...

  2. 阿里内部发布最新版Java进阶笔记,金九银十看这份文档就够了

    大家都说程序员这个职业薪资高.待遇好,现在是程序员"跳槽"的黄金时期,你准备好了吗?有没有给自己定个小目标?是30K.40K,还是更高?短期内提高Java 核心能力最快.最有效的方 ...

  3. 为什么阿里Java规约要求谨慎使用SimpleDateFormat

    前言 在阿里Java开发规约中,有强制性的提到SimpleDateFormat 是线程不安全的类 ,在使用的时候应当注意线程安全问题,如下: 其实之前已经介绍过使用JDK1.8的DateTimeFor ...

  4. 阿里Java岗P5-P7成长笔记【3283页PDF文档】

    又到了"金九银十"面试求职高峰期,在金三银四时也参与过不少面试,2020都说工作不好找,也是对开发人员的要求变高.前段时间自己有整理了一些Java后端开发面试常问的高频考点问题做成 ...

  5. 看完Alibaba“Java成长笔记”我懂了! 为什么阿里的程序员成长如此之快?

    前言 关于技术人如何成长的问题,一直以来都备受关注,因为程序员职业发展很快,即使是相同起点的人,经过几年的工作或学习,会迅速拉开极大的差距,所以技术人保持学习,提升自己,才能够扛得住不断上赶的后浪,也 ...

  6. 阿里Java岗P5-P7成长笔记【3283页PDF文档免费领】

    又到了"金九银十"面试求职高峰期,在金三银四时也参与过不少面试,2020都说工作不好找,也是对开发人员的要求变高.前段时间自己有整理了一些Java后端开发面试常问的高频考点问题做成 ...

  7. 《阿里巴巴Java开发规约》插件全球首发!

    经过247天的持续研发,阿里巴巴于10月14日在杭州云栖大会上,正式发布众所期待的<阿里巴巴Java开发规约>扫描插件! 插件全球首发仪式,大牛云集 阿里巴巴大牛天团倾力助阵:毕玄.玄难. ...

  8. Java开发者跳槽必备:2021阿里Java面试题目大汇总

    5.高并发 6.中间件 7.之前项目经历,运用的技术,遇到的问题,如何解决,个人有什么收获和成长: 8.对于技术的热情(平时是否看些技术书籍,逛论坛,写博客,写源代码或程序等): JAVA开发技术面试 ...

  9. 《阿里巴巴Java开发规约》插件使用详细指南

    阿里巴巴于10月14日在杭州云栖大会上,正式发布众所期待的<阿里巴巴Java开发规约>扫描插件.今天,阿里妹为大家详细介绍一下IDEA插件与Eclipse插件的安装使用. 插件下载地址 h ...

最新文章

  1. 数据科学家所需的大脑训练
  2. 【转】Yahoo!团队:网站性能优化的35条黄金守则
  3. python龟图_python学习turtle(龟图标状态)
  4. 部署到gcp_剖析大数据公司为什么选择 GCP?
  5. linux接收数据并保存到环形缓冲区,自定义print函数缓存打印数据到环形缓冲区...
  6. 『ORACLE』SPM(下)-baseline实验(11g)
  7. 人均维护服务器数量,华为FusionCube一体机助力金华职业技术学院构建最佳云平台...
  8. Python实现微信机器人——itchat库
  9. Ubuntu 16.04 安装iNode客户端
  10. html中让图片放大的代码,HTML5图片预览 放大(示例代码)
  11. 网页加速系列(六)、 网页加速之进阶下篇
  12. 年轻人的第一台挂灯:米家显示器挂灯
  13. git:remote: [session-f044bfa6] well: Incorrect username or password (access token)
  14. 大陆移动手机卡开通国际漫游(港澳台)
  15. 大学四年,因为这些网站,他顺利拿下字节跳动的offer!
  16. C# Environment.StackTrace、StackFrame、Tirm的使用技巧
  17. C专家编程 第6章 运动的诗章:运行时数据结构 6.1 a.out及其传说
  18. html代码劫持教程,记录一次 JavaScript解密(跳转劫持代码)全过程
  19. java aes对称加密算法_JavaAES128对称加密算法实现
  20. 模拟CMOS集成电路设计学习记录1

热门文章

  1. fedora mysql gui,在RHEL、CentOS及Fedora上安装Drupal 8——开源内容管理系统
  2. c语言期终试卷,谁有c语言的往年期中试卷么
  3. 新闻页面_页面加载功能设计总结
  4. 2018/11/22工作日志
  5. MATLAB gui 欢迎界面 插入图片
  6. 日访问量1万mysql_日访问量1万服务器
  7. TAUCS库的编译(vs2010)
  8. SVD decomposition and polar decomposition
  9. php model controller,Laravel 中 Controller访问Model函数/常量
  10. 2019工作榜单|Python程序员吸金榜,AI排第一,这个我服!