java每日一讲_java每日一练(19_03_11)

public class StringTest {// static String s;//语句1public static void main(String[] args) {// String s;//语句2System.out.println("s="+s);}}

1.请问取消语句1的注释会输出什么?

2.请问取消语句2的注释会输出什么?

3.请问取消语句1和语句2的注释会输出什么?

答案与解析

跑过代码的小伙伴们都知道,输出的结果是:

1.输出s=null

2.编译不通过,错误:可能尚未初始化变量s

3.编译不通过,错误:可能尚未初始化变量s

这是为什么呢?

首先第一种情况,我们声明了一个String类型的静态成员变量s,并没有给它赋值,之后再main方法中输出“s=”+s,从结果中我们可以看到输出了“s=null”,也就是说我们可以推测出,虽然我们没有给它赋值,但是我们运行时自动给它赋值了一个null,并且在打印时会将这个null打印出来。这里为什么要用static呢?大家可以把static去了试试,自己试试看我们的编译器会给出什么样的反应?

第二种情况,我们在main函数内部定义了一个String类型的变量s,同样没给它赋值,但是编译器这次却报错了,“错误:可能尚未初始化变量s”,那就是它没有初始化,因此编译器报错了,并且无法通过编译。

第三种情况,我们声明了一个String类型的静态成员变量s,同时在main函数内部定义了一个String类型的变量s,都没给他们附初值,这个时候同样因为没有给函数内的局部变量初始化,因此编译器再次报错了,这个结果很大程度上在知道了2的情况时我们可以预料到,但是如果我们给2附上初值,输出的是2的初值还是null呢,大家可以试一试,看看会输出什么

坚持总会有回报的,大家加油!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值