JAVA基础知识--代码注意事项
2017-02-07 15:47
597 查看
代码规范
参照阿里开放出来的规范吧阿里java代码规范
关键字
访问控制修饰符
访问修饰符 | 同一个类 | 同包 | 不同包,子类 | 不同包,非子类 |
---|---|---|---|---|
private | 1 | |||
默认 | 1 | 1 | ||
protected | 1 | 1 | 1 | |
public | 1 | 1 | 1 | 1 |
需要注意的关键字
关键字 | 修饰范围 | 作用 | 场景 |
---|---|---|---|
final | 类,类变量,方法,参数变量 | 类:不可继承;变量:不可重新赋值;方法:不可覆写,防止数据变更;防止继承类,防止覆写方法,目的就是固化,避免改变后出现不可预知的问题,注意是不可重新赋值,比如map等还是可以修改内部的数据的 | 常量定义;防止改变 |
finally | try后面 | 无论执行try或cache完之后执行(除非程序退出),注意finally里面有抛出异常或返回值的时候会覆盖try或cache代码块内的异常或返回值,异常优先于返回值,另外注意finally里面如果重新给try或cache返回的变量重新赋值是不会改变返回结果的,但如果修改返回变量内的值会影响返回结果(比如返回是个map,里面的数据变更) | 关闭流,释放资源等 |
static | 内部类,方法,变量,代码块 | 设置为全局可用,无需创建实例就可以访问(可以用访问控制限制访问权限,但实际上就是全局的),内存中只存在一份数据,另外是加载类的时候进行执行静态代码的初始化和执行(一般指的的是静态代码块,按顺序执行),注意会出现并发问题,内存问题. | 公共常量,工具类,初始化 |
strictfp | 类、接口,方法 | 保证浮点运算的结果使用统一的标准进行浮点运算(使忽略环境因素),提高程序的可移植性,但会降低一定的性能,注意不允许对接口中的方法以及构造函数声明strictfp关键字 | 系统会运行在不统一的环境下,并且对数字精确度有一定要求的情况下 |
synchronized | 方法,代码块 | 用来做线程同步,一般情况下用this或class来做,但有区别,this用于锁单个对象,两个对象是不锁的,通常使用单例和this组合来用,class的情况一般是用于静态方法的情况下使用,细节单独说明 | 解决并发问题,比如懒加载初始化的并发问题 |
throw | 代码 | 用于错误处理,首先避免随意抛出,其次如果使用尽量自定义Exception,并且覆写同步锁相关的代码,否则有一定的性能损耗 | 抛出关键自定义业务异常 |
transient | 属性 | 序列化的时候忽略该属性 | 首先业务不需要序列化的可以加上,其次要考虑某些引用类型的序列化问题(流,文件等),最后还有比较大的数据类型(很长的一个字符串) |
volatile | 属性 | 标识每次使用它都到主存中进行读取,而不是各线程的缓存区,但只能保证取的从一个地方读取,无法保证原子性,依然有并发问题(一般还要和锁同时使用才行) | 频繁多线程有读且有写的静态变量 |
相关文章推荐
- Java基础知识强化之IO流笔记11:递归之递归概述和注意事项
- Java基础知识强化之IO流笔记08:异常的注意事项
- Java基础知识强化61:经典查找之二分查找使用注意事项
- 【java基础知识(学习笔记)】--方法的重载注意事项
- mybatis-generator自动生成java代码和配置文件的注意事项
- Java基础:String类之常用方法及使用注意事项
- java多线程基础知识:如何编写线程安全代码
- Java代码书写风格及一些简单的注意事项
- 写 Java 代码的注意事项
- JSP运行在tomcat下时,页面java代码的变量命名的一个注意事项
- java代码编写注意事项
- jsp中放Java代码的注意事项
- 黑苹果安装及相关注意事项之二,基础知识
- 黑马程序员--java基础知识注意点收录
- JSP基础知识JSP中插入JAVA代码
- 编写跨平台Java程序注意事项-Java基础-Java-编程开发
- WPF代码注意事项,开发常见问题,知识总结
- 黑马程序员_java基础(一):Java简介和入门注意事项
- 黑马程序员_Java基础_03面向对象思想(对象转型注意事项、多态、抽象类、final关键字等)
- Oracle基础知识(十六) - 表或列的命名注意事项