您的位置:首页 > 编程语言 > Java开发

JAVA基础知识--代码注意事项

2017-02-07 15:47 597 查看

代码规范

参照阿里开放出来的规范吧

阿里java代码规范

关键字

访问控制修饰符

访问修饰符同一个类同包不同包,子类不同包,非子类
private1
默认11
protected111
public1111

需要注意的关键字

关键字修饰范围作用场景
final类,类变量,方法,参数变量类:不可继承;变量:不可重新赋值;方法:不可覆写,防止数据变更;防止继承类,防止覆写方法,目的就是固化,避免改变后出现不可预知的问题,注意是不可重新赋值,比如map等还是可以修改内部的数据的常量定义;防止改变
finallytry后面无论执行try或cache完之后执行(除非程序退出),注意finally里面有抛出异常或返回值的时候会覆盖try或cache代码块内的异常或返回值,异常优先于返回值,另外注意finally里面如果重新给try或cache返回的变量重新赋值是不会改变返回结果的,但如果修改返回变量内的值会影响返回结果(比如返回是个map,里面的数据变更)关闭流,释放资源等
static内部类,方法,变量,代码块设置为全局可用,无需创建实例就可以访问(可以用访问控制限制访问权限,但实际上就是全局的),内存中只存在一份数据,另外是加载类的时候进行执行静态代码的初始化和执行(一般指的的是静态代码块,按顺序执行),注意会出现并发问题,内存问题.公共常量,工具类,初始化
strictfp类、接口,方法保证浮点运算的结果使用统一的标准进行浮点运算(使忽略环境因素),提高程序的可移植性,但会降低一定的性能,注意不允许对接口中的方法以及构造函数声明strictfp关键字系统会运行在不统一的环境下,并且对数字精确度有一定要求的情况下
synchronized方法,代码块用来做线程同步,一般情况下用this或class来做,但有区别,this用于锁单个对象,两个对象是不锁的,通常使用单例和this组合来用,class的情况一般是用于静态方法的情况下使用,细节单独说明解决并发问题,比如懒加载初始化的并发问题
throw代码用于错误处理,首先避免随意抛出,其次如果使用尽量自定义Exception,并且覆写同步锁相关的代码,否则有一定的性能损耗抛出关键自定义业务异常
transient属性序列化的时候忽略该属性首先业务不需要序列化的可以加上,其次要考虑某些引用类型的序列化问题(流,文件等),最后还有比较大的数据类型(很长的一个字符串)
volatile属性标识每次使用它都到主存中进行读取,而不是各线程的缓存区,但只能保证取的从一个地方读取,无法保证原子性,依然有并发问题(一般还要和锁同时使用才行)频繁多线程有读且有写的静态变量
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: