java教程:局部变量及同名变量等知识
java教程:局部变量及同名变量等知识
局部变量
局部变量从定义形式不同分为三种:
形参,方法局部变量,代码块局部变量
形参:定义方法签名时定义的变量
生命周期:在整个方法内有效
方法局部变量:方法体内定义的变量
生命周期:从定义的地方起,到方法结束。
代码块局部变量:在代码块中定义的变量
生命周期:从代码块中定义局部变量的地方开始,到代码块结束.
注意:
*在脱离了代码块,代码块内定义的局部变量也就失效了。如下例所示
eg:
public static voidmain(String[] args) {
// 代码块
{
int a = 5;
System.out.println(a );
}
//System.out.println( a ); // 编译出错,error:找不到符号a
}
变量同名
*一个类不能定义两个同名的成员变量(即使一个是类成员变量,一个是实例成员变量)。
public int b;
public int b; //报错,已在类xx中定义了变量b
publicstatic int b; // 报错,已在类xx中定义了变量b
*方法里不能定义两个同名的变量,方法内的变量与形参也不能相同
public voidfn_test(){
int b = 0;
int b = 4; //报错,已在方法fn_test()中定义了变量b
}
public voidfn_test(int b){
int b = 0; //报错,已在方法fn_test(int)中定义了变量b
}
*不同代码块内的变量可以同名,先定义代码块局部变量,后定义方法局部变量,
可以同名。
public voidfn_test(int b){
{
int c = 0;
}
{
int c = 0;
}
int c = 0;
}
*先定义方法局部变量,后定义代码块局部变量,则不能同名。
public voidfn_test(int b){
int c = 0;
{
int c = 0; //报错,已在方法fn_test(int)中定义了变量c
}
{
int c = 0; //报错,已在方法fn_test(int)中定义了变量c
}
}
*方法局部变量和成员变量可以同名,如果要修改成员变量b,则需要用this
作为调用者来限定最终访问的是成员变量。(这种用this来区分访问成员变量和局部变量的方法带给编程自由,但不推荐这种同名的做法)
public int b;
public voidfn_test(){
int b = 0;// 允许的。
this.b= 0;// 访问的是成员变量b。
}
本文来源 我爱IT技术网 http://www.52ij.com/jishu/4759.html 转载请保留链接。
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
