Statement 1
在上面的代码中,rdr1
会产生以下错误
变量
Statement 2
可能尚未初始化
Statement 1
成功编译。
那么,为什么在Statement 2
中没有产生与 <g transform="rotate(90,26.17,26.17)">
<polyline points="0,6.326886 178.017424,6.326886 178.017424,45.888910 0,45.888910" fill="green"></polyline>
<polyline points="178.017424,7.892542 257.597148,7.892542 257.597148,44.323254 178.017424,44.323254" fill="blue"></polyline>
</g>
相同的错误?
答案 0 :(得分:1)
在陈述2中,rdr2
本质上是一种方法的形式论证。调用方法时会初始化它。有关声明2发生了什么的更多信息,请参阅Lambda Quick Start或Lambda Expressions教程。
答案 1 :(得分:0)
应在使用前初始化局部变量(在方法体内声明的变量)rdr1
。不过这条规则
不适用于类变量(实例变量)。它们获取默认类型值。
就rdr2
而言,调用方法时会初始化。有关 Lambda Exp here
public static void main(String args[]) throws IOException
{
Reader rdr1; // local variable should be initialized before use
int read = rdr1.read(); //Statement 1
MyIOAction myIO = (rdr2) -> // initialized when method is called.Lambda Exp.
{
int ch = rdr2.read(); //Statement 2
};
}