课时43:字符串常量

简介: 本次课程的主要讨论了String类的基本操作形式,包括基本数据类型、字符串常量、对象直接赋值等概念。1.String类的定义2.对象判断的小技巧

课时43:字符串常量

摘要:本次课程的主要讨论了String类的基本操作形式,包括基本数据类型、字符串常量、对象直接赋值等概念。

1. String类的定义

2. 对象判断的小技巧

 

现在我们已经清楚String类的基本操作形式。

 

01. String类的定义

 

我们需要做出一个明确的定义。在程序的开发之中,任何的一个整数都是int类型,任意的小数默认都是double类型,但是对于字符串而言程序之中不会提供字符串的基本数据类型可以提供的只是String类。因此,任何使用“‘’”定义的字符串常量,实际上描述的都是String类的匿名对象。以之前的代码为例:

String StrA=“mldn”;


如果现在要把上述代码画成内存关系图的,该如何画?我们首先需要考虑的是存在堆栈引用关系,“str”应该放置在栈内,“mldn”应该放置在堆内。我们以这个程序为例。“mldn”这个字符串存在堆,如果没有指向它,那么这就一个匿名对象所以按照这样的理解,所谓String类对象的直接赋值直接描述的是,将一个对象匿名对象设置一个具体的引用名字

image.png

那为什么说字符串就是匿名对象呢?我们举个范例,我们观察匿名对象的存在,需要观察一下匿名对象到底是不是真的存在。将代码修改如下:

image.png

“mldn”是个对象,如果真是匿名对象,一定可以调用 equals 方法。于是我们现在来看一下程序执行结果。

image.png

此时可以发现,字符串常量已经可以明确的调用equals 方法实现对象相等的判断,所以我们得出结果:程序中没有字符串常量这种基本类型,有的只是String类的匿名对象,而整个对象它在处理的时候完全是由系统自动识别的。

 

02. 对象判断的小技巧

 

下面介绍关于对象相等判断的小技巧。大家在以后进行项目开发的时候,如果现在某些数据是由我们用户输入,并且要求这些数据为一个指定内容的情况下。建议将字符串常量写在前面。

现在写个代码是用户输入的数据。然后执行代码,编译执行没有任何问题。

image.png

image.png

但是,如果现在假设用户输入数据没有输入,字符串接收用户输入数据的字符串调用方法:如果现在假设没有输入数据,此时为null,此时代码运行结果如图,此时代码产生错误

image.png

但是如果换个方式,将字符串的常量写在前面。那么这种情况下,我们再来看一下结果。

image.png

image.png

equals 方法可以帮我们自动回避空的功能,所以果将字符串的常量写在前面,那么我们调用equals 方法的时候,永远都不可能出现谁Null pointer exception字符串是一个匿名对象,匿名对象一定是开辟堆内存空间的对象所以按照这样的一个整体解释而言,以后我们再进行字符串等于某个字符串比较的时候,要把字符串的一个常量写在谁前面,因为匿名对象不会为空,如果写在后面,可能造成空值指向异常。

