1. if(username.equals(“zxx”)){}

  这样写的话,如果username是null, 则会报NullPointerException,所以先要判断username是否为null.

2.  int  x = 1;

return x==1?true:false;

不会报错,但特别啰嗦。如果要返回boolean, 那么可以直接return x==1, (x==1这个表达式本来就返回boolean)

3. 尽量少用增强for循环

 增强for循环语法:

    int[] arr = {1,2,3,4,5};

    for(int i : arr) { ......}

Collection c = new ArrayList();

  c.add(new String("aaa"));

......

for(Object o : c) {......}

相对于传统for循环,缺点:

不能方便的访问下标值,而且在遍历集合时只能使用Iterator的remove方法删除集合中的元素,用增强for循环就无法使用Iterator了,所以增强for循环只适用于简单的遍历。

4.  关闭一个缓冲区输出流之前应使用flush方法.

  缓冲区其实就是封装了一个数组,对数据进行临时缓冲,存满后再集中对数据进行操作,这也是提高流操作数据效率的原因,当缓冲区存满后会自动对数据进行操作,不刷新也可以,但是如果不存满就必须刷新了(flush)才能把数据刷到目的地,打个比方,默认缓冲区大小是8k,如果你是用缓冲区操作10k的数据,你使用flush方法那么数据不会有丢失,但是如果没有使用fulsh方法那么得到得数据只有8k,剩下的2k会丢失. 因为直接对流close的话,切断的是缓冲区和文件之间的通道(流),太粗暴了! 通道切断了,缓存区的数据自然无法写到文件。 由此可见,flush方法并不是对所有的OutputStream子类都起作用的,它只对那些使用缓冲区的OutputStream子类有效。当然,不带缓冲区的OutputStream调用flush也不会报错,但是根本没啥效果。

5. 实现Serializable接口的类强烈建议显示定义一个serialVersionUID,原因可以参见个人相关的随笔

6.ObjectInputStream和ObjectOutputStream类不会保存和读取对象中的transient和static类型的成员变量。

7. 为什么super(...)和this(...)不能在同一个构造函数中出现?

  因为在构造的时候只需要调用父类的super()作为初始化父类一次,如果super(...)和this(...)同时出现的话,那么就会出现初始化父类两次的不安全操作,因为当super(...)和this(...)同时出现的时候,在调用完了super()之后还会执行this(..),而this(...)中又会自动调用super(),这就造成了调用两次super()的结果(这是假设super(...)和this(...)同时出现时候,super(...)在this(...)前面,反过来出现也一样).

8.final关键字

final标记的类不能被继承

final标记的方法不能被重写

final标记的变量(成员变量或局部变量)即成为常量,只能赋值一次,所以final标记的成员变量必须在声明的同时或在该类的构造方法中显示赋值,然后才能使用。

方法中定义的内部类只能访问该方法内的final类型的局部变量.

9. 含有抽象方法的类必须被定义成抽象类,抽象类的子类必须覆盖所有的抽象方法后才能被实例化,否则这个类还是个抽象类。

含有抽象方法的类一定是抽象类。抽象类中的方法不一定是抽象的(这也是和接口的一个区别,接口中所有的方法都是抽象的)。

10. 接口里的变量默认是public static final的,所以接口中的变量就是全局静态变量。

接口里的方法默认是public abstract的。

11. finally语句。finally语句即使在try代码块和catch代码块使用了return语句退出当前方法或break跳出某个循环,相关的finally代码块都要执行,finally代码块不能被执行的唯一情况是:在被保护的代码块中执行了System.exit(0).

12.一个方法被覆盖时,覆盖他的方法必须抛出相同的异常或者异常的子类,而不能抛出一个全新的异常

