java 151建议_JAVA开发中151个建议

2023-11-12

1.不在常量和变量中出现混淆的字母。

2.莫让常量蜕变成变量。

3.三元操作符的类型必须一致。

4.避免带有变长参数的方法重载

5.别让null值和空值威胁到变长方法(KISS原装,Keep It simple stupid即懒人原装)

6.覆写变长方法也循环蹈矩

(1)重写方法不能缩小访问权限

(2)参数列表必须与被重写方法相同

(3)返回类型必须与被重写的方法相同或是其子类

(4)重写方法不能抛出新的异常,或值超出父类范围的异常,但是可以抛出更少的异常或者不抛出异常。

7.警惕自增的陷阱

理解:i++和++i; i++表示的是先赋值后加1;++i表示的是先加1后赋值。

public class Client{

public static void main(String[]args){

int count=0;

for(int i=0;i<10;i++){

count=count++;

}

System.out.println("count="+count);

}

}

这个程序的结果为0;

count++是一个表达式,是返回值,它的返回值就是count自加前的值,javas对自身加是这样处理的:首先把count的值(注意的是值,不是引用)拷贝到一个临时变量去,然后对count变量加1,最后返回临时变量去的值。

程序循环执行步骤:步骤1:jvm 把count 值(其值是0)拷贝到临时变量区;步骤2:count值加1,这时候count的值是1;

步骤三:返回临时变量区的值,注意这个值是0,没有修改过,步骤4:返回赋值给count,此时count值被重置成0

8.不要让旧语法困扰你

9.不要主动进行垃圾回收:因为垃圾回收机制:会 停止所有的响应,然后才检查内存中是否有可回收对象。

10.推荐toString方法。因为java提供的默认toString方法不友好,打印出来看不懂,不覆写不行。

11.覆写equals方法必须覆写hashCode方法

12.不要在本类中覆盖静态导入的变量和方法

13.显示声明UID

14.避免用序列化类在构造函数中为不变量赋值: 不变量:指带有final标识的属性是不变量。只能赋值一次,不能重复赋值。反序列化时构造函数不会被执行

15.避免为final变量复杂赋值

16.避免instanceof非预期结果:

instanceof 是一个简单的二元操作符,他是用来判断一个对象是否是一个类的实类的,其操作类似于>=、==,非常简单

instanceof 只能用于对象的判断,不能用于基本类型的判断。

null instanceof String ;false:   若左操作数是null,结果就直接返回false,不再运算右操作数是什么类。

17.用偶判断,不用奇判断。因为:java取余(%标识符)算法

,模拟如下:public static int remainder(int dividend,int divisor){

return dividend-dividend/divisor*divisor;

}

18.优先选择基本类型:安全、性能、稳定方面都好。

基本类型可以先加宽,再转变成宽类型的包装类型,但不能直接转变成宽类型的包装类型

19.不要随便设置随机种子

Random r=new Random();

设置随机种子Random r=new Random(10000);

20.接口中不要存在实现代码,因为它是一种契约。

21:静态代码一定要先声明后赋值

static {

i=100;

}

static int i=1;

22.不要重写静态方法,即使覆盖了后,也不生效

23.构造函数尽量简化

