【java】空字符串“”和null区别,以及判空的方案

news2024/9/25 21:24:03

空字符串“”
1、类型:“”是一个空字符串(String),长度为0,占内存,在内存中分配一个空间,可以使用Object对象中的方法。(例如:“”.toString()等)
2、内存分配:表示声明一个字符串类型的引用,其值为“”空字符串,这个引用指向str1的内存空间。
null
1、类型:null是空引用,表示一个对象的值,没有分配内存,调用null的字符串的方法会抛出空指针异常。(例如:str1.endsWith(str2); java.lang.NullPointerException)
2、内存分配:表示声明一个字符串对象的引用,但指向null,也就是说没有指向任何内存空间。
例: String str1 = “”; //str1对应一个空串,声明对象的引用
String str2 = null; //str2引用为空
String str3 = new String(); //str3将指向具体的String实例,默认值为“”
注意:str1和str3被实例化,而str2没有实例化,但str1和str3所指的地址不同,但值一样,都为空。
null不是对象(空引用),“”是对象,故比较的时候应该是if(str1.equals(“”))和if(str2 == null),也即对象用equals()比较,null用等号比较。正确的写法是先判断是不是对象,如果是,再判断是不是空字符串。
补充说明:
1、Java中类的对象都是用句柄来访问的, 类似于C中的指针。
2、Java中有两个判断相等的方法:“==”和equals()方法,前者是根据地址来比较,只有地址和值都相等,这两个变量(引用类型)才相等;后者比较的是变量的值,只要值相等,两者就相等。
3、在Java中变量和引用变量是存在栈中(stack),而对象(new出来的)都是存放在堆中(heap)。
例如:String str = new String(“abc”);//str存放在stack中,abc这个值存放在heap中,并指向其分配的内存空间。

 //数据库中 测试的sex的值为空
        Student student = studentMapper.selectStudent(sname);
        System.out.println(student);//Student(sno=5, sname=测试, sex=null, create_date=Sat Jul 08 13:43:38 CST 2023, headimage=null)
        try {
            //System.out.println(student.getSex().equals(null));  //会报空指针
            System.out.println(student.getSex());  //null
            System.out.println("".equals(student.getSex())); //false
            System.out.println(null==student.getSex());//true  (貌似是更推荐的用法
            System.out.println(student.getSex()==null);//true
        }catch (Exception e){
            System.out.println(e);
        }

在这里插入图片描述

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

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

相关文章

【Distributed】分布式监控系统zabbix应用(一)

文章目录 前言一、Zabbix基本概述1. Zabbix 的概念2. Zabbix 的工作原理3. Zabbix 6.0 新特性3.1 Zabbix 可以实现高可用3.2 Zabbix 新增监控系统 4. Zabbix 的构成5. Zabbix 的功能组件5.1 数据库5.2 Web 界面5.3 Zabbix Agent5.4 Zabbix Proxy5.5 Java Gateway 6. Zabbix 和 …

【JavaWeb】了解JavaScript DOM API

目录 1、什么是DOM 1.1、DOM树 1.2、 了解事件 2、常用的DOM API 2.1、选中页面元素 2.2、获取/修改元素内容 2.2.1、innerHTML和innerText 2.2、获取/修改元素属性 2.3、获取/修改表单元素属性 3、JQuery框架的简单了解和使用 4、代码案例:实现聚合索引功…

python 常用数据结构-元祖

Tuple 元组 元组定义与使用元组常用方法元组与列表 元组定义 元组是有序的不可变对象集合元组使用小括号包围,各个对象之间使用逗号分隔定义元祖可以不用括号,直接使用,隔开元组是异构的,可以包含多种数据类型 元组使用:创建 …

解决Unity的PostProcess奇怪报错

大家好,我是阿赵。   最近在使用Unity的PostProcess后处理效果的时候,发现了一个问题,下面记录一下这个问题的出现原因和解决办法。 一、出现问题 问题是这样出现的:   在场景里面添加某一个后处理效果后,当这个后…

JUC之ThreadLocal

文章目录 1 基础知识1.1 强软弱虚四种引用 2 ThreadLocal出现的好处3 ThreadLocal源码分析3.1 ThreadLocal内存泄露问题3.2 ThreadLocal为什么使用的是弱引用3.3 清扫过期的Entry 4 ThreadLocal使用建议 1 基础知识 1.1 强软弱虚四种引用 【整体结构】 【强引用】 【软引用…

(文件[夹]批量分类整理_多级匹配_交叉匹配_路径结构交叉调整)文件[夹]批量复制

​ 首先,需要用到的这个工具: 百度 密码:qwu2 蓝奏云 密码:2r1z ​如果没有使用过此工具,建议阅读此教程前,先看下这篇文章:https://mp.csdn.net/mp_blog/creation/editor/113605549 原理&…

【Python爬虫与数据分析】文件读写

