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. 编写Java程序,用套接字编程模拟实现银行认证过程

    需求说明: 某银行一核心服务器部署了一个资金交易来往的系统,为了防止黑客入侵窃取数据,该银行专门开发了一款负责安全认证的智能机器人守护服务器,对外来访问做多重身份认证.现在要求你用套接字编程模拟实现这 ...

  2. 编写Java程序,演练静态内部类应用

    返回本章节 返回作业目录 需求说明: 创建一个Person类,在该类中定义一个Home静态内部类,并在这个Home类中定义一个显示Home相关信息的方法. 在Person类中设置一个Home类型属性对 ...

  3. gRPC创建Java RPC服务

    1.说明 本文介绍使用gRPC创建Java版本的RPC服务, 包括通过.proto文件生成Java代码的方法, 以及服务端和客户端代码使用示例. 2.创建生成代码工程 创建Maven工程,grpc-c ...

  4. dokcer部署Redis哨兵模式

    架构图 哨兵的介绍 sentinel , 中文是哨兵. 哨兵是redis 集群架构中非常重要的一个组件,主要功能如下: (1)集群监控:负责监控reidis master 和slave 进程是否正常工 ...

  5. Docker 容器化的 SonarQube 服务在不同主机之间的迁移

    安装 docker-ce // https://docs.docker.com/install/linux/docker-ce/centos/ $ sudo yum remove docker \ d ...

  6. Servlet初级学习加入数据库操作(二)

    源代码地址:https://url56.ctfile.com/f/34653256-527822631-2e255a(访问密码:7567) 将页面中的数据逐步替换为数据库管理 准备一个连接数据库的类 ...

  7. Java在linux环境下和windows环境下日期字符串显示不同

    图片如果损坏,点击链接: https://www.toutiao.com/i6511565147322974724/ 出现的现象: 在Java中我想要将当前的时间格式化为需要的字符串,然后存放到数据库 ...

  8. RDA5807M开发指南 & 开源库函数

    文档标识符:RDA5807M_T-D-P16 作者:DLHC 最后修改日期:2022.1.14 最后修改内容:修改.添加内容 发布状态:已发布 本文链接:https://www.cnblogs.com ...

  9. Solon 开发,六、提取Bean的函数进行定制开发

    Solon 开发 一.注入或手动获取配置 二.注入或手动获取Bean 三.构建一个Bean的三种方式 四.Bean 扫描的三种方式 五.切面与环绕拦截 六.提取Bean的函数进行定制开发 七.自定义注 ...

  10. 【C++】类-多态

    类-多态 目录 类-多态 1. 基本概念 2. 运算符重载 2.1 重载为类的成员函数 2.2 重载为非成员函数 3. 虚函数 4. 抽象类 5. override与final 1. 基本概念 多态性 ...