`
hongwei3344661
  • 浏览: 31292 次
  • 性别: Icon_minigender_1
文章分类
社区版块
存档分类
最新评论

Java 空字符串“”和null区别

 
阅读更多

空字符串“”

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中,并指向其分配的内存空间。

分享到:
评论

相关推荐

    Java中String判断值为null或空及地址是否相等的问题

    首先,我们需要区分`null`和空字符串`""`。`null`表示变量没有引用任何对象,而`""`则表示一个长度为零的字符串。在Java中,String对象是不可变的,这意味着一旦创建,就不能更改其值。 错误用法1:`if (name == "...

    java验证字符串是否符合json格式

    在Java编程中,验证字符串是否符合JSON(JavaScript Object Notation)格式是一项常见的任务,尤其是在进行前后端数据交互时。JSON是一种轻量级的数据交换格式,它允许数据以键值对的形式存储,易于人阅读和编写,...

    java 文本字符串替换工具

    这个"java 文本字符串替换工具"很可能是为了帮助开发者高效地搜索和替换文件中的特定文本内容。让我们详细了解一下如何在Java中实现这样的功能,以及如何通过批处理脚本(bat和sh)进行调用。 首先,要实现文本文件...

    Java获取随机字符串

    Java提供了多种方法来生成随机字符串,主要包括使用`java.util.Random`类和`java.security.SecureRandom`类。其中,`SecureRandom`类提供了一种更加安全的方式来生成随机数,它适合于安全性要求较高的应用场合。 ##...

    java 给字符串编号

    8. **异常处理**:在实际编程中,可能需要考虑异常处理,比如输入为`null`或空字符串时的情况。 9. **性能优化**:对于大量字符串处理,使用`StringBuilder`比使用`+`操作符更高效,因为后者会不断创建新的`String`...

    java字符串的各种编码转换

    ### Java字符串的编码转换 在Java中,处理不同字符集之间的字符串转换是一项常见任务。尤其是在处理国际化应用时,理解并掌握各种字符编码格式变得尤为重要。下面将介绍几种常见的字符编码格式以及如何在Java中实现...

    Java字符串长度不够前面或后面补0.txt

    ### Java字符串长度不够前面或后面补0 在Java编程中,有时我们需要确保字符串达到特定的长度,如果实际长度不足,则需要在字符串的前部或后部添加特定字符(如0)来填充,使得最终字符串满足预设长度的要求。本文将...

    Java String转换时为null的解决方法

    并不是obj的实际字符串表示,同时还必须保证对象obj不能为null,否者调用toString方法会报空指针异常java.lang.NullPointerException。 String.valueOf方法 第三种方法是使用String.valueOf方法,对象obj为null,...

    JAVA连接字符串到配置文件

    在Java开发中,将连接字符串存放在配置文件中是一种常见的最佳实践,这有助于提升代码的可维护性和灵活性。连接字符串通常用于数据库连接、API调用或者其他需要网络通信的服务。本篇将详细介绍如何在Java中实现这一...

    java 字符串操作类

    `isEmpty()` 通常用于检查字符串是否为 null 或长度为 0,而 `isNotBlank()` 不仅检查空和长度,还会考虑字符串中是否有空白字符,确保字符串含有实质性的内容。 4. **去除空格**: `trim()` 方法用于去除字符串两...

    Java字符串转换为日期和时间比较大小[归类].pdf

    Java 字符串转换为日期和时间比较大小 Java 字符串转换为日期和时间比较大小是 Java 开发中常见的操作。下面我们将详细介绍两种方法来实现 Java 字符串转换为日期和时间比较大小。 方法一:使用 SimpleDateFormat ...

    求字符串中的第一个数字

    字符串在 Java 中是一个对象,可以通过多种方式创建和操作。 #### 1.2 字符串方法 - **charAt(int index)**:返回指定索引处的字符。 - **substring(int beginIndex, int endIndex)**:返回一个新的字符串,它是此...

    java去除字符串中的空格、回车、换行符、制表符的小例子.docx

    ### Java去除字符串中的空格、回车、换行符、制表符的知识点详解 #### 一、背景介绍 在日常的软件开发过程中,我们经常需要处理来自各种来源的文本数据,例如用户输入、文件读取等。这些数据中常常会包含空格、...

    Java 字符串压缩和文件压缩代码

    在Java编程中,字符串压缩和文件压缩是常见的数据处理任务,尤其在大数据传输、存储优化等方面扮演着重要角色。本文将深入探讨Java中如何实现字符串和文件的压缩,以及涉及的相关技术。 首先,字符串压缩通常涉及到...

    理解java中的字符串的内存分配

    比较这两个变量时,应该使用 `if (str1 == null)` 来判断 `str1` 是否为 `null`,而使用 `if (str2.equals(""))` 来判断 `str2` 是否为空字符串。 #### 变量字符串与常量字符串的区别 考虑以下代码: ```java ...

    【JS】Java 判断字符串是否为空的三种方法

    在Java编程中,经常需要判断字符串是否为空(null 或者空字符串)。为了确保程序的健壮性和避免NullPointerException等异常,掌握正确的字符串判断方法至关重要。本文将详细介绍三种常用的判断字符串是否为空的方法...

    JAVA字符串操作类CTool.java字符转换类.rar

    JAVA字符串操作类CTool.java字符转换类,此类中收集Java编程中WEB开发常用到的一些工具。为避免生成此类的实例,构造方法被申明为private类型的。封装的功能:字符串从GBK编码转换为Unicode编码、对字符串进行md5...

    java json不生成null或者空字符串属性(详解)

    Gson库可以自动处理Java对象与JSON格式之间的转换,但是默认情况下,所有的属性,无论其值是什么,都会被序列化进JSON字符串中,包括null值和空字符串。 然而,在大数据传输或存储到数据库的场景中,包含大量无意义...

    关于java按字节截取带有汉字的字符串的解法

    在Java编程语言中,处理带有汉字的字符串时,由于汉字占据多个字节,按照字节进行截取可能会导致汉字被不完整地分割,从而产生乱码。为了解决这个问题,我们需要理解Unicode编码以及如何在Java中正确处理多字节字符...

    java 用递归实现字符串反转

    - **基本情况**:如果传入的字符串 `x` 为空或长度小于2,则直接返回原字符串。 - **递归步骤**:如果字符串长度大于等于2,则通过递归调用 `reverseString(x.substring(1, x.length()))` 来反转除第一个字符外的...

Global site tag (gtag.js) - Google Analytics