类变量和实例变量
成员变量:把类内、方法体外的变量称为成员变量。
package com.chen.offer.BiliBili;
/**
* @author chenshimiao
* @Email 16622880228@163.com
* @date 2022/2/18 10:27 下午
*
* 区分成员变量 实例变量和类变量
*/
public class Clothes {
//实例变量
String id;
//实例变量
private String colorType;
//实例变量
private int size;
//类变量(静态变量)
private static String depart;
}
1、Java中成员变量的种类
Java中的成员变量分为两种:
一种是没有static修饰的,这些成员是对象中的成员,称为实例变量
二是有static修饰的,称为类变量(静态变量)
静态变量特点
1、随着类的加载而加载
2、优先于对象存在
3、被所有对象共享
4、可以直接被类名调用
2、类变量和实例变量的区别:
- 1、存放位置。
类变量随着类的加载而存储在方法区中。
实例变量随着对象的建立而存方法堆内存中。 - 2、生命周期:
类变量生命周期最长,随着类的消失而消失。
实例变量生命周期随着对象的消失而消失。
3、Java中对象和实例的关系
实例表示的是对象和类的关系
比如:
Person p = new Person();
new Person()新建了一个Person对象,而p则是一个只想Person对象的引用,这个Person对象就是Person类的一个实例。
Person p = new Person(“a”);
new Person();是一个对象,放在堆(heap)空间。
a属于new Person()里面的一个实例(放在常量池中)。
p属于一个引用,放在栈(stack)空间,要操作对象必须通过引用间接操作。
这个地址是指向new Person()这个对象的。
堆:存放用new产生的数据
栈:存放基本类型的数据和对象的引用,对象本身不存放在栈中,而是存放在堆中
4、题目
1、下列说法正确的是()
- A、在类方法中可用this来调用本类的类方法
- B、在类方法中调用本类的类方法时可以直接调用
- C、在类方法中只能调用本类中的类方法
- D、在类方法中绝对不能调用实例方法
正确答案:B
解析: 类方法指用static修饰的方法。普通方法也叫对象方法。A、this指的是当前对象,类方法依附于类而不是对象。C、类方法中也可以调用其他的类方法。同时可以通过创建对象来调用普通方法。D、类方法中可以创建对象,所以可以调用实例方法。