黑马程序员技术交流社区
标题:
在主函数中定义私有变量有问题
[打印本页]
作者:
闫杏荣
时间:
2012-6-4 11:00
标题:
在主函数中定义私有变量有问题
本帖最后由 闫杏荣 于 2012-6-4 11:02 编辑
为什么不能在主函数中定义私有变量,编译会报错。
私有变量的作用域不是在本类中有效么?
package yxrong;
class SetDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
private int x=9;
System.out.println(x);
}
}
作者:
陆建平
时间:
2012-6-4 11:04
private是修饰类的成员和类的,不能修饰方法中的局部变量
作者:
何拴绪
时间:
2012-6-4 11:14
你在main函数中定义的变量,属于局部变量,是为main方法所服务,作用域就是main方法体中,不存在私有来修饰它。修饰符可以修饰类中的成员变量。
作者:
金鑫
时间:
2012-6-4 11:29
private修饰的变量或者方法,只能在该类内部被访问。
private修饰的属性就可以把属性隐藏在类的内部,这样就可以将属性进行有效的封装,一般是在类的主体中定义。
而main方法是方法的主体,在main方法中定义的变量的作用范围只是main方法本身,出了main方法就无法使用,因此在main方法中定义private变量没有任何意义。
而且不仅是main方法,一个类中的普通方法内也是不能定义private变量的,会提示参数的修饰符不合法。无论是什么方法,在方法内定义的变量的作用域只存在于方法主体内部,因此private没有任何意义
作者:
杨永峰
时间:
2012-6-4 11:40
本帖最后由 杨永峰 于 2012-6-4 11:42 编辑
class PrvTest{
public static void main(String[] args){
//private int x = 0;///静态方法中,编译错误:非法表达式的开始
//public int x = 0;///静态方法中,编译错误:非法表达式的开始
int y = 0;
final int X = 0;
//static int z = 1;///静态方法中,编译错误:非法表达式的开始
System.out.println(X+z);
Unstatic us = new Unstatic();
us.field();
}
}
class Unstatic{
public void field(){
//private int a = 0;///非静态方法中,编译错误:非法表达式的开始
//public int a = 0;///非静态方法中,编译错误:非法表达式的开始
int b = 0;
final int A = 0;
//static int c = 1;///非静态方法中,编译错误:非法表达式的开始
System.out.println(A+c);
}
}
复制代码
private、public是标示所修饰东东的被访问的权限,由于方法区中的变量的权限是确定的,其有效范围是所在方法的内部,只有这一种形式,所以变量只有不带任何权限修饰符的这种默认方式。
static 是用于标示所修饰东东是否存储于 方法区中,由于定义方法的时候,方法所属的内存在哪儿开辟已经确定了,所以在方法内部的变量是否在方法区存储也已经确定了,不允许再次定义也就可以接受了。
final 用于标示所修饰东东的和所指向具体值的绑定关系,自然可以在方法中修饰局部变量。
总之,我们只能按照编译器已定的规格来办事,不这样就会挂掉。
作者:
唐辉辉
时间:
2012-6-4 11:41
private 是用于修饰成员变量的,成员变量应该定义在函数外的类中。 函数里定义的变量为局部变量,不能以private,public等修饰符修饰!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2