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初学者作业——编写 Java 程序,定义 Java 类 (Point) 用来表示坐标,坐标范围在(0,0)到(100,100)以内,并显示合法的坐标在控制台。

    返回本章节 返回作业目录 需求说明: 编写 Java 程序,定义 Java 类 Point 用来表示坐标,坐标范围在(0,0)到(100,100)以内,并显示合法的坐标在控制台. 实现思路: 定义 P ...

  2. 【JPA】Spring Data JPA 实现分页和条件查询

    文章目录 1.在`Repository`层继承两个接口 2.在Service层进行查询操作 3.Page的方法 1.在Repository层继承两个接口 JpaRepository<Admin, ...

  3. c# - 接口的写法与基本调用

    1.前言 接口与Java基本一样 2.操作 (1)看路径结果 (2) 接口源码: namespace ConsoleApp1 { public interface ILogin { void Eat( ...

  4. 战争游戏(War Games 1983)剧情

    战争游戏 War Games(1983) 人工控制导弹发射 傍晚大雾,两值工作人员自驾一辆轿车到达监控俄罗斯核战争的防空基地,在门口出示工作证后进入基地,两工作人员和同事换班后,进入防空系统控制室开始 ...

  5. VsCode安装与配置

    一.安装 二.配置 开启emmet完整的语法 文件-首选项-设置:Emmet: Trigger Expansion On Tab 三.常用插件 必装: Chinese (Simplified) Lan ...

  6. 用 vite 构建项目,同时支持微前端

    得益于 esbuild 的超高性能,vite 在诞生之初就备受关注,且一直保持着活跃的开发迭代.截至目前,vite 已经迭代到了 2.7.10 版本,各方面也基本具备了在生产使用的条件.这段时间,我在 ...

  7. 【Java】流程控制

    文章目录 流程控制 一.用户交互scanner 1.1 Scanner对象 1.2 Scanner进阶使用 二.顺序结构 三.选择结构 3.1 if单选择结构 3.2 if双选择结构 3.3 if多选 ...

  8. 《剑指offer》面试题09. 用两个栈实现队列

    问题描述 用两个栈实现一个队列.队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能.(若队列中没有元素,dele ...

  9. virtual studio发布到gihub

    问题 我们想要发布代码到github或者微软团队服务时候,往往发现没有本地库,所以难以发布. 解决方案 在解决方右击就可以新建git 文件都会出现小锁说明有了记录 文件夹会对应出现 右上角管理连接也会 ...

  10. sql server(mssql)联合注入

    sql server(mssql)联合注入 sql server简介: SQL Server 是Microsoft 公司推出的关系型数据库管理系统.具有使用方便可伸缩性好与相关软件集成程度高等优点,可 ...