A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 罗广伟 中级黑马   /  2013-7-19 16:55  /  1512 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 罗广伟 于 2013-7-20 18:56 编辑
  1. class Tests
  2. {
  3.         private int a;//错误
  4.         a=9;//错误
  5.         
  6.         private int b=8;//正确
  7.     public static void main(String[] args)
  8.     {
  9.             System.out.println(new Tests().a);
  10.     }
  11.    
  12. }
复制代码
为什么在成员变量不能先定义完后再赋值?

评分

参与人数 1技术分 +1 收起 理由
杜光 + 1 每天提问并回答问题,是对知识的复习和积累.

查看全部评分

8 个回复

倒序浏览
本帖最后由 xscn 于 2013-7-19 17:54 编辑

这楼写错了,编辑掉了,直接写在下面
回复 使用道具 举报
xscn 发表于 2013-7-19 17:20
a=9;的写法是不对的应该有标识符,写成int a =9;但是这样又和private int a;定义了重名的变量,也是不对 ...

我的意思是先定义再赋值
  1. class Tests
  2. {
  3.         private int b=8;
  4.     public static void main(String[] args)
  5.     {
  6.             int a;
  7.             a=9;
  8.             System.out.println(a);
  9.     }
  10.    
  11. }
复制代码
这样就没问题
回复 使用道具 举报
罗广伟 发表于 2013-7-19 17:26
我的意思是先定义再赋值这样就没问题

我知道你的意思了,刚才理解错了
你的问题在于,直接在类中写了语句。
根据语法。类中仅可以定义方法,定义并初始化变量。
int a= 9;是可以 的,因为他定义变量a的同时初始化了。
如果分开写,int a;a=9;就变成一个声明加一条赋值语句,就不符合语法了。
赋值语句不可以写在类中,要写在方法中,你第二次代码写在方法中就没有问题
回复 使用道具 举报
java规定类中可以出现的内容:
1,成员变量声明;
2,成员函数
3,内部类
4,构造代码块
5,构造函数

你可以在构造函数,或者构造代码块,也可以用函数给他赋值
  1. class Tests
  2. {
  3.         private int a;
  4.         
  5.         private int b=8;//正确

  6.             {a=9;}
  7.                 Tests(int num)
  8.                 {
  9.                         a = num;
  10.                 }
  11.                 Tests(){}
  12.                 public int getA()
  13.                 {
  14.                         return a;
  15.                 }
  16.                 public void setA(int a)
  17.                 {
  18.                         this.a =a;
  19.                 }
  20.    
  21. }
复制代码
回复 使用道具 举报
这个问题不在于成员变量不能先定义完后再赋值;成员变量是可以的。只不过你错在初始变量要在构造方法中
  1. class Tests
  2. {
  3.         private int a;//可以
  4.         private int b=8;
  5.    Tests(){
  6.         a=9;
  7.         }

  8.     public static void main(String[] args)
  9.     {
  10.             System.out.println(new Tests().a);
  11.     }
  12.    
  13. }
复制代码
回复 使用道具 举报

在main调用,要用static。
public class test{

private static int a ;

private int b = 8;// 正确

public static void main(String[] args)

{
a=9;
System.out.println(new DemoTeo().a);

}

}
回复 使用道具 举报
类的定义是不能有赋值语句的。但可以在初始化函数里进行赋值。或都用一个动态块也可以,比如:
class myclass{
int a;
{
     a =4;
}
}
回复 使用道具 举报
赋值和初始化是不同的,类可以声明类中有的元素(成员变量)这个元素可以被初始化, 当要给元素赋值时要在方法里进行。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马