黑马程序员技术交流社区

标题: 输出结果为NULL的问题 [打印本页]

作者: 公子-醉香    时间: 2013-12-17 09:13
标题: 输出结果为NULL的问题
  1. private static String a;
  2. private static String b;

  3.   public static void main(String[] args) {
  4.        String c = a+b;
  5.        System.out.println(c);
  6.     }
复制代码
输出是”nullnull”为什么是这样呢?

作者: zzkang0206    时间: 2013-12-17 09:25
你定义了私有的a和b,即没有提供set和get访问,又不给他赋值,c在做a+b的计算时肯定取不到值,系统默认的就是null,所以计算的值就是null值。
作者: 谢文斌    时间: 2013-12-17 09:28
本帖最后由 谢文斌 于 2013-12-17 09:29 编辑

任何类型的数据与字符串进行“+”运算,“+”表“连接符”而非数学里的“加号”
作者: 恨死我了    时间: 2013-12-17 09:29
因为a,b没有赋值,String的默认值是null,+为字符串连接符,c=null+null,打印出来就是nullnull字符串
作者: ❦_H_t    时间: 2013-12-17 09:32
因为你初始化的时候没有给他赋值,而它的默认值是null
当你把它赋予String类型时,等同于"null"
那么此时a和b都是null,故结果输出就变成了nullnull
private static String a;
private static String b;

  public static void main(String[] args) {
       String c = a+b;
       System.out.println(c);
    }
这个String c = a+b; 的效果等同于String c ="null"+"null";
作者: 侠客梦的懒猫    时间: 2013-12-17 10:38
private static String a;
private static String b;
这两句代码虽然你没有初始化,但是系统已经帮你完成了这个工作,字符串就是null,如果你这里定义的是int,那初始化就是0.
String c = a+b;
字符串与字符串之间用“+”,表示的是将两个字符串连接起来,如:
(简写)Syso(“你好”+i),这就是连接。
所以当我们输出时就是nullnull
作者: litaojisuanji    时间: 2013-12-17 11:06
private static String a;
private static String b;
这是成员变量,在没有初始化的时候,JVM会对成员变量进行默认初始化,String初始化是null,
两个String做+运行,其它就是连接运算,null+null,不就是nullnull吗
作者: 绕世界流浪丶    时间: 2013-12-17 11:10
  1. private static String a;
  2. private static String b;

  3.   public static void main(String[] args) {
  4.        String c = a+b;
  5.        System.out.println(c);
  6.     }
复制代码
你定义的a b都是静态字符串
a+b的这个+就相当于是字符串连接符,
比如 字符串“5”+“6”= “56”而不是11
然后你的a b都没有赋初始化值,所以他输出的事默认的值  null
null+null= nullnull;

作者: 豆晨阳    时间: 2013-12-17 12:25
你在定义字符串变量a,b时没有对他们初始化,系统就默认对他们初始化为null,而String c = a  +b;运算就相当于String c  = null +null;就像楼上说的字符串的运算跟数字运算不一样;数字运算:1+2=3;而字符串运算1+2=12;因此String c = null +null;结果就为nullnull;
作者: 段光宇    时间: 2013-12-17 12:54
初始化了两个静态值a和b,却没有给其赋值,则系统默认它们为null值,
在主函数里,c=a+b;则c=“null null”;
作者: 75100313    时间: 2013-12-17 14:11
{:soso_e134:}我也晕了
作者: 瞎溜达玩玩    时间: 2013-12-17 14:27
创建了两个私有未付值的静态变量,然后把两个空字符串拼合在一起,获得一个新的空字符串。打印出来就是两个空。
作者: 城市儒侠    时间: 2013-12-17 19:29

成员变量,如果你不手动赋值,那么系统会默认给他们初始化,String类型默认是null,所以两个字符串都是null。
之后 加号  是连接符。 你的代码等于把a和b两个字符串连接,然后把结果赋值给c了。
所以结果就是nullnull

注释:

private static String a; //默认初始化,默认值是null
private static String b; //默认初始化,默认值是null

  public static void main(String[] args) {
       String c = a+b; //"null"+"null"
       System.out.println(c);
    }


作者: 冯国强    时间: 2013-12-17 22:15
首先,上述定义了两个私有字符串变量,但并为赋值。所以,两个字符串变量默认值为null,在主函数中字符串变量c=a+b;则是字符串加法运算,"null"+“null”="nullnull".




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2