java String str=null

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java String str=null相关的知识,希望对你有一定的参考价值。

String str=null;

String str1="abc";
System.out.println(str+str1);//为什么输出结果为:nullabc?

这个要从源码的角度来看,从下面的代码我们及可以发现,当str==null为true时会被赋值为字符串“null”。不要问我为什么,我也不知道

追问

额,我看到这个源码了,明白了。多谢
另外请问下String str=new String();//为什么这里str不等于null呢?
System.out.print(str==null);//结果为false, 不是说引用类型的默认赋值都是null吗

追答

为什么要等于null? str已经被赋值了啊。 new这个语句已经给str在堆栈内分配一块地址。那么它就不为空了。尽管str里面什么都没有。如果你用s1.equals("");就返回true,因为str其实是一个空字符串了。即String str = new String();等同于,String str = new String("");也等同于 String str = "";你可以试一下在String str = null;和String str =new String();这两种情况下分别输出 System.out.println(str.length());你应该就全明白了。

参考技术A 我帮你解释一下你执行的过程
String str=null;
String str1="abc";
System.out.println((String)str+str1);
相加的时候会发生自动类型转换

String str = null只在java中初始化或声明吗? [重复]

这个问题在这里已有答案:

当我们将字符串声明为String str = null时,实际发生了什么?它只是声明还是因为赋值完成所以它是初始化的声明?

答案

在Java中,您有两种类型的数据类型:值类型和引用类型。

值类型指向内存中包含数据的位置。例如,int,char等。它们不能为null。

另一方面,引用类型具有指向数据位置的指针。空字符串表示引用不指向任何位置,这意味着数据不存在。这与空字符串根本不同。

以上是关于java String str=null的主要内容,如果未能解决你的问题,请参考以下文章

java String类 开辟内存问题

Java中,List<String>返回类型

JAVA基础之String基本操作

java 常用类-String

java 问题! String 去重

JAVA String中文乱码