static关键字

作者: Lutous | 来源:发表于2019-07-04 00:41 被阅读0次

静态与非静态间的调用

package cn.dailylearn.api;
/*
 * 如果一个对象使用了static关键字,那么这个变量不再属于对象自己,而是属于所在的类,多个对象共享同一个数据
 * 一旦使用static修饰成员方法,那么这就成为了静态方法,静态方法不属于对象,而是属于类
 * 静态不能直接访问非静态
 * */
public class dl_static {
    int num;//成员变量
    static int static_num;//静态变量

    public static void main(String[] args) {
        Person studentPerson = new Person("A", 18);
        Person stPerson = new Person("B", 19);
        studentPerson.roomString = "XXX";
        
        System.out.println(stPerson.roomString);
        System.out.println(studentPerson.getId());
        System.out.println(stPerson.getId());
        
        Person.static_method();
        studentPerson.method();
        
//      对于本类的静态方法,可以省去前面的类名称
        name();

    }
    //静态方法 
    public static void name() {
        System.out.println("自己的静态方法");
//      静态方法中不能使用this关键字
//      System.out.println(num); 报错,静态不能直接访问非静态 --- 先有静态,后有非静态
        System.out.println(static_num);
    }
    //成员方法   --成员方法可以访问成员变量和静态变量
    public void method() {
        System.out.println(num);
        System.out.println(static_num);
    }
}

static内存使用情况

static内存使用情况

static代码块

package ContructorTest;

import java.util.Random;

public class ContructorTest {
    public static void main(String[] args) {
        Employee[] staff = new Employee[3];
        
        System.out.println("#####################");
        staff[0] = new Employee("Harry", 18000);
        System.out.println("#####################");
        staff[1] = new Employee(15000);
        System.out.println("#####################");
        staff[2] = new Employee();
        
        for (Employee employee : staff) {
            System.out.println("name = " + employee.getName() + "id = " + employee.getId() + "salary = " + employee.getSalary());
        }
    }
}

class Employee
{
    private static int nextId;
    
    private int id;
    private String name = "";
    private double salary;
//第一次初始化的时候运行且只运行一次
    static 
    {
        System.out.print("static代码块,只运行一次\n");
        Random generator = new Random();
        nextId = generator.nextInt(10000);
    }
//  每次初始化时都运行
    {
        System.out.println("每次初始化都运行");
        id = nextId;
        nextId ++ ;
    }
    
    public Employee(String name, double salary) {
        this.name = name;
        this.salary = salary;
    }
    
    public Employee(double salary) {
        this("Employee #" + nextId, salary);
    }
    
    public Employee() {
        
    }
    
    public String getName() {
        return name;
    }
    
    public double getSalary() {
        return salary;
    }
    
    public int getId(){
        return id;
    }
}

相关文章

  • OC中static、const、extern关键字理解

    static关键字 static关键字用于修饰变量。 static修饰局部变量当使用static修饰局部变量时, ...

  • static关键字

    Static关键字概述 static(静态)关键字可以用于修饰变量、方法和代码块。我认为static关键字的主要用...

  • 【Java】关键字

    一、 static关键字 static关键字的总结: static关键字 可以再没有创建对象的时候进行调用类的元素...

  • Java学习Day03

    今日学习内容总结 Static关键字 Arrays类 Math类 继承 Static关键字 一旦用了static,...

  • java基础-day11-static关键字

    static关键字和接口 1. static关键字【重点】 1.1 static修饰静态成员变量 1.1.1 为什...

  • C语言中的static关键字

    @TOC C语言中的static关键字 static 关键字,意为静态。 static 变量 特性:全局变量在函数...

  • Static关键字

    C语言中的static关键字和Java的static关键字意义不一样。 1 用static修饰函数 static用...

  • C基础知识

    基础问题 1.static关键字和const关键字。 static: 作用于变量时:用static声明局部变量--...

  • 13.面向对象进阶—静态关键字static

    面向对象进阶 静态关键字static static关键字的作用,修饰成员变量的用法 static是静态的意思,可以...

  • Java学习13:static关键字,this关键字

    static关键字 static翻译为“静态的”。所有static关键字修饰的都是类相关的,类级别的。所有stat...

网友评论

    本文标题:static关键字

    本文链接:https://www.haomeiwen.com/subject/stfkhctx.html