【开发记录】不是自己初始化的值,需要做判空/〇处理

        在Java中,如果一个变量没有被显式初始化,它将具有默认值。这些默认值依赖于变量的类型,例如,整数类型的默认值是0,布尔类型的默认值是false,引用类型的默认值是null。当我们使用这些未初始化的变量时,可能会出现一些问题,因为它们的值是不确定的。

        为了避免这些问题,我们通常会在使用之前对变量进行判空或者初始化。这样可以确保变量具有合适的值,从而避免程序运行时的异常和错误。

利处和意义:

        1. 避免NullPointerException:当一个变量是引用类型,并且没有被初始化时,其默认值是null。如果我们直接使用这个变量,而没有进行判空,就有可能抛出NullPointerException。通过判空处理,我们可以在使用变量之前检查其是否为null,从而避免出现空指针异常。

        2. 提高代码可读性:通过对未初始化的变量进行判空或者初始化,可以让代码更加清晰和易读。其他开发人员可以清楚地知道变量的状态和值,减少代码理解和维护的困难。

        3. 防止逻辑错误:有时候,变量的默认值可能与我们期望的不符。例如,一个整型变量的默认值是0,但我们期望它表示一个无效的状态。在这种情况下,我们可以通过判空或者特定的初始化来表示这个无效状态,从而避免逻辑错误。

        4. 提高程序的健壮性:通过判空和初始化,我们可以在程序运行时及早发现潜在的问题,并采取相应的处理措施。这有助于提高程序的健壮性和可靠性,减少潜在的异常和错误。

        总而言之,判空和初始化可以提高程序的稳定性和可读性,避免空指针异常和逻辑错误。对于未初始化的变量,始终要根据实际需求进行判空或者初始化,以确保变量具有合适的值。


示例代码:

    //初始化数据private static String cmiFormat(String num){if (Double.isInfinite(Double.parseDouble(num))){return "--";}if (Double.isNaN(Double.parseDouble(num)) || StringUtils.isBlank(num)){num = "0";}BigDecimal data = new BigDecimal(Validate.treatStr(num,"0"));BigDecimal percent = new BigDecimal("100");return data.divide(percent, 4, RoundingMode.HALF_UP).toString();}    //返回数据类型为String类型数据类校验public static String treatStr(Object content, String def) {if (content instanceof String) {if (StringUtils.isBlank((String) content) || "null".equals(content)) {return def;} else {return (String) content;}} else if (content == null) {return def;} else {String data = String.valueOf(content);return StringUtils.isBlank(data) ? def : data;}}  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/622957.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高效学习新编程语言的实践指南

学习一门新的编程语言或框架对于新手和有经验的程序员来说都是一个挑战。然而,通过采用一些有效的策略和方法,我们可以快速入门并掌握新的编程工具。本文将从新手和有编程经验两个不同的角度,分享一些实用的建议和技巧,帮助读者在…

Costco攻入山姆大本营

01 Costco深圳店开业火爆 “我今天不去Costco,早上还没开业,路上就已经堵车了,看来今天人很多,过几天再去”,原本计划在Costco开业当天去逛逛的张芸(化名)无奈只能放弃。 家住在Costco深圳店旁…

回归预测 | Python基于ISSA多策略改进麻雀优化ISSA-CNN-BiLSTM多输入单输出回归预测

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 原创改进, ISSA多策略改进麻雀优化ISSA-CNN-BiLSTM 多输入单输出回归 python代码 优化参数:filter,unints1,units2,学习率(可添加) 以下是三个主要的改进点&…

【Minio】常见问题解决思路

检查存储服务器对应的端口与应用服务器是否能够互通,通过ping|telnet命令检查、查看防火墙端口是否开放,检查防火墙端口linux系统和windows系统各有不同。检查电脑上的杀毒软件是否限制了网络端口和文件权限问题。检查minio配置信息是否正确,…

第三次面试总结 - 吉云集团 - 全栈开发

🧸欢迎来到dream_ready的博客,📜相信您对专栏 “本人真实面经” 很感兴趣o (ˉ▽ˉ;) 专栏 —— 本人真实面经,更多真实面试经验,中大厂面试总结等您挖掘 目录 总结(非详细) 面试内…

【面试突击】并发编程、线程池面试实战

🌈🌈🌈🌈🌈🌈🌈🌈 欢迎关注公众号(通过文章导读关注:【11来了】),及时收到 AI 前沿项目工具及新技术 的推送 发送 资料 可领取 深入理…

SpringBoot懒加载