相关文章
|
关系型数据库 MySQL Docker
阿里云容器镜像加速器
使用容器时一般需要首先下载一个容器镜像,例如Docker Hub官方提供的MySQL、WordPress等容器镜像。然而由于网络原因,下载一个Docker官方镜像可能会需要很长的时间,甚至下载失败。为此,阿里云容器镜像服务ACR提供了官方的镜像站点,从而加速官方镜像的下载。 ## 获取镜像加速器地址 ACR会为每一个账号(阿里云账号或RAM用户)生成一个镜像加速器地址,配置镜像加速器前,您需要获取镜像加速器地址。
3285 0
|
9月前
|
编解码 Cloud Native 算法
通义万相:视觉生成大模型再进化
通义万相是阿里云推出的视觉生成大模型,涵盖图像和视频生成。其2.0版本在文生图和文生视频方面进行了重大升级,采用Diffusion Transformer架构,提升了模型的灵活性和可控性。通过高质量美学标准和多语言支持,大幅增强了画面表现力。此外,视频生成方面引入高压缩比VAE、1080P长视频生成及多样化艺术风格支持,实现了更丰富的创意表达。未来,通义万相将继续探索视觉领域的规模化和泛化,打造更加通用的视觉生成大模型。
|
7月前
|
Oracle Java 关系型数据库
课时48:JavaDoc文档简述
主要讲解了Java DOC文档的使用方法和技巧。首先,介绍了Java DOC的简介,强调了在开发过程中需要大量使用API文档。其次,详细解析了Java DOC的组成结构,包括位的完整定义、类的相关说明以及方法的详细解释。 1.Java DOC简介 2.Java DOC文档的组成
163 20
|
7月前
|
Java
课时18:Java运算符(逻辑运算符)
课时18介绍了Java中的逻辑运算符(与、或、非)。通过范例详细讲解了非操作的使用,展示了如何正确应用逻辑非(!)。接着分别探讨了与操作(& 和 &&)及或操作(| 和 ||),强调了短路运算符(&& 和 ||)在性能和安全性上的优势。课程通过具体代码示例演示了不同逻辑运算符的效果及其应用场景。
176 5
|
7月前
|
Java 程序员 数据处理
课时19:Java运算符(位运算符)
课时19介绍Java中的位运算符,涵盖进制转换、位与、位或及移位操作。重点讲解了二进制与其他进制的转换方法,通过具体范例演示了位与和位或运算的过程,并展示了八进制和十六进制的处理方式。此外,还解释了逻辑运算符(&&、||)与位运算符(&、|)的区别及其应用场景,特别是位运算在加密中的应用。
153 5
|
7月前
|
Java C++
课时124:assert断言
assert断言的含义以及使用 1.断言的引入 2.生活实例理解断言 3.Java 中断言的使用
162 2
|
7月前
|
Java
课时10:Java数据类型划分(整型类型)
本文主要围绕Java中整型数据展开,详细讲解整型变量、常量的概念,整型数据运算规则,包括数据溢出问题及解决方法,数据类型转换(自动转换与强制转换)的原理和注意事项,同时介绍了整型数据默认值的相关知识,以及byte数据类型与int数据类型的关系和使用场景,帮助读者全面掌握Java整型数据的相关内容。
191 4
|
7月前
|
Java 开发者
课时98:泛型接口
本文聚焦Java泛型接口,阐述泛型不仅能在位(类)上定义,还可在接口中使用。通过实际代码示例,详细介绍泛型接口的定义以及子类实现泛型接口的两种方式,帮助读者理解其概念和应用,强调在实际编程中理解和掌握这些知识的重要性。 1.泛型接口的定义 2.泛型接口的子类实现方式
153 2
|
7月前
|
Java
课时103:生成jar文件
本文介绍了Java中生成和使用JAR文件的基本概念与操作。JAR文件用于将多个类文件打包成一个压缩文件,便于管理和分发。通过JDK提供的`jar`命令可以创建JAR文件,并可通过设置CLASSPATH环境变量来配置和使用这些文件。文中还演示了如何定义、编译和打包一个简单的Java程序为JAR文件,并详细解释了JAR文件的结构及配置方法。此外,简要提及了JDK 1.9后引入的模块化系统对JAR文件的影响。
189 1
|
7月前
|
测试技术
课时108:用例图
课时108介绍了用例图的设计与描述。用例图用于展示系统中不同角色的功能分配,如系统管理员拥有系统初始化、备份、公告发布等功能,而普通管理员仅负责公告管理。通过建立Use Cases图,可以直观呈现各角色的具体功能,帮助在项目设计阶段明确角色权限和职责。用例图是详细设计和概要设计的重要组成部分,有助于清晰表达系统的功能结构。
170 1