24.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java 151建议_JAVA开发中151个建议 的相关文章

  • Vue3下pinia的状态管理原理和具体使用示例

    一 Pinia是什么 Pinia在Composition API的设计背景下 以Vuex下一代的构想设计了新的Vue存储状态管理库 Pinia 是一个基于 Vue 3 的状态管理库 它提供了一个可组合的 类型安全的 API 来管理 Vue
  • SpringMVC学习指南(2)

    文章目录 系列文章目录 前言 一 RequestMapping注解 1 1 value属性 1 2 method属性 1 3 params属性 1 4 header属性 1 5 通配符 二 PathVariable 注解 三 REST风格的
  • 安装64位SoildWorks时总是出现无法确定当前的订阅失效日期

    总共会出现两个弹窗信息 弹窗1 安装管理程序无法确定当前的的订阅失效日期 您想重新激活您的许可以更新信息吗 这个弹窗要点击 否 弹窗2 无法决定订阅服务失效日期 您必须使用 这个点击 确定 转载于 https www cnblogs com
  • matlab画对数坐标!

    在很多工程问题中 通过对数据进行对数转换可以更清晰地看出数据的某些特征 在对数坐标系中描绘数据点的曲线 可以直接地表现对数转换 对数转换有双对数坐标转换和单轴对数坐标转换两种 用loglog函数可以实现双对数坐标转换 用semilogx和s
  • 专访《白话区块链》作者蒋勇:学习区块链空谈不如实践

    上周HiBlock区块链社区联合蒋勇老师推出课程 区块链技术概念及智能合约实践 课程上线一天内报名42人 3天时间报名80多人 其中70人通过审核 超额完成第一期招生 为保证学员学习效果 不得已提前关闭报名通道 近几天来 很多学员还在留言问
  • 用C++实现数组切片

    这里写自定义目录标题 用C 实现数组切片 写的一般 权当抛砖引玉了 int slice int arr const int n int a new int n for
  • ubuntu20.4编译AOSP安卓源码(AndroidP android-9.0.0_r9)

    目录 代码下载 安装初始化依赖工具 配置repo工具 配置git信息 初始化仓库 配置编译环境 安装jdk 安装编译依赖 编译 初始化编译环境 选择编译目标 编译源码 启动模拟器 windows和Linux协同工作 遇到的问题解决 安装依赖
  • /etc/sysctl.conf 调优 & 优化Linux内核参数

    from http apps hi baidu com share detail 15652067 http keyknight blog 163 com blog static 3663784020104152407759 http bl
  • vue + video.js 加载多种视频流(HLS、FLV、RTMP、RTSP)

    起因 由于需要在一个项目内接入多种常用的视频流 所以接触到video js 这里就做个记录 框架 vue2 video js videojs contrib hls videojs flvjs es6 videojs flash video
  • 微信小程序支付 java

    话不多说 直接开撸 支付流程步骤 1 首先调用wx login方法获取code 通过code获取openid 2 java后台调用统一下单支付接口 这里会进行第一次签名 用来获取prepay id 3 java后台再次调用签名 这里会进行第
  • 锁升级过程和原理

    目录 同步方法与一般方法字节码对比 对象头中的锁信息 锁升级中涉及的四种锁 锁升级的过程 锁升级过程和原理 同步方法与一般方法字节码对比 public class SynchronizedTest1 public static void m
  • Linux权限详解

    你好 我是史丰源 欢迎你的来访 希望我的博客能给你带来一些帮助 我的Gitee 代码仓库 Linux权限 Shell外壳程序运行原理 Shell 外壳 相当于一层遮蔽内部的保护壳 Linux是一个操作系统 请大家思考一个问题 我们 操作系统
  • pytest参数化实现DDT:读取JSON数据

    JSON JavaScript Object Notation JS 对象简谱 是一种轻量级的数据交换格式 与上一篇文章类似 使用pytest中的pytest mark parametrize 便可实现参数化 代码如下所示 导入json模块
  • conda新建、复制、删除、重命名envs环境

    1 新建环境 conda create n torch python 3 6 这样就创建好了一个名叫torch的python3 6环境 2 复制环境 conda create n new torch clone torch 这样就将torc
  • 【PSO-LSTM】基于PSO优化LSTM网络的电力负荷预测(Python代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 1 1 LSTM神经网络算法 1 2 PSO算法 1 3 PSO LSTM负荷预测模型 2 运行结果 2
  • pytorch: 转onnx模型

    摘要 onnx Open Neural Network Exchange 主要用于部署 训练一般使用pytorch和tensorflow 等训练完成 我们需要模型转成onnx 用于部署在云或者边缘计算上 而为什么要要转成onnx模型呢 主要
  • vscode CommandNotFoundError: Your shell has not been properly configured to use ‘conda activate‘.解决

    1 问题出现 已安装anaconda并已添加其环境变量 测试在win cmd中输入conda及相关conda activate命令等都是正常的 但当在vscode中run debug工程py脚本时出现以下错误及提示 2 踩坑记录 1 根据提
  • xterm使用详情

    常用配置项 rendererType dom canvas 渲染器类型 当 canvas 渲染器运行过慢时 会回退为 DOM 渲染器 DOM 渲染器下不起作用的功能 Letter spacing Cursor blin cols numbe
  • word页码怎么从第三页开始设置为第一页_Word小技巧

    在使用word编辑文档或者写论文的时候 会涉及到页码的设置 今天粉笔君就来给大家分享一下如何快速正确的设置页码格式 一 第一页为封面 第二页为目录 从第三页开始编码 1 将鼠标固定到文档第二页的第一个字符前 在菜单栏中单击 布局 选项 找到

随机推荐

  • Java+Servlet+Jsp(el, jstl)+MyBatis的CRUD练习小项目

    1 概述 这篇博客主要是分享一个基于Servlet Jsp el jstl MyBatis的CRUD练习小项目 包括项目的源码 以及项目的逻辑 通过这个项目能够学习Java web中最基础的servlet jsp和mybatis的使用 为后
  • 一篇短文告诉你阿里云用户如何通过等保测评

    随着等保2 0的脚步越来越近 云上等保受到越来越多人的关注 近日在成都举行的云栖大会安全论坛上 牛君特意关注了阿里云云上系统的等保合规方案 阿里云最早于2012年通过 ISO 27001 认证 并于2016年9月通过新的云计算安全等级保护三
  • 点云绪论(点云数据及获取、点云数据处理、常用软件及开源库)

    文章目录 点云数据及获取 点云数据处理 常用软件及开源库 点云数据及获取 定义 点云 point cloud 三维点的数据集合属性 三维坐标 强度 颜色 时间戳 点云组织形式 organized the point cloud is lai
  • BG-20k数据集分析及下载

    包含20000张高清背景图片 包含清晰的对象轮廓 可以用做高质量图像生成的研究 此数据集下载流程繁琐 还需要签保证书获得授权等等 可以联系此人 提供高速下载链接 q 2389411778 备注要bg20k数据集
  • centos7 ping: www.baidu.com: Name or service not known

    转自 https www cnblogs com maowenqiang articles 7727910 html root www ping www baidu comping www baidu com Name or service
  • RPC介绍+原理

    RPC 远程过程调用 它是一种通过网络从远程计算机程序上请求服务 而不需要了解底层网络技术的协议 RPC协议假定某些传输协议的存在 如TCP或UDP 为通信程序之间携带信息数据 在OSI网络通信模型中 RPC跨越了传输层和应用层 RPC采用
  • spingboot热部署,实现jsp页面时时刷新

    SpringBoot默认不支持JSP的实时更新 目前有两种解决方案 解决方法1 在配置文件 手工开启实时编译JSP的功能 application yml 配置如下 server jsp servlet init parameters dev
  • 双目标定(三)标定流程(含矫正)

    1 原理 参见单目标定基本原理 2 采集 2 1标定板的制作 大小 应当使得标定板在图像中占比尽可能大一些 占图像长度比例应当超过1 3 如果实在无法保证标定板占图像比例比较大如果占比比较小 则需要尽可能多采集一些图像 平 标定板应当尽可能
  • 单片机基础——使用USART发送和接收数据(DMA模式)

    1 准备工作 硬件准备 开发板 首先需要准备一个小熊派IoT开发板 并通过USB线与电脑连接 2 生成MDK工程 选择芯片型号 打开STM32CubeMX 打开MCU选择器 搜索并选中芯片STM32L431RCT6 配置时钟源 如果选择使用
  • STM32 标准外设SPL库、硬件抽象层HAL库、低层LL库区别?

    1 STM32 之一 HAL库 标准外设库 LL库 ZC Shou的博客 CSDN博客 ll库 仔细阅读 2 STM32标准外设库 HAL库 LL库 King先生 博客园 3 STM32 之 HAL库 戈 扬的博客 仔细阅读 4 STM32
  • sql: SQLite,MySQL,SQL Server

    SQLite 3 CREATE TABLE DuStudentList StudentId INTEGER PRIMARY KEY AUTOINCREMENT StudentName TEXT NOT NULL StudentNO TEXT
  • Oracle 11Gr1监听报错TNS-12542 12560 00512

    环境 Oracle 11Gr1 Linux Redhat 5 重启机器后 数据库监听启动报错如下 TNS 12542 TNS address already in use TNS 12560 TNS protocol adapter err
  • Go_数据类型转换(Sprintf、Format)

    数据类型转换 类型转换是将一种数据类型的变量转为另一种类型的变量 Go强制要求使用显式类型转换 所以语法更能确定语句及表达式的明确含义 转换的时候如果大的转给小的 会有精度损失 数据溢出 比如int64转int8 转换格式 将v转成T类型
  • vscode php debug断点调试

    记录一个我配置debug的总结 大概步骤 下载对应版本xdebug 下载vscode插件 配置 只要跟着一步一步配置即可 在桌面创建一个test文件夹 创建一个index php文件 win r 输出cmd cd到这个文件夹 使用php内置
  • 这一年,我们一起追过的梦想

    这一年 我们一起追过的梦想 梦想是一个好大的话题 是一个振奋人心的词汇 也是一个遥遥无期的词汇 总是给人希望 但是却让人很难把握 这一年我们牢牢的把握住了时间 让它发挥它最大的效益 IT主旋律 键盘上的舞动 这个学期开始接触软件工程项目之C
  • 2013-2014嵌入式开发从业人员调查报告

    调查背景 在嵌入式 移动互联网 物联网等热门技术日益普及的今天 以实现智能化为核心目标的典型技术 已经成为了整个信息产业毋庸置疑的主旋律 特别是近1年 以智能家居 智能医疗 可穿戴设备等为首的大量智能硬件批量的进入到人们的生活 更让这一场智
  • 学习太极创客 — MQTT(七)MQTT 主题进阶

    视频链接 https www bilibili com video BV1Va4y1W7Ub spm id from autoNext vd source b91967c499b23106586d7aa35af46413 资料链接 http
  • 来袭!SOLIDWORKS 2024 主要增强功能

    在SOLIDWORKS软件使用过程中 我们知道您创建了出色的设计 您的出色设计也会得到构建 为了简化和加快从概念到制造产品的产品开发流程 SOLIDWORKS 2024 包含用户驱动的全新增强功能 重点关注 提高工作智能化程度 通过更有效地
  • 软件测试及自动化测试

    软件测试面经 文章目录 软件测试面经 软件测试理论 1 GET和POST请求区别 2 web service的接口如何测试 3 cookie session与Token的区别 4 接口测试该怎么测 5 postman和jemter的区别 6
  • java 151建议_JAVA开发中151个建议

    1 不在常量和变量中出现混淆的字母 2 莫让常量蜕变成变量 3 三元操作符的类型必须一致 4 避免带有变长参数的方法重载 5 别让null值和空值威胁到变长方法 KISS原装 Keep It simple stupid即懒人原装 6 覆写变