成员变量&&局部变量
局部变量:方法中声明
成员变量:方法外、类中声明
public class Test2 {
//int num =20; 成员变量
public void test() {
//int num = 10; 局部变量
}
}
局部变量和成员变量变量名相同时,局部变量的优先级更高
成员变量在堆内存中,局部变量在局部变量的表中
类中方法互相调用
1.Static定义的main方法调用别的方法,对方也必须是static静态方法,否则无法调用
2.如果不是静态方法,则需要创建实例在调用
3.在main的出口调用方法
public class Test2 {
int num =20;
public void test() {
int num = 10;
System.out.println(num);
//直接指向成员变量
System.out.println(this.num);
}
public static void main(String[] args) {
Test2 test = new Test2();
test.test();
}
}
两个变量的区别:
1.作用域不同
2.初始值不同,局部变量不会赋初始值,成员变量会赋初始值,由其数据类型决定
public class Test2 {
int num;
}
七.封装
封装是指将类的属性隐藏在内部,外部不能直接访问和修改
把属性私有化,用get(获取数据)、set(修改数据)方法,在这些方法中添加逻辑
封装步骤:
1.修改成员变量为私有,private,是的外部不能访问
2.提供外部可以直接调用的方法
3.加入对于属性逻辑的控制,避免出现逻辑错误
访问权限是指该属性可以直接访问的方法,在属性定义时设定,有四种方法:public、private、默认(不写)、protected,区别在于作用域不同
八.Static
表示静态或者全局,可以⽤来修饰成员变量和成员⽅法以及代码块。
使⽤ static 修饰的成员变量和成员⽅法独⽴于该类的任何⼀个实例化对象,访问时不依赖于该类的对象,⽽是直接通过类去访问,可以理解为被该类的所有实例对象所共⽤,所以说是全局的。
可以修饰代码块,叫做静态代码块
特点:只执行一次,当类被加载到内存中时执行(运行时类)
static {
System.out.println(1);
}
栈和堆:Student student =new Student()左边的在栈中,右边的在堆中,双方依靠地址互通
基本数据类型不需要堆,引用类型需要堆