static关键字修饰属性

static 静态的,可以修饰属性,方法,代码块(或初始化块) , 内部内

非static修饰的属性(实例变量):各个对象各自拥有一套各自的副本

static修饰属性(l类变量):

1.由类创建的所有的对象,都共用一个属性

2.当其中一个对象对此属性进行修改,会导致其他对象对此属性的一个调用。

3.类变量随着类的加载而加载的。而且独一份

4.静态的变量可以直接通过 “类.类变量” 的形式来调用

5. 类变量的加载要早于对象,所以当有对象以后, 可以 "对象.类变量"  的使用,但是 "类.实例变量" 是不行的

6.类变量存在于静态域

static修饰方法(类方法):

1.随着类的加载而加载,在内存中也是独一份

2. 可以直接通过  "类.类方法" 的方式来调用

3.内部可以调用静态的属性或者静态的方法,而不能调用非静态的,反之非静态的是可以调用静态的

4.静态的方法内不能有 this 或者 super 关键字

注意:静态的结构(static的属性,方法,代码块,内部类)的生命周期要早于非静态的结构,同时回收也要晚于非静态的结构。生命周期比较长

TestSportsMan:

package com.aff.wrapper;

public class TestSportsMan {
    public static void main(String[] args) {
        SportsMan s1 = new SportsMan("苗苗", 25);
        SportsMan s2 = new SportsMan("芳芳", 26);
        s1.name = "文静";
        s1.nation = "China";
        System.out.println(s1);
        System.out.println(s2);
        System.out.println(SportsMan.nation);// 类变量随着类的加载而加载的。而且独一份
        // SportsMan.show1();//无法直接调用
        SportsMan.show2();
    }
}

class SportsMan {
    // 实例变量
    String name;
    int age;
    // 类变量
    static String nation;

    public SportsMan(String name, int age) {
        super();
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "SportsMan [name=" + name + ", age=" + age + ", nation=" + nation + "]";
    }

    public void show1() {
        System.out.println("我喜欢芳芳");
    }

    public static void show2() {
        System.out.println("我喜欢苗苗");
    }
}

输出结果:

SportsMan [name=文静, age=25, nation=China]
SportsMan [name=芳芳, age=26, nation=China]
China
我喜欢苗苗

 

原文地址:https://www.cnblogs.com/afangfang/p/12523602.html

时间: 2024-10-12 23:24:45

static关键字修饰属性的相关文章

阶段1 语言基础+高级_1-3-Java语言高级_1-常用API_1_第6节 static静态_13_静态static关键字修饰成员方法

static关键字 用来修饰方法的情况 任何使用这个静态方法呢? 可以直接通过对象名称的方式进行调用. 更好的写法是通过类名称进行调用. 分别定义成员变量和静态变量 静态方法里面不能用this 原文地址:https://www.cnblogs.com/wangjunwei/p/11206517.html

static关键字修饰的属性及调用顺序

1 package Day11; 2 3 public class StaticInitialization { 4 static Table table=new Table(); //Bow11 Bow12 Table() f1(1) 5 static Cupboard cupboard=new Cupboard();//Bow14 Bow15 Bow13 Cupboard() f1(2) 6 public static void main(String[] args) { 7 System.

static 关键字 静态属性与方法 -> :: self $this 区别

1.声明类属性或方法为静态,就可以不实例化类而直接访问.静态属性不能通过一个类已实例化的对象来访问(但静态方法可以). 2.由于静态方法不需要通过对象即可调用,所以伪变量 $this 在静态方法中不可用. 3.静态属性不可以由对象通过 -> 操作符来访问. 4.用静态方式调用一个非静态方法会导致一个 E_STRICT 级别的错误. 5.就像其它所有的 PHP 静态变量一样,静态属性只能被初始化为文字或常量,不能使用表达式.所以可以把静态属性初始化为整数或数组,但不能初始化为另一个变量或函数返回值

Static关键字

1.static修饰的资源属于类级别的资源,静态的资源,对于类的所有实例对象的共享的资源 2.static关键字可以用来修饰属性,方法,代码块 3.static修饰的资源,在类加载期间执行 Static修饰的属性 static关键字修饰属性,属于对类所有实例对象共享的变量 访问静态的属性:类名.属性名 Static修饰的方法 static关键字修饰的方法属于静态方法可以直接类名.方法名()进行调用,一般的是把静态方法作为工具方法 静态方法中不能调用对象的资源(对象属性,对象方法); Static

static关键字与方法区和类加载

1.static的作用 答:将成员变量或方法存储进方法区.因为方法区能保证数据只存在一份,只会加载一次(类加载器加载类的时候才加载一次) 注:static Object obj = new Object();方法区存储的是obj这个引用变量,而不是Obejct这个被创建的对象,对象依旧存储在堆中.只不过由于statcic 引用变量一直存在,导致堆中这个对象一直没法被回收. 注:一定要区分什么叫变量!什么叫对象!方法区明文说的是:存储静态变量和静态方法.是变量,即引用变量,不是对象. java中对

[java基础]java中static关键字

1.static概念 static是静态修饰符,什么叫静态修饰符呢?大家都知道,在程序中任何变量或者代码都是在编译时由系统自动分配内存来存储的,而所谓静态就是指在编译后所分配的内存会一直存在,直到程序退出内存才会释放这个空间,也就是只要程序在运行,那么这块内存就会一直存在. 这样做有什么意义呢? 在Java程序里面,所有的东西都是对象,而对象的抽象就是类,对于一个类而言,如果要使用他的成员,那么普通情况下必须先实例化对象后,通过对象的引用才能够访问这些成员,但是有种情况例外,就是该成员是用sta

Java知识点:static关键字

static关键字: static:修饰属性.方法.静态语句块(对应普通语句块) static与类绑定(非static与对象绑定) static方法(包括静态语句块)里不能访问或操作非static属性和方法(因此static里不能用this,因为this代表对象本身) 而非static则方法可以访问或操作static属性,调用static方法 public class Test { //对象相关属性:跟对象绑定 public int age; //类相关属性:跟类绑定 public static

Java中static关键字介绍

static关键字主要有两种作用: 第一,为某特定数据类型或对象分配单一的存储空间,而与创建对象的个数无关. 第二,实现某个方法或属性与类而不是对象关联在一起 具体而言,在Java语言中,static主要有4中使用情况:成员变量.成员方法.代码块和内部类 (1)static成员变量: Java类提供了两种类型的变量:用static关键字修饰的静态变量和不用static关键字修饰的实例变量.静态变量属于类,在内存中只有一个复制,只要静态变量所在的类被加载,这个静态变量就会被分配空间,因此就可以被使

我们眼中的static关键字

就在刚才我在看线程方面的东西时候,看见一段这样的代码 <span style="font-size:14px;">package book.thread; public class Priority { static class MyThread extends Thread{ private int ID = 0; public MyThread(int id){ this.ID = id; } public void run(){ System.out.println(