Java 面向对象(三)static 关键字

一、概述

  关于 static 关键字的使用,它可以用来修饰的成员变量和成员方法,被修饰的成员是属于类的,而不是单单属于某个对象的。

  用 static 关键字修饰的,属于类,就可以不依靠创建对象来调用了。

二、定义和使用格式

  1、类变量(静态变量)

    当 static 修饰成员变量时,该变量称为 类变量。该类的每个对象都共享同一个类变量的值。

    任何对象都可以更改该类变量的值,但也可以在不创建该类的对象的情况下对类变量进行操作。

    类变量:使用 static 关键字修饰的成员变量。

    定义格式:

static 数据类型 变量名;

      Demo:

 1 public class Student {
 2   private String name;
 3   private int age;
 4   private int sid;
 5   private static int numberOfStudent = 0;
 6  
 7    public Student(String name, int age){
 8         this.name = name;
 9         this.age = age;
10         // 通过 numberOfStudent 给学生分配学号
11         this.sid = ++numberOfStudent;
12     }   
13  
14 }  

  2、类方法(静态方法)

    当 static 修饰成员方法时,该方法称为 类方法

    静态方法在声明中有 static,建议使用类名来调用,而不需要创建类的对象来调用。

    类方法:使用 static 关键字修饰的成员方法,习惯称为 静态方法

    定义格式:

修饰符 static 返回值类型 方法名 (参数列表){
    // 执行语句
}

     Demo:在上面的 Student 类中定义一个静态方法

1 public static void showNum() {
2     System.out.println("num:" + numberOfStudent);
3 }

    注意事项:

      •  静态方法可以直接访问静态变量和静态方法。(原因:因为在内存当中是【先】有的静态内容,【后】有的非静态内容。)
      •     静态方法不能直接访问普通成员变量或成员方法。反之,成员方法可以直接访问静态变量或静态方法。
      •     静态方法中,不能使用 this 关键字。(原因:this代表当前对象,通过谁调用的方法,谁就是当前对象。)

    小结:静态方法只能访问静态成员,非静态方法即可以访问非静态成员也可以访问静态成员。

  3、调用格式

    static 修饰的成员可以并且建议通过 类名直接访问。虽然也可以通过对象名访问静态成员,原因即多个对象均属于一个类,共享使用同一个静态成员,但是不建议,会出现警告信息。

    调用格式:

// 访问类变量
类名.类变量名;

// 调用静态方法
类名.静态方法名(参数);

三、静态原理图解

  static 修饰的内容:

    •  是随着类的加载而加载的,且只加载一次;
    •     存储与一块固定的内存区域(静态区),所以,可以直接被类名调用;
    •     它优先于对象存在,所以,可以被所有对象共享。

  图解:

 

四、静态代码块

  静态代码块:定义在成员位置,使用 static 修饰的代码块 { }。

    位置:类中方法外。

    执行:随着类的加载而执行切执行一次,优先于 main 方法和构造方法的执行。

    特点:当第一次用来本类时,静态代码块执行唯一的一次。

  定义格式:

public class ClassName{
    static {
        // 静态代码块的内容
    }
}

         作用:用来一次性给静态成员变量进行初始化赋值。

      Demo:

 1 public class Game {
 2     public static int number;
 3     public static ArrayList<String> list;
 4     static {
 5         // 给类变量赋值
 6         number = 2;
 7         list = new ArrayList<String>();
 8         // 添加元素到集合中
 9         list.add("张三");
10         list.add("李四");
11     }
12 }

 

  小结:static 关键字,可以修饰变量、方法和代码块。在使用的过程中,其主要目的还是想在不创建对象的情况下,去调用方法。

 

转载于:https://www.cnblogs.com/niujifei/p/11353244.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值