java代码注意点总结(持续更新)的更多相关文章

  1. 深入理解Java虚拟机--个人总结(持续更新)

    深入理解Java虚拟机--个人总结(持续更新) 每天按照书本学一点,会把自己的总结思考写下来,形成输出,持续更新,立帖为证 -- 2020年7月7日 开始第一次学习 -- 2020年7月8日 今天在百 ...

  2. java常用代码段整理(持续更新)

    FileWriter指定编码格式 FileWriter 默认是用(ISO-8859-1 or US-ASCII)西方编码的,总之不是UTF-8的,而FileWriter类有getEncoding方法, ...

  3. JAVA常见异常集锦(持续更新)

    No1:Nested in org.springframework.beans.factory.parsing.BeanDefinitionParsingException 2013-07-02 10 ...

  4. Java面试题集锦(持续更新)

    1.面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: -抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面.抽象只关注对象有哪些属性和行为,并不关注这 ...

  5. java基础知识汇总(持续更新中....)

    1.java四大特性:抽象.继承.封装,多态 构造函数: http://blog.csdn.net/qq_33642117/article/details/51909346 2.java数据基本类型: ...

  6. 面试必备:常考Java基础知识总结(持续更新)

    面试必备:常考Java基础知识总结(持续更新) 本文的Java方面基础知识是我在面试过程中的积累和总结. Java基本数据类型.所占空间大小及对应包装类 基本类型 大小 包装类 boolean - B ...

  7. 【笔记】Java微服务之路(持续更新)

    微服务架构的说明: 微服务的架构风格是将一个单体的应用程序开发拆解为一组"小"的服务,这里的"小"是以业务边界 来区分的,而不是根据代码的多少区分.每个服务都运 ...

  8. Java 集合的理解(持续更新......)

    一.集合的由来 通常,我们的程序需要根据程序运行时才知道创建多少个对象.但若非程序运行,程序开发阶段,我们根本不知道到底需要多少个数量的对象,甚至不知道它的准确类型.为了满足这些常规的编程需要,我们要 ...

  9. Java 关键字详解(持续更新中)

    abstract:     表明类或者成员方法具有抽象熟悉.       修饰类,抽象类:         抽象类不能被实例化:         抽象类中可以有属性.方法.构造,都是用来给子类继承的: ...

随机推荐

  1. Oracle数据库导入csv文件(sqlldr命令行)

    1.说明 Oracle数据库导入csv文件, 当csv文件较小时, 可以使用数据库管理工具, 比如DBevaer导入到数据库, 当csv文件很大时, 可以使用Oracle提供的sqlldr命令行工具, ...

  2. 前端必备,5大mock省时提效小tips,用了提前下班一小时

    ​ 一.一些为难前端的业务场景 在我的工作经历里,需要等待后端童鞋配合我的情形大概有以下几种: a.我们跟外部有项目合作,需要调用到第三方接口. 一般这种情况下,商务那边谈合同,走流程,等第三方审核, ...

  3. Swoole 中使用 Table 内存表实现进程间共享数据

    背景 在多进程模式下进程之间的内存是相互隔离的,在一个工作进程中的全局变量和超全局变量,在另一个工作进程中是无法读取和操作的. 如果只有一个工作进程,则不存在进程隔离问题,可以使用全局变量和超全局变量 ...

  4. 手写RPC-简陋版

    前言 最近不小心被隔离,放假思考一番,决定开始在手写序列.这个序列在之前看Nacous和网关源码的时候就有想法,只是一直没落实下来,趁着隔离行动起来. 必备知识介绍 序列化与反序列化 序列化是把对象的 ...

  5. Flask_Flask-Migrate数据迁移扩展(十二)

    在开发过程中,需要修改数据库模型,而且还要在修改之后更新数据库.最直接的方式就是删除旧表,但这样会丢失数据.更好的解决办法是使用数据库迁移框架,它可以追踪数据库模式的变化,然后把变动应用到数据库中. ...

  6. react中prop-types的使用

    什么是prop-types?prop代表父组件传递过来的值,types代表类型.简单来说就是用来校验父组件传递过来值的类型 import PropTypes from 'prop-types'; To ...

  7. CMake语法—环境变量(Environment Variable)

    目录 CMake语法-环境变量(Environment Variable) 1 定义环境变量 2 应用环境变量 2.1 代码结构 2.2 示例代码 2.3 运行结果 3 小结 CMake语法-环境变量 ...

  8. vue学习10-计算属性

    计算属性 1 <!DOCTYPE html> 2 <html lang='en'> 3 <head> 4 <meta charset='UTF-8'> ...

  9. 记一次redis 基于spring实现类对同一个KEY序列化内容不同导致一次事故

    我们的场景是这样的 我们对一个key:比如list.point.card:1 @Resourceprivate RedisTemplate<String, Long> redisTempl ...

  10. gin框架中的会话控制

    Cookie介绍 Http协议是无状态的,服务器不能记录浏览器的访问状态,也就是说服务器不能判断请求的客户端是否已经登录 Cookie就是解决http协议无状态的方案之一 Cookie实际上就是服务器 ...