JAVA的static关键字

先看以下代码

package javastudy;

public class StaticDemo {
    public static void main(String[] args) {
        Child c1=new Child();
        c1.name="zhangsan";
        c1.country="CN";        //代码重复
        c1.speak();

        Child c2=new Child();
        c2.name="lisi";
        c2.country="CN";        //代码重复
        c2.speak();
    }
}

class Child
{
    String name;
    String country;
    void speak(){
        System.out.println("My name is "+name+",my country is "+country);
    }
}

以上代码中,c1和c2两个对象中,包括一个相同的属性值“.country="CN"”,这个属性及属性值是两个对象所共有的。

代码重复了,如果对象增加,这个属性需要再写。

那么,有没有办法将这个共同的属性值提取,单独存放,且又共有均有访问呢。

这时,就用到关键字——static

static(静态):用于修饰成员(成员变量、成员方法)。

使用static后的代码如下:

package javastudy;

public class StaticDemo {
    public static void main(String[] args) {
        Child c1=new Child();
        c1.name="zhangsan";
        c1.speak();

        Child c2=new Child();
        c2.name="lisi";
        c2.speak();
    }
}

class Child
{
    String name;
    static String country="CN";
    void speak(){
        System.out.println("My name is "+name+",my country is "+country);
    }
}

运行结果:

My name is zhangsan,my country is CN
My name is lisi,my country is CN

 static用法:

1、用于修改成员(成员变量和成员方法)

2、当成员被静态修改后,除了可以被对象调用外,可以被类名直接调用——类名.静态成员。

static静态特点:

1、静态随着类的加载而加载。

  如上面的示例代码,创建Child类实例,该类即被加载到内存里,此时Country="CN"就在内存中开辟好了空间。

  也就是说静态会随着类的消失而消失。说明其生命周期最长。对象用完后,就消失。

2、优先于对象存在。静态先存的,对象是后存的。

3、被所有对象所共享。

4、可以直接被类名所调用。

类变量和成员变量的区别:

1、存放位置。

  类变量随着类的加载存在于方法区中,成员变量随着对象的建立而存在于堆内存中。

  被static修饰的内容,就不在堆内存中了,而是存在于单独的方法区(也叫共享区或数据区)。特有对象随着对象存储于堆内存中。

2、生命周期

  类变量生命周期最长,随着类的消失而消失;成员变量随着对象的消失而消失。

静态失使用注意事项:

1、静态方法只能访问静态成员。非静态方法可以访问静态和非静态成员。

1、静态方法中不可以定义this、super,因为静态优先于对象存在。

静态的利弊:

利:对对象的共享数据进行单独空间的存储,节省内存,没有每个对象都存一份。

  可以直接被类名调用。

弊:生命周期过长。

  访问有局限性,只能访问静态。

示例1、

package javastudy;

public class StaticDemo {
    public static void main(String[] args) {
        System.out.println(Child.country);    //未创建对象,可以用类名直接调用。先于对象存在。
    }
}

class Child
{
    String name;    //这是成员变量,也叫实例变量。
    static String country="CN";    //这是静态的成员变量,也称为类变量。
    void speak(){
        System.out.println("My name is "+name+",my country is "+country);
    }
}

输出:CN

没有创建对象,但可以用类名调用类变量。静态优先于对象的存在。

 总结:

数据值是否被多个对象所共用享受,是就使用静态,不是则不使用静态。

用类名调用时,就要用static修饰。

时间: 2024-10-12 19:46:22

JAVA的static关键字的相关文章

Java下static关键字用法详解

Java下static关键字用法详解 本文章介绍了java下static关键字的用法,大部分内容摘自原作者,在此学习并分享给大家. Static关键字可以修饰什么? 从以下测试可以看出, static 可以修饰: 1. 语句块 2. 成员变量(但是不能修饰局部变量) 3. 方法 4. 接口(内部接口) 5. 类(只能修饰在类中的类, 即静态内部类) 6. jdk 1.5 中新增的静态导入 那么static 修饰的表示什么呢? 当创建一个类时,就是在创建一个新类型,描述这个类的对象的外观和行为,除

java中static关键字总结

Java中,static关键字一般情况下有四种用法: 用来修饰一个变量. 用来修饰一个方法. 用来修饰一个内部类. 用来修饰一段代码块. 1 public class Student{ 2 String name; 3 static int count;//static修饰的变量 4 static{//static修饰的代码块 5 count=0; 6 } 7 public static void playGame(){//static修饰的方法 8 System.out.println("我爱

java中static关键字解析

static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一.下面就先讲述一下static关键字的用法和平常容易误解的地方,最后列举了一些面试笔试中常见的关于static的考题.以下是本文的目录大纲: 一.static关键字的用途 二.static关键字的误区 三.常见的笔试面试题 若有不正之处,希望谅解并欢迎批评指正. 请尊重作者劳动成果,转载请标明原文链接: http://www.cnblogs.com/dolphin05

Java中static关键字用法总结

1.     静态方法 通常,在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法 声明为static的方法有以下几条限制: · 它们仅能调用其他的static 方法. · 它们只能访问static数据. · 它们不能以任何方式引用this 或super. class Simple { static void go() { System.out.println("Welcome"); } } public class Cal { public static vo

关于java的static关键字

通常来说,当你创建类时,就是在描述那个类的对象的外观与行为.除非你用new创建那个类的对象,否则,你实际上并未获得任何东西.当你用new来创建对象时,数据存储空间才被分配,其方法才供外界调用. 但是有两种情形,用上述方法是无法解决的.一种情形是,你只需要为某特定数据分配一份存储空间,而不去考虑究竟要创建对少个对象,还是甚至根本就不需要创建任何对象.另一种情形是,你希望某个方法不与包含它的类的任何对象关联在一起.也就是说,即使没有创建对象,也能够调用这个方法. 通过static关键字,可以满足这两

[java基础]java中static关键字

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

Java中static关键字介绍

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

java中static关键字的用法

<Java编程思想(第四版)>中P86中有对static关键字的详细解释. “在static方法的内部不能调用非静态方法,反过来倒是可以.而且在没有创建任何对象的前提下,仅仅通过类本身来调用static方法,这实际上正是static方法的重要用途.” 以下通过“1.static方法:2.static变量:3.static代码块”三方面来阐述. 1.static方法: static方法一般称作静态方法,由于静态方法不依赖于任何对象就可以进行访问,因此对于静态方法来说,是没有this的,因为它不依

java中static关键字的理解(转载)

static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一.下面就先讲述一下static关键字的用法和平常容易误解的地方,最后列举了一些面试笔试中常见的关于static的考题.以下是本文的目录大纲: 一.static关键字的用途 二.static关键字的误区 三.常见的笔试面试题 若有不正之处,希望谅解并欢迎批评指正. 请尊重作者劳动成果,转载请标明原文链接: http://www.cnblogs.com/dolphin05

Java基础-static 关键字解析

参考文章: https://www.cnblogs.com/dolphin0520/p/3799052.html static的应用: 1.static是为了在没有创建任何对象的前提下,仅仅通过类本身来调用static方法. 只要类被加载了,就能通过类名进行访问. 2.static 可以用来修饰类的成员方法,类的成员变量 静态方法是不可以调用非静态方法,但是非静态方法能够调用静态方法, 因为静态方法是在类中的,而非静态方法必须要以来具体的对象才能被调用 static变量: 称为静态变量,静态变量