• JAVA中isEmpty、null、""的区别


    isEmpty()
            分配了内存空间,值为空,是绝对的空,是一种有值(值 = 空)  
     ""
            分配了内存空间,值为空字符串,是相对的空,是一种有值(值 = 空字串)  
     null
            是未分配内存空间,无值,是一种无值(值不存在)

    得出的结论:

    isEmpty()

      1.如果不分配内存空间,不能用isEmpty(),否则报空指针异常

      2.isEmpty()不能分辨出值是空还是空字符串

    null

      1.null只能分辨出值是否不分配内存空间

    “”

      1.不管值是否分配内存空间都不会报错

    例:

    public class Test {
        public static void main(String[] args) {
            //分配内存空间,值为空
            String a = new String();
            //分配内存空间,值为空字符串
            String b = "";
            //未分配内存空间
            String c = null;
    
            if (a != null) {
                System.out.println("a值存在");
            }
            if (b != null) {
                System.out.println("b值存在");
            }
            if (c == null) {
                System.out.println("c值不存在");
            }
            if (a == "") {
                System.out.println("a值存在,为空字符串");
            }
            if (b == "") {
                System.out.println("b值存在,为空字符串");
            }
            //dead code
            if (c == "") {
                System.out.println("c值存在,为空字符串");
            }
            if (a.isEmpty()) {
                System.out.println("a值存在,为空字符串或者为空");
            }
            if (b.isEmpty()) {
                System.out.println("b值存在,为空字符串或者为空");
            }
            // Null pointer access: The variable c can only be null at this location
    //        if (c.isEmpty()) {
    //            System.out.println("String c=null");
    //        }
        }
    
    }

    结果:

    1 a值存在
    2 b值存在
    3 c值不存在
    4 b值存在,为空字符串
    5 a值存在,为空字符串或者为空
    6 b值存在,为空字符串或者为空
  • 相关阅读:
    数据结构(双向链表...)操作API
    本地正常,打包到服务器,页面不见了
    objective c数据封装
    2. 两数相加
    在图像中画点,画框
    面试题 16.04. 井字游戏
    12.3 运动对象分割与配准算法实现
    3. 无重复字符的最长子串
    4. 寻找两个正序数组的中位数
    python读写文件模式
  • 原文地址:https://www.cnblogs.com/aaronRhythm/p/11121065.html
Copyright © 2020-2023  润新知