• 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()方法也不例外,而在方法之外编译器会自动赋初值。

  • 相关阅读:
    16. Vue 登录存储
    JS 10位、13位时间戳转日期
    14.Vue 定义全局函数
    13.Vue+Element UI实现复制内容
    12.Vue+Element UI 获取input的值
    11.Vue安装Axios及使用
    Layui入手
    MongoDB自启动设置
    sql数据统计
    sql查询总结
  • 原文地址:https://www.cnblogs.com/x_wukong/p/3619221.html
Copyright © 2020-2023  润新知