A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 余银桂 中级黑马   /  2012-6-11 12:57  /  1693 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class Test {
/**
  * @param args
  */
public static void main(String[] args) {
  String s = null;
     s = s + "world";
     System.out.println("hellow" + s);
     
        }
}




最后的运行结果是: hellownullworld     

  null可以被当成字母打印出来么?

5 个回复

倒序浏览
可以的,如果String对象是null那会在打印的时候,把“null”字母打印出来;

如果你想要打印出来是空的话,要把String s = "";这样初始化,再和其它字符串拼接时,就不会出现"null"这样的字眼了。
回复 使用道具 举报
陈剑华 发表于 2012-6-11 13:08
可以的,如果String对象是null那会在打印的时候,把“null”字母打印出来;

如果你想要打印出来是空的话, ...

定义那里不是指明了定义为空么...  还是不明白
回复 使用道具 举报
在使用"+"操作符时,如果有一个操作数是字符串,其他操作数会被转换成字符串  类似 1+“”=“1”   null+“ world“=nullworld
回复 使用道具 举报
图为String s= null;和String s1=" ";的区别,希望对理解有帮助

未命名.PNG (13.4 KB, 下载次数: 33)

未命名.PNG
回复 使用道具 举报
这就关系到java语言的设计了,为了区分""空字符串和null,
当String对象是null时,
String str = null;
str.trim();//像这样就会抛空指针
而:
String str1 = "";
str1.trim();//这里就不会

str,str1都会栈上保存一个地址,指向内存堆中的某个空间,这个空间保存的是它们各自的实际值。
这里,str1是一个空字符串的对象,里面存放着"";
而,str这个地址是没有明确指向的,它哪也不指,其内容为0x00000000

试想一下,如果null和""输出的结果都是"",当代码量一大,那就会在出错的时候很难调错,因为它们在输出时候的效果是一样的,我想就是出于这样的考虑,java的设计者才会,让jvm在碰到null输出或字符拼接时,给上"null"字样,便于开发,和调错.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马