首页 > 编程语言 >Java的 static关键字

Java的 static关键字

时间:2022-09-19 15:33:07浏览次数:62  
标签:Java 变量 关键字 静态 v1 v2 static 修饰

通常,在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法

   声明为static的方法有以下几条限制: 
· 它们仅能调用其他的static 方法。 
· 它们只能访问static数据。 
· 它们不能以任何方式引用this 或super。

 

static关键字最基本的用法是:

1、被static修饰的变量属于类变量,可以通过类名.变量名直接引用,而不需要new出一个类来

2、被static修饰的方法属于类方法,可以通过类名.方法名直接引用,而不需要new出一个类来

被static修饰的变量、被static修饰的方法统一属于类的静态资源,是类实例之间共享的,换言之,一处变、处处变。JDK把不同的静态资源放在了不同的类中而不把所有静态资源放在一个类里面,很多人可能想当然认为当然要这么做,但是是否想过为什么要这么做呢?个人认为主要有三个好处:

1、不同的类有自己的静态资源,这可以实现静态资源分类。比如和数学相关的静态资源放在java.lang.Math中,和日历相关的静态资源放在java.util.Calendar中,这样就很清晰了

2、避免重名。不同的类之间有重名的静态变量名、静态方法名也是很正常的,如果所有的都放在一起不可避免的一个问题就是名字重复,这时候怎么办?分类放置就好了。

3、避免静态资源类无限膨胀,这很好理解。

static修饰类

这个用得相对比前面的用法少多了,static一般情况下来说是不可以修饰类的,如果static要修饰一个类,说明这个类是一个静态内部类(注意static只能修饰一个内部类),也就是匿名内部类。像线程池ThreadPoolExecutor中的四种拒绝机制CallerRunsPolicy、AbortPolicy、DiscardPolicy、DiscardOldestPolicy就是静态内部类。

static变量

  static变量也称作静态变量,静态变量和非静态变量的区别是:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。

  static成员变量的初始化顺序按照定义的顺序进行初始化。

声明为static的变量实质上就是全局变量。当声明一个对象时,并不产生static变量的拷贝,而是该类所有的实例变量共用同一个static变量。静态变量与静态方法类似。所有此类实例共享此静态变量,也就是说在类装载时,只分配一块存储空间,所有此类的对象都可以操控此块存储空间,当然对于final则另当别论了

class Value {

    static int c = 0;

 

    static void inc() {

       c++;

    }

}

 

public class Count2 {

    public static void prt(String s) {

       System.out.print(s);

    }

 

    public static void main(String[] args) {

       Value v1, v2;

       v1 = new Value();

       v2 = new Value();

       prt("v1.c=" + v1.c + "  v2.c=" + v2.c);

       v1.inc();

       prt(" v1.c=" + v1.c + "  v2.c=" + v2.c);

    }

}

结果为:v1.c=0  v2.c=0 v1.c=1  v2.c=1

标签:Java,变量,关键字,静态,v1,v2,static,修饰
From: https://www.cnblogs.com/zhangmingmkzj/p/16707830.html

相关文章

  • Javascript_DOM操作
    Javascript_DOM操作一、关于Javascript与DOM1.JavaScriptJavaScript简称JS,是一种解释型脚本语言。JavaScript是一种轻量级编程语言。JavaScript是可插入HTML页面的编......
  • Java学习单例式设计
    单例设计模式:1.所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例2.如何实现?饿汉式vs懒汉式3.区分饿汉式和懒汉......
  • Java复制Word文档
    MicrosoftWord提供了许多易于使用的文档操作工具,同时也提供了丰富的功能集供创建复杂的文档使用。在使用的时候,你可能需要复制一个文档里面的内容到另一个文档。本文介绍......
  • Java使用FTP下载文件(将流返回给HttpServletResponse)
    1.添加依赖<dependency><groupId>commons-net</groupId><artifactId>commons-net</artifactId><version>3.6</version>......
  • 女生IT学Java好还是学前端好?
    这个要根据以下几点来分析来判断: 1、公司现状:公司女程序数量凤毛麟角,学Java的就更少了。女生选择前端,以后大概率碰到女前端程序猿,以后有个伴; 2、工资待遇:普遍认为Jav......
  • 计算机毕业设计 SSM+Vue冷冻仓储管理系统 生鲜仓库管理系统 冷冻冷藏仓库管理系统Java
    ......
  • java-stream-内部类
    一、概述按网上的说法,内部类分为4种:1,成员内部类,类似于对象的成员变量;需要通过外部类对象创建;2,静态内部类,类似于类的static变量;直接通过类创建;3,局部内部类,类似于方法(作......
  • 深入浅出 JavaScript 中的 this
    笔者最近在看你不知道的JavaScript上卷,里面关于this的讲解个人觉得非常精彩。JavaScript中的this算是一个核心的概念,有一些同学会对其有点模糊和小恐惧,究其原因,现在......
  • Javascript 字符串
    JavaScript字符串您能够使用单引号或双引号字符串长度内建属性length可返回字符串的长度:vartxt="ABCDEFGHIJKLMNOPQRSTUVWXYZ";varsln=txt.length;特殊......
  • Java 方法
    方法的命名规则1.方法的名字的第一个单词应以小写字母作为开头,后面的单词则用大写字母开头写,不使用连接符。例如:addPerson。2.下划线可能出现在JUnit测试方法名称中用......