精华内容
下载资源
问答
  • Java进阶(二十一)java 空字符串与null区别

    万次阅读 多人点赞 2015-12-29 21:47:08
    java空字符串与null区别 1、类型 null表示的是一个对象的值,而并不是一个字符串。例如声明一个对象的引用,Stringa=null; ""表示的是一个空字符串,也就是说它的长度为0。例如声明一个字符串Stringstr=""; 2、内存...

    java 空字符串与null区别

    1、类型

          null表示的是一个对象的值,而并不是一个字符串。例如声明一个对象的引用,String a = null ;

          ""表示的是一个空字符串,也就是说它的长度为0。例如声明一个字符串String str = "" ;

    2、内存分配

          String str = null ; 表示声明一个字符串对象的引用,但指向为null,也就是说还没有指向任何的内存空间;

          String str = ""; 表示声明一个字符串类型的引用,其值为""空字符串,这个str引用指向的是空字符串的内存空间;

          在java中变量和引用变量是存在栈中(stack),而对象(new产生的)都是存放在堆中(heap):

          就如下:

          String str = new String("abc") ;

          ps:=左边的是存放在栈中(stack),=右边是存放在堆中(heap)。

    3、示例程序:

    public class String_Demo {
        /**
         * @param args
         */
        public static void main(String[] args) {        
            String str1 = new String() ;
            String str2 = null ;
            String str3 = "" ;
            System.out.println(str1==str2);                // 内存地址的比较,返回false
            System.out.println(str1.equals(str2));         // 值的比较,返回false
            System.out.println(str2==str3);                // 内存地址的比较,返回false
            System.out.println(str3.equals(str2));         // 值的比较,返回false
            System.out.println(str1==str3);                // 内存地址的比较,返回false
            System.out.println(str1.equals(str3));         // 值的比较,返回true
        }
    }

          通过如上的程序可以得出如下结论:

          字符串对象与null的值不相等,且内存地址也不相等;

          空字符串对象与null的值不相等,且内存地址也不相等;

          创建一个字符串对象的默认值为"";

           " "分配了内存 ;null没有;

           调用null的字符串的方法会抛空指针异常。 

          ""是一个字符串(String),它在内存中是存在的。它可以使用Object对象中的方法(如"".toString();"".equals()) 。 而null它是一个空对象,在内存中是不存在的,它不可以使用Object对象中的方法。

           ""占内存,在内存中会分配一个空间.;null不占内存,为空引用。

          String str1 = null; str1引用为空;

         String str2 = "";  str2引用一个空串 。

         也就是null没有分配空间,""分配了空间,因此str1还不是一个实例化的对象,而str2已经实例化。 

          注意因为null不是对象,""是对象。所以比较的时候必须是 if(str1==null){....}和if(str2.equals("")){} 

          对象用equals比较,null用等号比较。因此,如果str1=null;下面的写法错误: 

         if(str1.equals("")||str1==null){//如果str1没有值,则.... 

         //..... 

         } 

         正确的写法是 if(str1==null||str1.equals("")){ //先判断是不是对象,如果是,再判断是不是空字符串 

          //... 

         } 

    补充

          Java里面,类的对象都是用句柄来访问的,就像C里面的指针。 

          而在Java里面有两个比较相等的方法一个是用“==”,另一个是String 里面的equals()方法,两个的区别是,前者比较的是地址,后者比较的是内容。 

          例如你写了这样的一个语句 

          String str1,str2; 

          那就是定义了两个指向不同String实例的句柄,现在他们都是指向null 的所以str1==str2==null,此时你不能用length()方法,因为,他们都没有指向具体的对象,如果调用这个方法的话,会返回一个 NullPointerException。之后,如果你写了这样的语句 str1=new String(); 那么str1将指向一个具体的String实例,所以str1!=str2,str1!=null,而且更重要的是str1!="",因为""与str1所指的是两个不同的地址。 但方法str1.length()的返回值就是0了,也就是字符串为空。同样即使你再这样写str2=new String(); 这个时候依然是str1!=str2,因为他们指向的是两个不同的地址,但如果你用str1.equals(str2)的话,返回值就是true,因为他们的内容相同,都为空。

    PS:

          你可以这么想,一个残疾人,虽然他是残疾的,但是他还是可以调用他的方法,他可以吃饭,但是如果这个人都不存在了,吃饭更无法执行了。

    美文美图

    展开全文
  • Java空字符串与null的区别 一、Java空字符串与null的区别: 1、类型 null表示的是一个对象的值,而并不是一个字符串。例如声明一个对象的引用,String a = null ; ""表示的是一个空字符串,也就是说它的...

    Java空字符串与null的区别

    一、Java空字符串与null的区别:


    1、类型
    null表示的是一个对象的值,而并不是一个字符串。例如声明一个对象的引用,String a = null ;
    ""表示的是一个空字符串,也就是说它的长度为0。例如声明一个字符串String str = "" ;

    2、内存分配
    String str = null ; 表示声明一个字符串对象的引用,但指向为null,也就是说还没有指向任何的内存空间;
    String str = ""; 表示声明一个字符串类型的引用,其值为""空字符串,这个str引用指向的是空字符串的内存空间;

    在java中变量和引用变量是存在栈中(stack),而对象(new产生的)都是存放在堆中(heap)。


    如下:

    String str = new String("abc") ;

    ps:=左边的是存放在栈中(stack),=右边是存放在堆中(heap)。


    3、示例程序:
    public class String_Demo01 {
    
        /**
         * @param args
         */
        public static void main(String[] args) {        
            String str1 = new String() ;
            String str2 = null ;
            String str3 = "" ;
            System.out.println(str1==str2);                //内存地址的比较,返回false
            System.out.println(str1.equals(str2));         //值的比较,返回false
            System.out.println(str2==str3);                //内存地址的比较,返回false
            System.out.println(str3.equals(str2));         //值的比较,返回false
            System.out.println(str1==str3);                //内存地址的比较,返回false
            System.out.println(str1.equals(str3));         //值的比较,返回true
        }
    
    }
    通过如上的程序可以得出如下结论:
    • 字符串对象与null的值不相等,且内存地址也不相等;
    • 空字符串对象与null的值不相等,且内存地址也不相等;
    • new String()创建一个字符串对象的默认值为"" (String类型成员变量的初始值为null)




    一、以下是java 判断字符串是否为空的四种方法:

    方法一: 最多人使用的一个方法, 直观, 方便, 但效率很低:

    if(s == null || s.equals(""));

    方法二: 比较字符串长度, 效率高, 是我知道的最好一个方法:

    if(s == null || s.length() == 0);

    方法三: Java SE 6.0 才开始提供的方法, 效率和方法二几乎相等, 但出于兼容性考虑, 推荐使用方法二.

    if(s == null || s.isEmpty());

    方法四: 这是一种比较直观,简便的方法,而且效率也非常的高,与方法二、三的效率差不多:

    if (s == null || s == "");



    注意:s == null 是有必要存在的.

      如果 String 类型为null, 而去进行 equals(String) 或 length() 等操作会抛出java.lang.NullPointerException.

      并且s==null 的顺序必须出现在前面,不然同样会抛出java.lang.NullPointerException.

      如下Java代码:
     String str = null;
      if(str.equals("") || str == null){//会抛出异常
                System.out.println("success");
      }

    原文链接:http://www.cnblogs.com/qiuting/p/5373571.html



























    展开全文
  • java 空字符串与null区别

    万次阅读 2011-07-24 01:07:22
    来自:http://liucun.iteye.com/blog/801691java 空字符串与null区别 " "分配了内存 ;null没有 调用null的字符串的方法会抛空指针异常。 ""是一个字符串(String).它在内存中是存在的.它可以使用Object对象中的...
    
    

    java 空字符串与null区别 


    " "分配了内存 ;null没有 
    调用null的字符串的方法会抛空指针异常。 
    ""是一个字符串(String).它在内存中是存在的.它可以使用Object对象中的方法(如"".toString();"".equals()) 
    而null它是一个空对象.在内存中是不存在的.它不可以使用Object对象中的方法 
    ""占内存.. 在内存中会分配一个空间. 
    null不占内存. 为空引用. 
    String str1 = null; str引用为空 
    String str2 = ""; str应用一个空串 
    也就是null没有分配空间,""分配了空间,因此str1还不是一个实例化的对象,儿str2已经实例化。 
    注意因为null不是对象,""是对象。所以比较的时候必须是 if(str1==null){....}和if(str2.equals("")){} 
    对象用equals比较,null用等号比较。因此,如果str1=null;下面的写法错误: 
    if(str1.equals("")||str1==null){//如果str1没有值,则.... 
    //。。。。 

    正确的写法是 if(str1==null||str1.equals("")){ //先判断是不是对象,如果是,再判断是不是空字符串 
    //... 



    补充: 
    Java里面,类的对象都是用句柄来访问的,就像C里面的指针。 
    而在Java里面有两个比较相等的方法一个是用“==”,另一个是String 里面的equals()方法,两个的区别是,前者比较的是地址,后者比较的 是内容。 
    例如你写了这样的一个语句 
    String str1,str2; 
    那就是定义了两个指向不同String实例的句柄,现在他们都是指向null 的所以str1==str2==null,此时你不能用length()方法,因为,他们 都没有指向具体的对象,如果调用这个方法的话,会返回一个 NullPointerException。 之后,如果你写了这样的语句 str1=new String(); 那么str1将指向一个具体的String实例,所以str1!=str2,str1!=null, 而且更重要的是str1!="",因为""与str1所指的是两个不同的地址。 但方法str1.length()的返回值就是0了,也就是字符串为空。 同样即使你再这样写 
    str2=new String(); 这个时候依然是str1!=str2,因为他们指向的是两个不同的地址, 但如果你用str1.equals(str2)的话,返回值就是true,因为他们的内 容相同,都为空。


    展开全文
  • 一、类型 null表示的是一个对象的值,而并不是一个字符串。例如声明一个对象的引用,String a = null ; ""表示的是一个空字符串,也就是说它的长度为0。例如声明一个字符串String str = "" ;

    一、类型

      null表示的是一个对象的值,而并不是一个字符串。例如声明一个对象的引用,String a = null ;
      ""表示的是一个空字符串,也就是说它的长度为0。例如声明一个字符串String str = "" ;

    二、内存分配

          String str = null ; 表示声明一个字符串对象的引用,但指向为null,也就是说还没有指向任何的内存空间;
      String str = "";    表示声明一个字符串类型的引用,其值为""空字符串,这个str引用指向的是空字符串的内存空间;

      ""分配了内存 ,null没有,调用null的字符串的方法会抛空指针异常(NullPointerException)。 
      ""是一个字符串(String),它在内存中是存在的,它可以使用Object对象中的方法(如"".toString();"".equals())而null它是一个空对象,在内存中是不存在的,它不可以使用Object对象中的方法。


      ""占内存,在内存中会分配一个空间。
      null不占内存,为空引用。

     

      在java中变量和引用变量是存在栈中(stack),而对象(new产生的)都是存放在堆中(heap):

      就如下:

      String str = new String("abc") ;

      ps:=左边的是存放在栈中(stack),=右边是存放在堆中(heap)。

    三、"=="与".equal()"区别

        "=="对两个字符串作比较时,比较的是内存地址是否相等。

      ".equal()"是对两个字符串对象的内容作比较,与地址无关。

    比如以下代码:

    public class String_Demo {

        /**
         * @param args
         */
        public static void main(String[] args) {       
            String str1 = new String() ;
            String str2 = null ;
            String str3 = "" ;
            System.out.println(str1==str2);                //内存地址的比较,返回false
            System.out.println(str1.equals(str2));         //值的比较,返回false
            System.out.println(str2==str3);                //内存地址的比较,返回false
            System.out.println(str3.equals(str2));         //值的比较,返回false
            System.out.println(str1==str3);                //内存地址的比较,返回false
            System.out.println(str1.equals(str3));         //值的比较,返回true
        }

    }

    综上,

    • 字符串对象与null的值不相等,且内存地址也不相等;
    • 空字符串对象与null的值不相等,且内存地址也不相等;
    • 创建一个字符串对象的默认值为""

       

       


       

    展开全文
  • Java 空字符串和null的区别【实践】

    千次阅读 2019-10-10 17:35:50
    1、空字符串 ""是一个空字符串,长度为0且占内存的,可以使用Object对象中的方法。如"".toString()。 new String() 创建一个字符串对象,默认值为""。 检查一个字符串是否为空: if (str.length() == 0) //或...
  • 判断Java空字符串三种方法的比较

    千次阅读 2017-03-25 14:21:32
    下面是 Java 判断字符串是否为的三种方法. 方法一: 最多人使用的一个方法, 直观, 方便, 但效率很低. 方法二: 比较字符串长度, 效率高, 是我知道的最好一个方法. 方法三: Java SE 6.0 才开始提供的方法, ...
  • Java 空字符串“”和null区别

    万次阅读 2014-01-02 20:39:09
    空字符串“” 1、“”是一个字符串(String),其在内存中是分配内存的,可以使用Object对象中的方法(例如“”.toString()等) 2、“”占内存,在内存中分配一个空间。 null 1、null是空对象,没有分配内存,不可以...
  • Java字符串中查找匹配的子字符串

    万次阅读 多人点赞 2017-05-07 15:25:25
    Java字符串中查找匹配的子字符串
  • 主要介绍了Java判断字符串字符串是否为数字,其中数字的判断介绍了3种方法,需要的朋友可以参考下
  • java判断字符串

    千次阅读 2019-03-05 17:50:05
    Java空字符串与null的区别: 1、类型 null表示的是一个对象的值,而并不是一个字符串。例如声明一个对象的引用,String a = null ; ""表示的是一个空字符串,也就是说它的长度为0。例如声明一个字符串...
  • java判断字符串不为和null的方法

    万次阅读 多人点赞 2018-03-22 14:32:37
    1、 空串”“是长度为0的字符串,它有自己的串长度(0)和内容(),判断一个字符串的方法: if (str.length() == 0); 或 if (str.equals("")); 2、 null串表示目前没有任何对象与...
  • java String 对象为...通常判断null,空字符串或者空格方式如下:  if (emailAddr == null || emailAddr.length()==0 || emailAddr.equals("") || emailAddr.trim().isEmpty()) {  addressName = jointMailAddr(l
  • java中String值为空字符串与null的判断方法

    万次阅读 多人点赞 2018-01-21 14:53:45
    Java空字符串与null的区别 1、类型  null表示的是一个对象的值,而不是一个字符串。例如声明一个对象的引用,String a=null。  “”表示的是一个空字符串,也就是说它的长度为0。例如声明一个字符串String s=...
  • java字符串删除字符串Sometimes we have to remove character from String in java program. But java String class doesn’t have remove() method. So how would you achieve this? 有时我们必须在Java程序中从...
  • Java判断字符串是否为

    万次阅读 2018-04-13 10:56:42
    空字符串与null区别1、类型null表示的是一个对象的值,而并不是一个字符串。例如声明一个对象的引用,String a = null ;""表示的是一个空字符串,也就是说它的长度为0。例如声明一个字符串String str = &...
  • 今天写个DEMO的时候碰到了个小麻烦,有关于题目所说的字符串这三者的区别,我觉得我真的是够了,居然会用得这么细,不过会了也好,碰到相关的问题就可以一言不合代码就开写!
  • java字符串的精确匹配 在使用Java编程语言时,我们将继续讨论与建议的实践有关的系列文章,我们将讨论String性能调优。 我们将专注于如何有效地处理字符串创建, 字符串更改和字符串匹配操作。 此外,我们将提供...
  • null表示这个字符串在栈中没有任何指向因此在堆中没有分配内存空间,如果要调用这个字符串会出现指针异常 String str = null;这个str是,没有被实例化,在栈中没有任何指向。 null表示这个字符串没有任何指向,...
  • java 判断字符串是否为

    千次阅读 2019-01-17 09:34:45
    java 字符串判断为
  • Java字符串的判定

    千次阅读 2019-02-25 12:53:31
    Java空字符串与null的区别: 1、类型 null表示的是一个对象的值,而并不是一个字符串。例如声明一个对象的引用,String a = null ; ""表示的是一个空字符串,也就是说它的长度为0。例如声明一个字符串...
  • java json null或空字符串不传输到前台

    千次阅读 2017-10-17 11:09:34
    java json null或空字符串不传输到前台 转自:http://blog.csdn.net/xieyuntestshow/article/details/38495863 大家平时用java对象转json字符串。null或者空字符串属性是不需要生成到json字符串里面的。 ...
  • Java-空字符串""和null的区别

    千次阅读 2016-10-19 00:43:41
    空字符串“” 1、类型:“”是一个空字符串(String),长度为0,占内存,在内存中分配一个空间,可以使用Object对象中的方法。(例如:“”.toString()等) 2、内存分配:表示声明一个字符串类型的引用,其值为“”...
  • JAVA String字符串

    千次阅读 2018-12-24 16:47:37
    正确的写法: "".equals(str) 或 str == null || str.equals("") ...null表示这个字符串不指向任何的东西,那么没有是否为的问题,因为引用的实例对象都没有。这时候...
  • java字符连接字符串数组 最近有人问我这个问题–在Java中使用+运算符连接字符串是否对性能不利? 这让我开始思考Java中连接字符串的不同方法,以及它们如何相互对抗。 这些是我要研究的方法: 使用+运算符 ...
  • java判断字符串是否为

    千次阅读 2014-08-22 12:10:16
    以下是 Java 判断字符串是否为的三种方法. 方法一: 最多人使用的一个方法, 直观, 方便, 但效率很低. 方法二: 比较字符串长度, 效率高, 是我知道的最好一个方法. 方法三: Java SE 6.0 才开始提供的方法, 效率...
  • 【JS】Java 判断字符串是否为的三种方法--方法一: 最多人使用的一个方法, 直观, 方便, 但效率很低.方法二: 比较字符串长度, 效率高, 是我知道的最好一个方法.方法三: Java SE 6.0 才开始提供的方法, 效率和方法二...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 424,372
精华内容 169,748
关键字:

java空字符串

java 订阅