成员变量 | 局部变量 | |
类 | 类中方法外 | 方法内或者方法声明上 |
内存 | 堆内存 | 栈内存 |
生命周期 | 随着对象的存在而存在,随着对象的消失而消失 | 随着方法的调用而存在,随着方法的调用完毕而消失 |
默认值 | 有默认值安全 |
没有默认值,必须先定义,赋值,才能使用 |
没有名字的对象;是对象的一种简化表示形式(new 对象())this
两种使用状况spa
对象调用方法仅仅一次的时候对象
做为实际参数传递生命周期
隐藏对象的属性和实现细节,仅对外提供公共访问方式内存
优势 隐藏实现细节,提供公共的访问方式ci
提升了代码的复用性string
提升安全性table
原则class
将不须要对外提供的内容都隐藏起来
把属性隐藏,提供公共方法对其访问
构造方法
给对象的数据进行初始化
格式: 方法名与类名相同;没有返回值类型,连void都没有;修饰符可为(pubic、protected、默认、private)
注意事项: 不提供构造方法,系统会给出默认的无参构造方法
提供构造方法,系统将再也不提供默认的无参构造方法
构造方法能够重载
Demo d = new Demo();
1 加载Demo.class文件进内存
2 在栈内存为d开辟空间
3 在堆内存为Demo对象开辟空间
4 对Dmeo的成员变量进行默认初始化
5 对Demo的成员变量进行显示初始化
6 经过构造方法对成员变量进行赋值
7 初始化完毕,把对象地址赋值给d变量
若是这个变量是用来描述这个类的信息,该变量就应该定义为成员变量
越小越好,由于能及时的被回收
1 能够修饰成员变量和成员方法
2 随着类的加载而加载
3 优先于对象存在
4 被类的全部对象共享
5 能够经过类名调用
6 存在于方法区的静态区
注意事项
在静态方法中时没有this关键字的
静态方法只能访问静态的成员变量和静态的成员方法
静态变量 | 成员变量 | |
所属 | 属于类,也称为类变量,对象的共享数据 | 属于对象,也称为实例变量(对象变量),对象的特有数据 |
内存 | 方法区的静态区 | 堆 |
生命周期 | 随着类的加载而加载,随着类的消失而消失 | 随着对象的建立而存在,随着对象的消失而消失 |
调用 | 能够经过类名调用,也能够经过对象调用 | 只能经过对象名调用 |
public static void main(Sting[] args){}
public被JVM调用,访问权限足够大
static被JVM调用,不用建立对象,直接类名访问
void 被JVM调用,不须要给JVM返回值
main 一个通用的名称,不是关键字,可是被JVM识别
string[] args 之前用于接收键盘录入的数据
本类 | 同包 | 同包 | 不一样包 | 不一样包 | |
子类 | 其它类 | 子类 | 其它类 | ||
private | √ | ||||
默认 | √ | √ | √ | ||
protected | √ | √ | √ | √ | |
public | √ | √ | √ | √ | √ |