zoukankan      html  css  js  c++  java
  • Java 空字符串和 字符串为null的区别

      之前一直没有搞清楚 字符串为空和字符串为null的区别,今天写代码一直出现NullPointerException异常,我一直没有搞清楚,后来发现我是这样写的

    String s = null;
    s = xxx.getString();
    if (!s.isEmpty() && s != null) {
    System.out.println("ok");
    } 

     我看了半天也没有看懂(拒绝嘲讽)。 所以我看着别人的博文,写一篇作笔记

    1. 不同之处

      null表示一个字符串对象的引用为空,String a=null;  声明了一个字符串变量a,变量a的引用为空。所以a没有指向任何的内存空间,在堆中也没有开辟任何的空间

      空字符串表示一个字符串对象引用的值为空,String a =“”  声明了一个字符串变量a,变量a的值为空。而a指向了空字符串的内存空间。

    2. 判断字符串为空的方法

      (1) if(s != null && s.equals(""));

      (2) if(s != null && s.length() == 0);

     public int length() {
            return value.length;
        }

      (3) if(s != null && s.isEmpty());   

        Java SE 1.6添加的方法,底层的实现和2差不多。

        实现的方法:

    public boolean isEmpty() {
            return value.length == 0;
        }

      (4)   if (s != null && s == "");

    注:不要和我一样写反了,两个判断逻辑写反了,就可能出现 NullPointerException异常。

  • 相关阅读:
    HDU 5492 Find a path
    codeforce gym 100548H The Problem to Make You Happy
    Topcoder SRM 144 Lottery
    codeforce 165E Compatible Numbers
    codeforce gym 100307H Hack Protection
    区间DP总结
    UESTC 1321 柱爷的恋爱 (区间DP)
    HDU 4283 You Are the One (区间DP)
    HDU 2476 String painter (区间DP)
    UESTC 426 Food Delivery (区间DP)
  • 原文地址:https://www.cnblogs.com/Triomphe/p/7450821.html
Copyright © 2011-2022 走看看