this关键字作用
1.this修饰属性:
例如:属性与形参发生重名时或者 属性与局部变量发生重名时(均会出现就近原则),需要用this.修饰属性。
如果不发生重名,访问属性可以省略this
2.this修饰方法:
在同一个类中,方法可以相互调用,this.可以省略不写。
3.this修饰构造器
同一个类中的构造器可以相互用this调用,但是注意this修饰的构造器必须放在第一行。
//构造方法
public Person(int id , int age ){
this(id);
this.age = age;
}
public Person(int id){
this.id = id ;
}
static 作用
static可以修饰:属性、方法、代码块、内部类
1. static修饰属性:
public class Test {
//属性
int id ;
static int sid ;
public static void main(String[] args) {
Test t1 = new Test();
t1.id = 10;
t1.sid = 10;
Test t2 = new Test();
t2.id = 20;
t2.sid = 20 ;
Test t3 = new Test();
t3.id = 30;
t3.sid = 30;
System.out.println(t1.id);//10
System.out.println(t2.id);//20
System.out.println(t3.id);//30
System.out.println(t1.sid);//30
System.out.println(t2.sid);//30
System.out.println(t3.sid);//30
}
}
访问方式
访问方式:对象名.属性名 类名.属性名(推荐)
官方推荐:通过类名.属性名方式去访问:
Test.sid = 100;
System.out.println(Test.sid);//100
应用场景:
某些特定的属性想要在内存中共享,那么就可以用static修饰属性。
属性分类:
静态属性:类变量
非静态属性:实例变量
2. static 修饰方法
- static和public关键字没有先后顺序,都是修饰符
- static修饰的方法(静态方法)不能访问非静态属性
- static修饰的方法(静态方法)不能访问非静态的方法
- stiatic修饰的方法(静态方法)不能使用this关键字(修饰的属性和方法)
- 非静态的方法可以用对象名.方法名调用
- 静态方法可以用对象名.方法名 也可以类名.方法名(推荐)调用
- main方法可以调用所在的类中static方法。
代码块
类的组成:属性 方法 构造器 代码块 内部类
代码的分类:普通块 构造块 静态块 同步类
- 普通块:限制局部变量作用域
- 构造块:
- 静态块:
static{
}
在静态块中只能访问静态属性、静态方法
总结:
- 代码块的执行顺序:最先执行静态块,只在类加载时执行一次,一般在实战项目时:创建工厂、数据库的初始化信息都放入静态块。一般用于执行全局操作。
- 再执行构造块
- 再执行构造器
- 最后执行方法中的普通块