问答详情
源自:8-7 Java 中的 static 使用之静态变量

为什么没有赋值上呢?输出的是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);

}


}


提问者:仿佛说呢 2019-08-04 20:04

个回答

  • Coln
    2019-08-07 10:54:18
    已采纳

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

  • weixin_慕仙1176837
    2020-07-04 17:17:48

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

  • 慕运维1495087
    2019-08-23 10:17:05

    https://img.mukewang.com/5d5f4c080001cd9206440411.png

    静态与非静态的调用

  • Coln
    2019-08-07 10:52:14

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

  • 大野猪佩奇
    2019-08-05 20:05:07

    我们先来看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 这样语句赋值。快速定位而且具有可读性。

    ?

  • 仿佛说呢
    2019-08-05 11:09:49

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

  • 刘小信
    2019-08-05 09:44:46

    public class Project {

        int num;

        float cpu;

    这是成员变量

    public void show() {

    num=3;

    cpu=2.9f;

    方法内部是局部变量

  • 刘小信
    2019-08-04 22:43:21

    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);

    }


    }