JAVA初级(六)对象和类(2)类的成员变量,局部变量.方法

成员变量

1,什么是成员变量?
定义在方法外面的变量就是成员变量
成员变量分为实例变量和静态变量
其中静态变量下回说,这里涉及到static关键字.下回介绍static关键字

实例变量

实例变量是成员变量的一种,它在JAVA里如何写的?

public class Phone {
    public double machineId;//实例变量,-->这边我们给它个名字,机器码
    public void size(){}
}

这样写在方法外面类里面然后没有static修饰的变量就是实例变量
写法很简单
修饰符 类型 名称; 就这么写。
那么它怎么用呢?或者说有什么用?
实例变量,它为什么叫实例变量,那是因为它随着对象的产生(实例化)而产生,消灭而消灭.

Phone phone = new Phone();

这么一个new的动作就是对象的产生,此时里面的machineId也随之生成.
也就是说我们在得到这个手机的同时也能够得到它的机器码.当你把这行代码删了,phone这个对象就死了,里面的实例变量也就死了.
此时我们执行以下语句

public static void main(String[] args) {
        Phone phone = new Phone();
        double machineId = phone.machineId;
        System.out.println(machineId);
    }

结果输出0.0
从这段代码就能认识到.
1,我们如何才能使用实例变量?
要先生成一个对象,然后对象.变量 就能使用了.也就是说它只能被对象调用,先new出一个对象, 然后在对象. 名称,你直接Phone.machineId 会报错,这就相当于你手机还没到手呢,你能知道它的机器码?
2,实例变量会初始化
你发现我没有给这个机器码赋值.但它还是输出了东西.它不会报错…也就是说在实例化对象的同时,会给实例变量初始化.
如果你想要在获取对象的同时,实例变量初始化一个值如何做?
直接给这个变量赋值

public class Phone {
    public double machineId = 123456;//直接这样写
    public void size(){}
}

或者构造方法赋值

public class Phone {
    public double machineId;
    public Phone(){//用构造方法初始化
    machineId =123456;
    }
}

然后你在执行上面的main方法,它就不会输出0.0了

到此,想必对成员变量中的实例变量有所了解了.

拓展:实例变量存在放堆内存,这个记住下.

局部变量

什么是局部变量?

在方法体定义的变量就叫局部变量.
成员变量在方法体外类以内定义,局部在方法体内定义.这是最明显的区别.

那么局部变量怎么用?

局部变量,它定义在方法体内,也就是说在调用这个方法,并执行到定义变量的那一行时,这个局部变量就出生了.这个方法执行完后.这个局部变量就销毁了

public class Phone {
    public double mechineId;
    public double size(){
        System.out.println("size还没出生");
        double size = 5.5;//size出生了,方法体内定义-->就是局部变量
        return size;//执行方法了.size死去
    }
}

在size()方法内定义的size就是局部变量
然后执行以下代码

public static void main(String[] args) {
        Phone phone = new Phone();//对象产生了,但局部变量size还没有出生,而成员变量machineId已经出生了
        double phoneSize = phone.size();//调用size方法,并执行完double size = 5.5;这行,局部变量size才出生
        System.out.println(phoneSize);
    }

在实例化对象,即new出一个phone对象时,局部变量size还没出生.只有在调用size()方法并执行完定义size的那一行时,size才出生.
然后执行完方法.即执行完 double size = phone.size();这一行时局部变量size已经死去.

就好比你拿到这个手机,你不去点击查看手机信息你是看不到手机尺寸的。只有去点击后你眼睛喵到那一行才能看得到.然后关闭后又看不到了。就相当于这个尺寸"死了".

到这对于局部变量应该有所了解了吧。
拓展:局部变量存储在栈内存.现在稍微知道下.

成员变量和局部变量区别

想必到这,直接让你去整理,你也能整理出一些他们的区别
1,定义的位置不一样,成员在方法体外类以内.局部变量在方法体内
2,生命周期不同.成员变量中的实例变量随对象产生而产生,消失而消失.
局部变量随着调用方法并执行完定义变量的那一行而产生,方法执行结束而死去.
3,写法有点不一样.成员变量可以用权限修饰符public这样的修饰,局部变量不行
4,存储位置不一样,成员变量存储在堆,局部变量存储在栈

拓展,这样的局部变量什么时候死去?

 public double size(){
        System.out.println("size还没出生");
        if(true){
            double size = 5.5;//size出生了,
        }
        //到这size 已经死了
        return 0;
    }

此时这个size就不是方法执行完死了,而是if执行完后就挂了
为什么呢?
这边就涉及到了作用域.这里不细说作用域。就简单通俗的说明一下。想了解具体的可以自己去查。
作用域就是一个{ },里面定义的代码在一个作用域执行完后就会死去.所以上面的size就死了.因为已经从{}出来了
所以此时你这样定义

public double size(){
        System.out.println("size还没出生");
        double size;//size出生了
        if(true){
            size = 5.5;//size有值了
        }
        //到这size 没死,还没从{}跳出来
        return 0;
    }

这样size就是执行完整个方法才死.因为它还在属于它的{}中.
到这想必你也知道为什么成员变量活得比较久了吧

类的方法

方法的基础已经说过了,具体可了解下
JAVA初级(五)方法
方法也是类的一个组成部分.从上面的例子可以看出.类的方法如何定义?

public class Phone {
    public double mechineId;
    public void fun(){//这就是方法
        System.out.println("方法");
    }
}

就这么写.在类里面写个方法.
那么如何调用?

  public static void main(String[] args) {
        Phone phone = new Phone();
        phone.fun();//调用方法
    }

就这么调用。你得先获取一个对象,然后对象.方法()
就好比你要使用手机的拍照功能.你得先拿到手机.
方法使用就这么简单.

猜你喜欢

转载自blog.csdn.net/qq_42577241/article/details/84863872