目录 一、概述 二、txt文件读写 三、csv文件读写 四、Json文件读写 一、概述 读写模式: r:读数据w:覆盖写入a:追加写入rb:以二进制形式读出wb:以二进制形式写入ab:以二进制形式追加r、w、…

Java log 日志

文章目录 log4j.properties配置 log4j.properties 配置 log4j.rootLoggerINFO, stdoutlog4j.appender.stdoutorg.apache.log4j.ConsoleAppender log4j.appender.stdout.layoutorg.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern%d{yyyy-MM-dd H…

MySQL单表查询练习题

目录 第一题 第二题 第三题 第一题 1.创建数据表pet,并对表进行插入、更新与删除操作,pet表结构如表8.3所示。 (1)首先创建数据表pet,使用不同的方法将表8.4中的记录插入到pet表中。 mysql> create table pet( name varchar(…

网络安全(黑客)内网渗透基础知识

0x01 内网概述 内网也指局域网(Local Area Network,LAN)是指在某一区域内由多台计算机互联成的计算机组。一般是方圆几千米以内。局域网可以实现文件管理、应用软件共享、打印机共享、工作组内的历程安排、电子邮件和传真通信服务等功能。 内…

交叉导轨的结构与特长

在交叉导轨中,精密滚柱互相直交地组合在一起的滚柱保持架与设置在专用轨道上的90V形沟槽滚动面组合起来使用。通过将2列滚子导轨平行地装配,使导轨系统能承受4个方向的负荷。而且,因能向交叉滚子导轨施加预压,从而能获得无间隙且高…

zookeeper单机安装

1 检查环境jdk 参考:https://blog.csdn.net/weixin_44098426/article/details/128446376 2 解压安装包 mkdir -p /opt/zookeeper mv /home/wh/software/zk/apache-zookeeper-3.5.7-bin.tar.gz /opt/zookeeper tar -xzvf apache-zookeeper-3.5.7-bin.tar.gz 3 配置…

在Windows环境下安装Elasticsearch 8.8.2

Elasticsearch是一种开源的分布式搜索和分析引擎,被广泛应用于构建实时搜索、日志分析、数据可视化等应用。本文将详细介绍如何在Windows环境下安装和配置Elasticsearch 8。 安装Elasticsearch 步骤1:准备工作 在开始安装之前,确保已满足以…

多元回归预测 | Matlab灰狼算法(GWO)优化极限梯度提升树XGBoost回归预测,GWO-XGBoost回归预测模型,多变量输入模型

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 多元回归预测 | Matlab灰狼算法(GWO)优化极限梯度提升树XGBoost回归预测,GWO-XGBoost回归预测模型,多变量输入模型 评价指标包括:MAE、RMSE和R2等,代码质量极高,方便学习和替换数据。要求2018版本及以上。 部分源…

GPON MAC SFP ONU模块介绍与应用

伴随着网络通讯技术的发展,pon无源光网络正逐步走进人们的视野;在这之前你是否仅知道以太网接入?相比与以太网接入,pon作为一种点到多点网络,具有运维成本低、服务范围广、资源占用少等优势;我们最为熟知的…

CSS自学框架之漂浮提示(上方显示 底侧显示 右侧显示 左侧显示)

漂浮提示可以用较为隐藏的方式为用户提供帮助或引导信息,将鼠标移入文字内容后展示。 css代码: /* 浮漂提示框 */[myth-tag]{ position: relative }[myth-tag]:before, [myth-tag]:after{z-index: 1;opacity: 0;position: absolute;pointer-events: non…

LVS负载均衡集群之LVS-NAT集群

目录 一、什么是集群? 1.1、集群(cluster)的含义 1.2、问题 1.3解决方法 二、集群分类 2.1、负载均衡集群(Load Balance Cluster) 2.2、高可用集群(High Availability Cluster) 2.3、高性能运算集群 (High Performance Computer Clust…

企业服务器数据库被360后缀勒索病毒攻击后的正确处理方式

在数字化时代,企业服务器数据库的安全性至关重要。然而,即使采取了各种安全措施,仍然有可能遭受到360等后缀的勒索病毒网络攻击。近期,很多企业的云服务与物理服务器遭到了360后缀的勒索病毒攻击,导致企业内部数据库中…

能够ping通服务器的同时端口不通的排查方法

概述 当您在客户端访问目标服务器时,如果能ping通,但业务端口无法访问,您可以参见以下方法进行排查。 步骤一:实例安全组检查 1、登录ECS管理控制台,单击实例。 2、在顶部菜单栏左上角处,选择地域。 3、…

Visual Studio下2022Opencv的配置

Visual studio2022 opencv的配置 先从官网下载opencv : opencv releases 下载 ​ 我这里的开发环境是window版本,我们选择Windows版本进行下载 点开下载的文件,输入需要保存的路径 记住你保存的路径(我这里安装再F:) 安装需要时间静等安装…