什么是懒加载 懒加载是一种优化技术,它延迟加载或按需加载资源,以减少初始加载时间或提高性能。在不同的上下文中,懒加载有不同的应用和含义。在web开发中,懒加载通常指的是延迟加载图片数据。在长网页或应用中,如果图…

分布式链路追踪专栏,分布式链路追踪:Skywalking集群管理设计

SkyWalking 是一个开源 APM 系统,包括针对 Cloud Native 体系结构中的分布式系统的监视,跟踪,诊断功能。核心功能如下: 服务、服务实例、端点指标分析; 根本原因分析,在运行时分析代码; 服务拓…

Python学习之路-面向对象:三个基本特征

Python学习之路-面向对象:三个基本特征 三个基本特征 封装:根据职责将属性和方法封装到一个抽象的类中继承:实现代码的重用,相同的代码不需要重复的编写多态:不同的对象调用相同的方法,产生不同的执行结果&#xff0…

【Qt】QThread moveTothread-多线程的两种实现方法

一、如何理解多线程 二、实现多线程的两种方式(面向应用) 2.1 继承 QThread 的类 2.2 (推荐这种方式)函数 moveTothread() 三、多线程的释放问题(善后工作) 多线程的两种实现方法 一、如何理解多线程二、实现多线程的两种方式&…

跟着暄桐林曦老师读《宝贵的人生建议》,重视心这颗种子

暄桐林曦老师在《见道明心的笔墨》读书课上讲到:人要在心这颗种子上去进化。当人的动机和果实都清静时,才能在内心具足里转化出更多可能性,进入正面的循环里。“宽以待人,严以律己,反之,则人人身处地狱”&a…

贯穿设计模式-装饰者模式

样例代码 涉及到的项目样例代码均可以从https://github.com/WeiXiao-Hyy/Design-Patterns.git获取 需求 旨在不改变一个对象逻辑的前提下,为这个对象添加其他额外的职责 在业务投放的同时,需要给用户发放红包或者积分,在不改动的投放逻辑的前…

golang实现rpc方法二:使用jsonrpc库【跨平台】

首先在golang实现rpc方法一net/rpc库中实现了RPC方法,但是那个方法不是跨平台的,没法在其他语言中调用这个实现的RPC方法,接下来我们可以通过jsonroc库实现跨语言的RPC方法。俩种实现方式的代码其实也是差不多的,大差不差&#xf…

AcWing 5386. 进水出水问题【线性dp+差值dp】

原题链接:https://www.acwing.com/problem/content/5389/ 某泳池装有 n 个水管,编号 1∼n。 每个水管都是既可用于进水,也可用于出水。 其中,第 i 个水管工作时的单位时间进水或出水量为 ai。 我们希望泳池保持水循环的同时&a…

【机器学习300问】7、怎么进行机器学习?机器学习的基本流程是什么?

一、写在前面 也许你和我一样,在刚开始学习机器学习的基本知识的时候,学到了很多的零碎知识点,无法穿成线织成网,本文是机器学习中提纲挈领的一环,将和你一起将今后所有的知识点都捕捉在这张网中。 当你在问“…

仿stackoverflow名片与b站名片实现(HTML、CSS)

目录 前言一、仿stackoverflow名片HTMLCSS 二、仿b站名片HTMLCSS 素材 前言 学习自ACwing - Web应用课 一、仿stackoverflow名片 HTML <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport&…

BDD(Behavior-Driven Development)行为驱动开发介绍

为什么需要BDD&#xff1f; “开发软件系统最困难的部分就是准确说明开发什么” (“The hardest single part of building a software system is deciding precisely what to build” — No Silver Bullet, Fred Brooks) 。 看一下下面的开发场景&#xff1a; 场景一&#xf…

生成随机id

在Node.js中&#xff0c;你可以使用uuid模块来生成随机的ID。uuid模块提供了多种生成唯一标识符的方法&#xff0c;包括基于时间戳、随机数等不同的算法。 以下是一个简单的示例&#xff0c;演示如何在Node.js中使用uuid模块生成随机ID&#xff1a; 首先&#xff0c;你需 np…

基于TCP的全双工网络编程实践

首先我们先了解一下什么是全双工通信&#xff1f; 全双工数据通信允许数据同时在两个方向上传输&#xff0c;因此&#xff0c;全双工通信相当于是两个单工通信方式的结合&#xff0c;它要求发送设备和接收设备都有独立的接收和发送能力。 TCP服务端代码&#xff1a; #includ…

M-VAE

Word2Vec c(y) 辅助信息 作者未提供代码