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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 林康春 黑马帝   /  2012-7-18 23:47  /  1357 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

ublic class Demo7 {
public void nullMethod(Object obj) {
System.err.println("object");
}
public void nullMethod(String str) {
System.err.println("string");
}
public static void main(String[] args) { O
Demo7 t = new Demo7();
t.nullMethod(null);
}
}
/*
疑问:
程序是如何执行的?
1、 System.err 这里是打印什么来的?
2、 null 值匹配的对象类型?
3、 注释调用第一个nullMethod 运行查看结果?
4、 解读以下程序:
String str = null;
for(int i = 0; i < 5; i++){
str+=i;
}
*/

评分

参与人数 1技术分 +1 收起 理由
韦念欣 + 1 赞一个!

查看全部评分

2 个回复

正序浏览
疑问:
程序是如何执行的?
1、 System.err 这里是打印什么来的?
2、 null 值匹配的对象类型?
3、 注释调用第一个nullMethod 运行查看结果?
4、 解读以下程序:
String str = null;
for(int i = 0; i < 5; i++){
str+=i;
}
*/

1、System.err:用来向控制台输出错误信息的
2、null表示给str分配了内存,这块内存用来存放str指向对象的地址,而现在不需要给str指向任何对象,所有用null标记
          这块内存里面没有存放任何对象的地址。
           安装我的推理,null里面存放的是一个特性的值,这个值所对应的地址不存在。当程序使用这个值寻找对应的对象时,发现这个地址根本到不了,坑爹了,就会抛出空指针异常,意思就说我找不到这个对象。


3、null表示无法到达的地址空间,就像教室里面课桌的编号为1-50,来了一位新同学小明,老说:小明,你到100号座位上去。小明满教室找,发现没有100号桌位,这是后,他就郁闷了,跟老说说:找不到说的桌位。
     为了方便,用null来表示除了1-50直接的任何值,
                  if(x<1||x>50){
                      x=null;
                }
        这样看来,null是一个字符串标识符好,

4、str+=i: 小明还没有找到他的100号座位,老说就叫他把书包放到100号座位里面,可能吗?
                  str的空间不存在,怎么往这个不存在的空间放东西呢?




评分

参与人数 1技术分 +1 收起 理由
韦念欣 + 1 赞一个!

查看全部评分

回复 使用道具 举报
    System.err   “标准”错误输出流。此流已打开并准备接受输出数据。 通常,此流对应于显示器输出或者由主机环境或用户指定的另一个输出目标。按照惯例,此输出流用于显示错误消息,或者显示那些即使用户输出流(变量   out   的值)已经重定向到通常不被连续监视的某一文件或其他目标,也应该立刻引起用户注意的其他信息。     
    System.out    “标准”输出流。此流已打开并准备接受输出数据。通常,此流对应于显示器输出或者由主机环境或用户指定的另一个输出目标。
     System.err.println()是要缓冲的,所以优先级会高点,而System.out.println()是不需要缓冲的,所以优先级会低点.
     null匹配的是一个字符串、注释掉第一个nullMethod方法结果是一样的。
String str = null;
for(int i = 0; i < 5; i++){
str+=i;
}
这个小程序的结果是null01234,str的值为String类型的null,当它与int型的数直接相加时,int型的数字会向上自动转型为String,然后+号变成了连接好。所以结果是这样的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马