zoukankan      html  css  js  c++  java
  • java中的null和""区别

    (1)问题一:
    null和""的区别
    String s=null;
    string.trim()就会抛出为空的exception
    String s="";
    string.trim()就不会抛,

    为什么?


    答:
    NULL:代表声明了一个空对象,不是一个字符串,可以赋给任何对象。  
    ""     :代表声明了一个对象实例,这个对象实例的值是一个长度为0的空字符串

    String s=null;  只是定义了一个句柄,即你有了个引用,但是这个引用未指向任何内存空间
    String s="";    这个引用已经指向了一块是空字符串的内存空间,是一个实际的东东了,所以你可以对它操作。

    (2)问题二:

    String s1;             //分配了一个内存空间,没存入任何对象 

    String s2=null;   //null是未分配堆内存空间

    String s3="a";   //分配了一个内存空间,存了一个字符串对象

    out.println(s1);  //   出现异常

    out.println(s2);  //    输出null

    out.println(s3);  //    输出“a”

    答:

    主要要理解的是String s; s为一个引用~~它不是对象
    第一个是没有初始化的引用;
    第二个为空引用;
    第三个是在字符串池里写入一个字符'a',然后用s指向它。
    另外,
    String s="a"和String s=new String("a");是有本质上的区别的 :

    (1)
    前者是在字符串池里写入一个字符'a',然后用s指向它;
    后者是在堆上创建一个内容为"a"的字符串对象。

    (2)
    String str="aaa"; //于栈上分配内存
    String str=new String("aaa"); //于堆上分配内存

     

    (3)问题三:
    String a;

    if(a=="")  //编译阶段即异常  

    String a = null;

    if(a==null)  //返回true

    答:
    在实际处理时,往往认为""和null代表相同的含义,即都代表无值。
    此时建议用如下语法:
    if(a==null || a=="")
    {
    }
    如果a为null,就不会执行后面的判断,直接返回true。

    null:是用来判断引用类型是否分配了存储空间
    ""  :是针对字符串的;


    (4)问题四:

    String s;在什么情况下可以等同于String s=null;而在什么情况下又不等同?
    考虑下面的代码:

    1 //StringTest.java 
    2 public class StringTest { 
    3     
    4     static String s; 
    5     
    6     public static void main(String[] args) { 
    7         System.out.println(s);   //输出null
    8 } 
    9 }    

    编译并运行上面的代码,将打印null。
    s是自动初始化了的(s被自动初始化为null)。
    由此得出结论:
    在成员变量的定义中,String s;等同于String s=null;
    而在本地变量(方法变量)的定义中,String s;不等同于String s=null;,这时要使用s必须显式地赋值。
    还有一点要说明的是:
    只要是在方法在中定义变量都要显示赋初值,main()方法也不例外,而在方法之外编译器会自动赋初值。

  • 相关阅读:
    机器学习入门-相关性分析
    R语言-记号体系
    R语言基础
    职位画像分析(pandas/ matplotlib)
    python 可视化工具-matplotlib
    pandas-缺失值处理
    k-means实战-RFM客户价值分群
    药店商品销量分析(python)
    Jike_Time-决策树
    3.7 嵌入式SQL
  • 原文地址:https://www.cnblogs.com/x_wukong/p/3619221.html
Copyright © 2011-2022 走看看