this关键字(用法):this指正在使用的那个对象
- this修饰属性//当属性名和形参名或局部变量名重名时, 会有就近原则, 这时就需要用this指代属性 (大部分情况this都可省略不写.)
- this修饰方法: 例如调用eat方法, eat();或this.eat( ); 在同一个类中调用方法, this.可以省略不写
- this修饰构造器: 构造器调用要么在创建对象时被虚拟机自动调用, 要么在构造器中调用构造器使用this(形参1,形参2); //括号内填入的是重载构造器的形参.
不能在成员方法中通过this调用构造方法
- 使用this调用构造方法的语句必须位于第一行.
ststic关键字可以修饰属性, 方法, 代码块, 内部类
被static修饰的内容共通性: 会被所有该类的对象共享静态域
- static修饰属性: 会在创建对象加载类时一并载入方法区中的静态域里, 这个载入早于创建对象存在
- 两种访问方式 类名和对象: 对象名.属性名 类名.属性名(推荐)
- 静态属性(叫类变量), 非静态属性(叫实例变量,就是没static修饰的)
- 使用思维: 当变量被反复赋予相同值时用static让其成为共享属性/或某些值需要被共享时则用ststic修饰
- static修饰方法//没staic修饰的方法叫实例方法
- 方法常见修饰符为public和static, 它们之间没有先后顺序是并列的, static public void main( );也是可以的.
- 什么时候不能用static: 当一个行为执行过程中需要对象参与,则不能用static,要定义为实例方法
- 作用: 使方法实现类名调用(正常是要创建对象才能调用方法)
- 静态方法不能访问非静态属性和非静态方法//原理: 因为静态属性先于对象被加载, 而静态方法可以不用依托对象调用. 如果在未创建对象之前-, 静态方法就调用它的非静态属性, 由于对象还未创建所以会调用失败(非静态属性只能被对象调用).
- 静态方法不能使用this//原因同上, 可能存在对象还未创建的情况
- static静态方法可以通过类名和对象访问, 非静态方法只能用对象访问
- 在同一类中静态方法能被直接调用: 示例 在静态b方法调用静态c
static void b(){
System.out.println("b方法被执行了");
c(); } //直接写方法名既可以调用
static void c(){
System.out.println("c方法被执行了");
}