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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 公子-醉香 中级黑马   /  2013-12-17 09:13  /  2400 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  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”为什么是这样呢?

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

13 个回复

倒序浏览
你定义了私有的a和b,即没有提供set和get访问,又不给他赋值,c在做a+b的计算时肯定取不到值,系统默认的就是null,所以计算的值就是null值。
回复 使用道具 举报
本帖最后由 谢文斌 于 2013-12-17 09:29 编辑

任何类型的数据与字符串进行“+”运算,“+”表“连接符”而非数学里的“加号”
回复 使用道具 举报
因为a,b没有赋值,String的默认值是null,+为字符串连接符,c=null+null,打印出来就是nullnull字符串
回复 使用道具 举报
因为你初始化的时候没有给他赋值,而它的默认值是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";

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

回复 使用道具 举报
private static String a;
private static String b;
这两句代码虽然你没有初始化,但是系统已经帮你完成了这个工作,字符串就是null,如果你这里定义的是int,那初始化就是0.
String c = a+b;
字符串与字符串之间用“+”,表示的是将两个字符串连接起来,如:
(简写)Syso(“你好”+i),这就是连接。
所以当我们输出时就是nullnull

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

回复 使用道具 举报
private static String a;
private static String b;
这是成员变量,在没有初始化的时候,JVM会对成员变量进行默认初始化,String初始化是null,
两个String做+运行,其它就是连接运算,null+null,不就是nullnull吗
回复 使用道具 举报
  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;

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

回复 使用道具 举报
你在定义字符串变量a,b时没有对他们初始化,系统就默认对他们初始化为null,而String c = a  +b;运算就相当于String c  = null +null;就像楼上说的字符串的运算跟数字运算不一样;数字运算:1+2=3;而字符串运算1+2=12;因此String c = null +null;结果就为nullnull;
回复 使用道具 举报
初始化了两个静态值a和b,却没有给其赋值,则系统默认它们为null值,
在主函数里,c=a+b;则c=“null null”;
回复 使用道具 举报
{:soso_e134:}我也晕了
回复 使用道具 举报
创建了两个私有未付值的静态变量,然后把两个空字符串拼合在一起,获得一个新的空字符串。打印出来就是两个空。
回复 使用道具 举报

成员变量,如果你不手动赋值,那么系统会默认给他们初始化,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);
    }

回复 使用道具 举报
首先,上述定义了两个私有字符串变量,但并为赋值。所以,两个字符串变量默认值为null,在主函数中字符串变量c=a+b;则是字符串加法运算,"null"+“null”="nullnull".
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马