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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 山里孩子 中级黑马   /  2015-3-12 20:39  /  1466 人查看  /  14 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 山里孩子 于 2015-3-13 22:33 编辑

        在自定义的类中,对成员变量赋值时的方法有什么要求?下面用了两种方法赋值,一种会报错。

        第1种赋值方法:int age = 50;//成员变量初始化和赋值一起正常。
        第2种赋值方法:int age;
                                        age = 50;//成员变量先初始化再赋值 提示:错误: 需要<标识符>


  1. class Person
  2. {
  3.         //int age = 50;//成员变量初始化和赋值一起正常。
  4.         int age;
  5.         age = 50;//成员变量先初始化再赋值 提示:错误: 需要<标识符>
  6.         public Person(int setAge)
  7.         {
  8.                 int age;
  9.                 age = setAge;
  10.                 System.out.println("局部变量age赋值为:"+age);
  11.                 //通过this调用成员中age并对局部age赋值
  12.                 age = this.age;
  13.                 System.out.println("成员变量age赋值为:"+age);
  14.         }
  15. }

  16. class Example101
  17. {
  18.         public static void main(String[] args)
  19.         {
  20.                 Person p1 = new Person(30);
  21.         }
  22. }
复制代码

各位大神,路过看下,谢谢啦{:3_57:}




14 个回复

倒序浏览
嗯嗯、有点意思
回复 使用道具 举报
在方法外类中只能定义成员变量   或者代码块里面执行程序    直接不能定义运行语句
回复 使用道具 举报
这就行了  你看看这里的叫做构造代码块   
class Person
{
        //int age = 50;//成员变量初始化和赋值一起正常。
        int age;
        {
        age = 50;//成员变量先初始化再赋值 提示:错误: 需要<标识符>
        }
        public Person(int setAge)
        {
                int age;
                age = setAge;
                System.out.println("局部变量age赋值为:"+age);
                //通过this调用成员中age并对局部age赋值
                age = this.age;
                System.out.println("成员变量age赋值为:"+age);
        }
}

class Example101
{
        public static void main(String[] args)
        {
                Person p1 = new Person(30);
        }
}
回复 使用道具 举报
age = 50是执行语句,必须放在函数内、静态代码块内或构造代码块内。这是规矩!
回复 使用道具 举报
ankje 发表于 2015-3-12 21:47
age = 50是执行语句,必须放在函数内、静态代码块内或构造代码块内。这是规矩! ...

那这个呢?
//int age = 50;//成员变量初始化和赋值一起正常。
回复 使用道具 举报
朋好友 发表于 2015-3-12 21:10
在方法外类中只能定义成员变量   或者代码块里面执行程序    直接不能定义运行语句 ...

谢谢喽
那这个是?怎么可以执行。算初始化语句吗?
//int age = 50;//成员变量初始化和赋值一起正常。
回复 使用道具 举报
殷俊 高级黑马 2015-3-12 22:02:21
8#
构造函数是进行初始化的,里面不能出现执行语句;
public Person(int setAge)
        {
                int age;
                age = setAge;
                System.out.println("局部变量age赋值为:"+age);
                //通过this调用成员中age并对局部age赋值
                age = this.age;
                System.out.println("成员变量age赋值为:"+age);
        }
这里不能出现输出打印,你可以另建一个类,用方法打印出来
回复 使用道具 举报
ankje 中级黑马 2015-3-12 22:09:03
9#
山里孩子 发表于 2015-3-12 21:57
那这个呢?
//int age = 50;//成员变量初始化和赋值一起正常。

这是成员变量的自定义初始化,这么个写法也是规矩。是编译器定的规矩。规矩是java定的,不是我们定的。我们只要知道某些代码怎么用和什么时候用就OK了
回复 使用道具 举报
殷俊 发表于 2015-3-12 22:02
构造函数是进行初始化的,里面不能出现执行语句;
public Person(int setAge)
        {

知道了,谢谢。也是刚学到这里,碰到这个问题,谢谢:)
回复 使用道具 举报
ankje 发表于 2015-3-12 22:09
这是成员变量的自定义初始化,这么个写法也是规矩。是编译器定的规矩。规矩是java定的,不是我们定的。我 ...

谢谢:) 记住喽。方法中不能出现执行语句。
回复 使用道具 举报
Zoe- 中级黑马 2015-3-12 22:43:22
12#
其实int age;这一句并没有作age的初始化动作,你只是定义了age变量而已,初始化是要给它值的,当然你前面的int age = 50;只能理解为初始化值为50,不知道楼主懂了没
回复 使用道具 举报
一个类中只有可以放:成员变量,成员方法,构造方法,和代码块。你先定义了一个成员变量,又给其赋值,这是执行语句,不能放在成员位置
回复 使用道具 举报
//int age = 50;//成员变量初始化和赋值一起正常。
        int age;
        age = 50;//成员变量先初始化再赋值 提示:错误: 需要<标识符>

错误很明显 缺少标识符 如 public private protected 之类的
写入函数内部 就可以了
回复 使用道具 举报
int age = 50;
这是成员变量,也就是你new对象时跟堆内存中存储的东西
就像人一样  有属性有方法,有身体是属性,能运动是方法
面向对象在我的理解内也是这样的
类就是现实生活中的对象得来的
所以定义属性方法这个记住就行
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马