为了账号安全,请及时绑定邮箱和手机立即绑定

为什么没有赋值上呢?输出的是0和0.00

package com.dyd;


public class Project {

    int num;

    float cpu;


public static void main(String[] args) {

//给属性赋值

Project hello=new Project();

// hello.num=3;

// hello.cpu=2.9f;

hello.show();

// shows.num=2;

// shows.cpu=1.9f;

// shows.show();

 

}

public void show() {

Project hello=new Project();

hello.num=3;

hello.cpu=2.9f;

System.out.println("num:"+num+"cpu:"+cpu);

}


}


正在回答

8 回答

然后你show方法里打印的num 和cpu是main方法中对象的属性

0 回复 有任何疑惑可以回复我~
#1

仿佛说呢 提问者

明白了,就是搞不清楚静态成员变量和非静态成员变量如何调用和输出的?
2019-08-07 回复 有任何疑惑可以回复我~
#2

Coln 回复 仿佛说呢 提问者

静态成员变量是在加载该类是就被执行的,不能被实例化对象调用,只能通过类来调。这个的话还是建议找一下static的视频看一下
2019-08-07 回复 有任何疑惑可以回复我~

你给的是成员变量的值,而方法内的值是要加hello.num

0 回复 有任何疑惑可以回复我~

https://img1.sycdn.imooc.com//5d5f4c080001cd9206440411.png

静态与非静态的调用

1 回复 有任何疑惑可以回复我~

你的show方法重新定义了一个对象,和main方法中的对象不是同一个

0 回复 有任何疑惑可以回复我~

我们先来看show这个方法,

public void show() {

    Project hello=new Project();//一、实例一个对象Project->hello,我们知道实例出来的对象在内存,我们先称它为  内存1号hello对象

    hello.num=3;//二、将 内存1号hello对象 的num 赋值为3

    hello.cpu=2.9f;//三、将 内存1号hello对象 的cpu赋值为2.9f

    System.out.println("num:"+num+"cpu:"+cpu);//四、将变量num,变量cpu的值打印出来。

}

我们着重看下第四句话,我们知道,java语言中,要使用一个变量必须先声明并初始化,这里我们并没有看到有声明或和初始化变量num,变量cpu的语句,那么这句话编译的时候为什么没有报错。这时我们就要看下show()这个成员方法属于的类中有没有对应的变量。

public class Project {

    int num;

    float cpu;

}

我们看到的是,Project是有成员变量量  整形的 num 和 浮点型的 cpu。

那么其实我们看到的show()方法中的num和cpu,是this.num  和 this.cpu 的缩写,指的是 他们分别是 Project 这个类两个成员变量的引用。由于分别是整形和浮点型,我们在main()方法入口,执行Project hello=new Project();进行实例化时,就会对其成员变量中属于基本数据类型的他们进行初始化赋值。整形=0,浮点型=0.00.

如果你是想对成员变量赋值,而不是对show()方法里的局部变量赋值,在类内部中,建议你加上 this 字段,用this.num=3 这样语句赋值。快速定位而且具有可读性。

?

1 回复 有任何疑惑可以回复我~

我的意思是成员变量的赋值怎么错了,输出成员变量的值,并不是给局部变量赋值,并输出。

0 回复 有任何疑惑可以回复我~

public class Project {

    int num;

    float cpu;

这是成员变量

public void show() {

num=3;

cpu=2.9f;

方法内部是局部变量

0 回复 有任何疑惑可以回复我~

package com.dyd;


public class Project {

    int num;

    float cpu;


public static void main(String[] args) {

//给属性赋值

Project hello=new Project();

// hello.num=3;

// hello.cpu=2.9f;

hello.show();

// shows.num=2;

// shows.cpu=1.9f;

// shows.show();

 

}

public void show() {

num=3;

cpu=2.9f;

System.out.println("num:"+num+"cpu:"+cpu);

}


}


0 回复 有任何疑惑可以回复我~
#1

仿佛说呢 提问者

给成员变量赋值不是应该先把类实例化出来,通过实例化的对象给成员变量赋值吗?
2019-08-05 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么没有赋值上呢?输出的是0和0.00

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信