1、命名:包名全小写,类名首字母全大写,常量全部大写并用下划线分割,变量采用驼峰命名法
2、三元操作符:
int i=80;
String s1= String.value(i<90?90:100);
String s2= String.value(i<90?90:100.0);
返回值不一样,s1返回90,s2返回90.0
3、反序列化时,构造函数不会执行,final变量会被重新赋值。 如果在升级的类中有一个final变量是构造函数赋值的,而且新旧版本还发生了变化,则在应用请求热切的过程中,很可能出现反序列化生成的final变量值与新产生的实例值不相同的情况,于是业务异常就产生了,严重的话,会影响交易数据。
因此,在序列化类中,不使用构造函数为final变量赋值。如果final变量是方法赋值的,如:final String name=initName(),则final并不会被重新赋值,之前说final变量会被重新赋值是说简单对象,包括8个基本类型,以及数组、字符串。
4、工资分为绩效工资和基本工资,需要对绩效工资保密。
方法1:绩效工资前加transient。这样做标志着工资类市区了分布式部署的功能,一旦遇到性能瓶颈,再想实现分布式部署就不可能了,此方法不可行。

5、instanceof
'A' instanceof Character :编译不通过,因为instance只能用于对象的判断,不能用于基本类型的判断。

null instanceof String : 返回值为false,若左操作数是null,结果就直接返回false,不再运算右操作数是什么类。使用于 (String)null instanceof String一样为false

new Date() instanceof String 编译不通过,因为Date类合String没有继承和实现关系,所以编译时直接报错。

"string" instanceof Object :    返回值为true,"string"是一个字符串,字符串又继承了Object,故返回true

new Object() instanceof String:  返回值为false,Object为父类。

6、我们常把项目中的常量全部放在一个类中,如public class Constant { public final static int MAX_AGE =120;}  我们用的时候,只需要Constant.MAX_AGE。此时,如果改了Constant的MAX_AGE值为180,但是在原始的编译器重新运行后发现,用到该常量的值仍然为120,原因是,对于final修饰的基本类型和String类型,编译器会认为它是稳定态,所以在编译时就直接把值编译到字节码中了,避免了在运行期运用,以提高代码的执行效率。但是final修饰的是类,则编译器会认为它是不稳定态,采用引用关系。

注:在现在的编译器没有这个问题,一律采用引用关系,但是潜在的风险仍然存在。

转载于:https://www.cnblogs.com/yaohuiqin/p/9284612.html

《改善java代码》第一章:java开发通用原则相关推荐

  1. java篇 第一章java概述

    java概述 java是由sun公司开发的一套编程语言,主要设计者是James Gosling. java版本 1.java SE 桌面,服务器,嵌入式环境 Java SE(Java Platform ...

  2. Java设计模式第一章(软件设计原则)(学习笔记)

    3.1软件设计原则 为什么要有软件设计原则:在软件开发过程中,为了提高软件系统的可维护性和可复用性,增加软件的可扩展性和灵活性,程序员要尽量根据6条原则来开发程序,从而提高软件开发效率,节约软件开发成 ...

  3. 【Java开发语言 01】第一章 Java语言概述(基础常识+Java语言概述+Java程序运行机制及运行过程+Java语言环境的搭建+开发体验hello world+错误:编码GBK的不可映射字符)

    java入门-第一章Java语言概述 1基础常识 软件开发 人机交互方式 常用的DOS命令(win系统,有一些直接通过命令执行的) 2 Java语言概述 什么是计算机语言 关于面向对象和面向过程 Ja ...

  4. Java极速入门系列:第一章Java概述、Java环境、IDEA开发工具

    Java极速入门-第一章Java概述.Java环境.IDEA开发工具 一.什么是Java 1.好的编程语言的特性 2.Java的特点 3.Java的运行机制 4.Java的三大体系 5.Java环境 ...

  5. java标识命名服务_阿里巴巴Java开发规约第一章编程规约-命名风格篇

    1.[强制] 代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束. 反例: _name /__name / $name / name_ / name$ / name__ 老四附言: ...

  6. Java 学习笔记:第一章 Java入门

    Java 学习笔记:第一章 Java入门 1.1 计算机语言发展史以及未来方向 1.2 常见编程语言介绍 C语言 C++ 语言 Java语言 PHP 语言 Object-C和Swift 语言 Java ...

  7. 【JAVA SE】第一章 Java语言概述、环境变量和HelloWorld

    第一章 Java语言概述.环境变量和HelloWorld 文章目录 第一章 Java语言概述.环境变量和HelloWorld 一.Java语言概述 1.Java简介 2.Java发展历史 3.Java ...

  8. 基于《java2实用教程》的java知识点复习整理【第一章——java入门】

    第一章--java入门 一.知识结构框架 二.知识点详解 1.java特点:编写一次,随处运行 简单 Java要比C++简单,C++中许多容易混淆的概念,被Java弃之不用了,或者以一种更清楚更容易理 ...

  9. 第一章 Java环境搭建、IDEA、Java语言

    JavaSE基础大纲: 一. Java环境搭建.IDEA.Java语言 二.Java语法.运算符.随机数 三.分支.循环.控制关键字 四.数组详解.案例训练 五.方法详解.案例训练 六.面试常见编程案 ...

  10. 第一行代码第一章——你的第一行Android代码

    第一行代码第一章-你的第一行Android代码 知识点目录 1.1 了解全貌--Android王国简介 * 1.1.1 Android系统架构 * 1.1.2 Android已发布的版本 * 1.1. ...

最新文章

  1. hdu 5124(线段树区间更新+lazy思想)
  2. 怎么移动矩形选框工具选中的东西_程序员应具备的PS基本技能(二):程序员切图最常使用的工具组-选择工具组...
  3. 【Java】 剑指offer(27) 二叉树的镜像
  4. mysql支持事务的存储引擎_MySQL基础(三)【MySQL事务与存储引擎】
  5. 小程序博客资源娱乐网带微信流量主激励视频
  6. 专家:金融科技发展需行业自律和监管合力推动
  7. 电大计算机网络本作业1,2017年最新电大计算机网络作业1-3答案.doc
  8. Linux之netstat命令详解
  9. C语言小游戏 源码 推箱子
  10. mysql导入.sql文件中文乱码_mysql通过sql文件导入数据时出现乱码的解决办法
  11. SVN设置成中文版本
  12. arcgis 批量计算几何_ArcGIS四种计算图斑面积的方法
  13. os_pend_multi.c
  14. 彻底关闭Win10自动更新(Win10企业版或专业版)
  15. 【intellij】External and inferred annotations
  16. 手机社会化分享到qq好友、qq空间、微信、微信朋友圈、微博等(区分浏览器)
  17. mysql删除表的命令
  18. R实战:【股票分析】用quantmod在股票的K线上添加标记
  19. Python+Vue计算机毕业设计安达驾校管理系统62e2u(源码+程序+LW+部署)
  20. 什么是无代码平台 无代码平台开发的优势

热门文章

  1. strcpy和strcmp——调用库函数快速操作字符数组
  2. python 中用什么键缩进 —— tab 还是空格?
  3. Session与Cookie的安全问题
  4. Java的Map接口,以及Collection和Collections的区别
  5. STM32开发 -- 4G模块开发详解(3)
  6. Java关于equals()方法和“==”逻辑运算符的区别简介
  7. 百斗度输入法linux,斗字输入法安卓版-斗字输入法app下载-最火软件站
  8. Bit-Z如何注册?【新手操作指南】
  9. 区块链共识算法Proof-of-Stake (PoS/权益证明) 常见问题解答 (1)
  10. Android 插件技术实战总结