java代码注意点总结(持续更新)
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代码注意点总结(持续更新)的更多相关文章
- 深入理解Java虚拟机--个人总结(持续更新)
深入理解Java虚拟机--个人总结(持续更新) 每天按照书本学一点,会把自己的总结思考写下来,形成输出,持续更新,立帖为证 -- 2020年7月7日 开始第一次学习 -- 2020年7月8日 今天在百 ...
- java常用代码段整理(持续更新)
FileWriter指定编码格式 FileWriter 默认是用(ISO-8859-1 or US-ASCII)西方编码的,总之不是UTF-8的,而FileWriter类有getEncoding方法, ...
- JAVA常见异常集锦(持续更新)
No1:Nested in org.springframework.beans.factory.parsing.BeanDefinitionParsingException 2013-07-02 10 ...
- Java面试题集锦(持续更新)
1.面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: -抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面.抽象只关注对象有哪些属性和行为,并不关注这 ...
- java基础知识汇总(持续更新中....)
1.java四大特性:抽象.继承.封装,多态 构造函数: http://blog.csdn.net/qq_33642117/article/details/51909346 2.java数据基本类型: ...
- 面试必备:常考Java基础知识总结(持续更新)
面试必备:常考Java基础知识总结(持续更新) 本文的Java方面基础知识是我在面试过程中的积累和总结. Java基本数据类型.所占空间大小及对应包装类 基本类型 大小 包装类 boolean - B ...
- 【笔记】Java微服务之路(持续更新)
微服务架构的说明: 微服务的架构风格是将一个单体的应用程序开发拆解为一组"小"的服务,这里的"小"是以业务边界 来区分的,而不是根据代码的多少区分.每个服务都运 ...
- Java 集合的理解(持续更新......)
一.集合的由来 通常,我们的程序需要根据程序运行时才知道创建多少个对象.但若非程序运行,程序开发阶段,我们根本不知道到底需要多少个数量的对象,甚至不知道它的准确类型.为了满足这些常规的编程需要,我们要 ...
- Java 关键字详解(持续更新中)
abstract: 表明类或者成员方法具有抽象熟悉. 修饰类,抽象类: 抽象类不能被实例化: 抽象类中可以有属性.方法.构造,都是用来给子类继承的: ...
随机推荐
- Java初学者作业——编写JAVA程序,要求输入技术部门5位员工的理论成绩和实操成绩,计算并输出各位员工的最终评测成绩。
返回本章节 返回作业目录 需求说明: 某软件公司要求对技术部门的所有员工进行技能评测,技术评测分为两个部分:理论部分以及实操部分,最终评测成绩=理论成绩×0.4+实操成绩×0.6,要求输入技术部门5位 ...
- 使用 history 对象和 location 对象中的属性和方法制作一个简易的网页浏览工具
查看本章节 查看作业目录 需求说明: 使用 history 对象和 location 对象中的属性和方法制作一个简易的网页浏览工具 实现思路: 使用history对象中的 forward() 方法和 ...
- 编写Java程序,使用JDialog构造登录窗体
返回本章节 返回作业目录 需求说明: 实现思路: 定义用户信息实体类User. 创建LoginDemoStart主类,初始化UI. 从UI获取用户信息并保存到User实体. 实现代码:
- redis-ha手动切换slave节点为master
仅做个人记录,请慎重参考!! 问题描述:使用redis-ha启动了3个pod,现在还有一个pod正常运行,并且为slave(理论上第一个起来的pod应该为master) 通过info命令查看下图 尝试 ...
- MySQL数据库安装Version5.7.25
1.说明 MySQL数据库大版本5.7的安装没有较大变化, 所以MySQL数据库Version5.7.25安装请参考:MySQL数据库安装Version5.7 上面文章中MySQL安装使用Versio ...
- [学习笔记] RabbitMQ的安装使用
安装 使用命令行安装,会自动管理依赖(推荐): choco install rabbitmq 安装包安装: 以管理员身份安装64位的 Erlang. 下载并安装 RabbitMQ 服务.下载地址. R ...
- Flink sql 之 两阶段聚合与 TwoStageOptimizedAggregateRule(源码分析)
本文源码基于flink1.14 上一篇文章分析了<flink的minibatch微批处理>的源码 乘热打铁分析一下两阶段聚合的源码,因为使用两阶段要先开启minibatch,至于为什么后面 ...
- 开源实践 | 携程在OceanBase的探索与实践
写在前面:选型考虑 携程于1999年创立,2016-2018年全面推进应用 MySQL 数据库,前期线上业务.前端技术等以 SQL Server 为主,后期数据库逐步从 SQL Server 转到开源 ...
- python日志按天分割,保存近一个月日志,日志自动清理
python日志按天分割,保存近一个月日志 import os import logging import re from logging.handlers import TimedRotatingF ...
- react中prop-types的使用
什么是prop-types?prop代表父组件传递过来的值,types代表类型.简单来说就是用来校验父组件传递过来值的类型 import PropTypes from 'prop-types'; To ...