黑马程序员技术交流社区

标题: 在主函数中定义私有变量有问题 [打印本页]

作者: 闫杏荣    时间: 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 编辑
  1. class PrvTest{

  2.         public static void main(String[] args){
  3.                 //private int x = 0;///静态方法中,编译错误:非法表达式的开始
  4.                 //public int x = 0;///静态方法中,编译错误:非法表达式的开始
  5.                 int y = 0;
  6.                 final int X = 0;
  7.                 //static int z = 1;///静态方法中,编译错误:非法表达式的开始
  8.                 System.out.println(X+z);
  9.                 Unstatic us = new Unstatic();
  10.                 us.field();
  11.         }
  12.         
  13. }
  14. class Unstatic{
  15.         public void field(){
  16.                 //private int a = 0;///非静态方法中,编译错误:非法表达式的开始
  17.                 //public int a = 0;///非静态方法中,编译错误:非法表达式的开始
  18.                 int b = 0;
  19.                 final int A = 0;
  20.                 //static int c = 1;///非静态方法中,编译错误:非法表达式的开始
  21.                 System.out.println(A+c);
  22.         }
  23. }
复制代码
private、public是标示所修饰东东的被访问的权限,由于方法区中的变量的权限是确定的,其有效范围是所在方法的内部,只有这一种形式,所以变量只有不带任何权限修饰符的这种默认方式。
static 是用于标示所修饰东东是否存储于 方法区中,由于定义方法的时候,方法所属的内存在哪儿开辟已经确定了,所以在方法内部的变量是否在方法区存储也已经确定了,不允许再次定义也就可以接受了。
final 用于标示所修饰东东的和所指向具体值的绑定关系,自然可以在方法中修饰局部变量。
总之,我们只能按照编译器已定的规格来办事,不这样就会挂掉。
作者: 唐辉辉    时间: 2012-6-4 11:41
private 是用于修饰成员变量的,成员变量应该定义在函数外的类中。 函数里定义的变量为局部变量,不能以private,public等修饰符修饰!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2