java 关键字总结

**

Static

**
一旦使用了static关键字,那么这样的内容不在属于对象自己,二十属于类的,所以凡是本类的对象,都共享一份。
static修饰成员变量
一般修饰独一份不可重复的变量(比如计数器)
static修饰成员方法
一旦使用static修饰成员方法,那么这就成了静态方法,静态方法不属于对象,而是属于类的
如果没有static关键字,那么必须首先创建对象,才能调用方法
如果有了static关键字,那么则不需要创建对象,直接使用类名称进行调用
无论是成员变量,还是成员方法。如果有了static,都推荐使用类名称进行调用。
静态变量:类名称.静态变量
静态方法:类名称.静态方法()
注意事项
静态不能直接访问非静态。
原因:因为在内存当中是【先】有的静态内容,【后】有的非静态内容。
“先人不知道后人,但是后人知道先人。”
静态方法当中不能用this。
原因:this代表当前对象,通过谁调用的方法,谁就是当前对象。


```kotlin

```java
 public static void main(String[] args) {
        MyClass obj = new MyClass(); // 首先创建对象
        // 然后才能使用没有static关键字的内容
        obj.method();

        // 对于静态方法来说,可以通过对象名进行调用,也可以直接通过类名称来调用。
        obj.methodStatic(); // 正确,不推荐,这种写法在编译之后也会被javac翻译成为“类名称.静态方法名”
        MyClass.methodStatic(); // 正确,推荐

        // 对于本来当中的静态方法,可以省略类名称
        myMethod();
        Demo02StaticMethod.myMethod(); // 完全等效
    }

    public static void myMethod() {
        System.out.println("自己的方法!");
    }



public class MyClass {

    int num; // 成员变量
    static int numStatic; // 静态变量

    // 成员方法
    public void method() {
        System.out.println("这是一个成员方法。");
        // 成员方法可以访问成员变量
        System.out.println(num);
        // 成员方法可以访问静态变量
        System.out.println(numStatic);
    }

    // 静态方法
    public static void methodStatic() {
        System.out.println("这是一个静态方法。");
        // 静态方法可以访问静态变量
        System.out.println(numStatic);
        // 静态方法不能直接访问非静态变量【重点】
//        System.out.println(num); // 错误写法!

        // 静态方法中不能使用this关键字。
//        System.out.println(this); // 错误写法!
    }

内存图

静态代码块
静态代码块的格式是:
public class 类名称 {
    static {
        // 静态代码块的内容
    }
}


特点:当第一次用到本类时,静态代码块执行唯一的一次。
静态内容总是优先于非静态,所以静态代码块比构造方法先执行。

静态代码块的典型用途:
用来一次性地对静态成员变量进行赋值。

## **## parvate和this**

**parvate 和  this  关键字**
private的含义
1. private是一个权限修饰符,代表最小权限。
2. 可以修饰成员变量和成员方法。
3. 被private修饰后的成员变量和成员方法,只在本类中才能访问。
this代表所在类的当前对象的引用(地址值),即对象自己的引用。
当方法的局部变量和对象的成员变量重名时,根据就近原则,优先使用局部变量,如果需要使用 成员变量就需要使用this 关键字了
记住 :方法被哪个对象调用,方法中的this就代表那个对象。即谁在调用,this就代表谁。

this关键字用来访问本类内容,有三种用法:
在本类成员方法中,访问本类的成员变量
在本类的成员方法中,访问本类的另一个成员方法
在本类的构造方法中,访问本类的另一个构造方法
在第三种用法当中要注意:
A. this(...)调用也必须是构造方法的第一个语句,唯一一个。
B. super和this两种构造调用,不能同时使用。

```java

```java
public class Zi extends Fu {

    int num = 20;

    public Zi() {
//        super(); // 这一行不再赠送
        this(123); // 本类的无参构造,调用本类的有参构造
//        this(1, 2); // 错误写法!
    }

    public Zi(int n) {
        this(1, 2);
    }

    public Zi(int n, int m) {
    }

    public void showNum() {
        int num = 10;
        System.out.println(num); // 局部变量
        System.out.println(this.num); // 本类中的成员变量
        System.out.println(super.num); // 父类中的成员变量
    }

    public void methodA() {
        System.out.println("AAA");
    }

    public void methodB() {
        this.methodA();
        System.out.println("BBB");
    }

}

Super

Super关键字的用法有三种
在子类的成员方法中,访问父类的成员变量
在子类的成员方法中,访问父类的成员方法
在子类的构造方法中,访问父类的构造方法

super this 内存图

final
final关键字代表最终、不可改变的。

常见四种用法:
可以用来修饰一个类
可以用来修饰一个方法
还可以用来修饰一个局部变量
还可以用来修饰一个成员变量

当final关键字用来修饰一个类的时候,
格式:
public final class 类名称 {
// …
}
含义:当前这个类不能有任何的子类。(太监类)
注意:一个类如果是final的,那么其中所有的成员方法都无法进行覆盖重写(因为没儿子。)

当final关键字用来修饰一个方法的时候,这个方法就是最终方法,也就是不能被覆盖重写。
格式:
修饰符 final 返回值类型 方法名称(参数列表) {
// 方法体
}
注意事项:
对于类、方法来说,abstract关键字和final关键字不能同时使用,因为矛盾。

一旦使用final用来修饰局部变量,那么这个变量就不能进行更改。
“一次赋值,终生不变”

final int num2 = 200;
// 正确写法!只要保证有唯一一次赋值即可
final int num3;
num3 = 30;

注意事项:

  • 对于基本类型来说,不可变说的是变量当中的数据不可改变 对于引用类型来说,不可变说的是变量当中的地址值不可改变

    对于成员变量来说,如果使用final关键字修饰,那么这个变量也照样是不可变。

    由于成员变量具有默认值,所以用了final之后必须手动赋值,不会再给默认值了。
    对于final的成员变量,要么使用直接赋值,要么通过构造方法赋值。二者选其一。
    必须保证类当中所有重载的构造方法,都最终会对final的成员变量进行赋值。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值