static方法(请问java语言中的static的用法)

2025-04-12 23:40:02 0

static方法(请问java语言中的static的用法)

本文目录

请问java语言中的static的用法

1)static方法  static方法一般称作静态方法,由于静态方法不依赖于任何对象就可以进行访问,因此对于静态方法来说,是没有this的,因为它不依附于任何对象,既然都没有对象,就谈不上this了。并且由于这个特性,在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用。2)static变量  static变量也称作静态变量,静态变量和非静态变量的区别是:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。3)static代码块  static关键字还有一个比较关键的作用就是 用来形成静态代码块以优化程序性能。static块可以置于类中的任何地方,类中可以有多个static块。在类初次被加载的时候,会按照static块的顺序来执行每个static块,并且只会执行一次。

static方法和非static方法的区别

static方法是静态方法,没有static的是非静态方法。非静态方法访问静态或者非静态成员的方式是一样的,可以直接访问。静态(static)方法 可以直接类名。方法名调用 静态方法必须创建对象才能访问非静态成员。静态方法可以不创建对象,直接访问静态成员,也可以通过创建对象来访问。

java中static的用法

1.静态方法通常,在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法声明为static的方法有以下几条限制:·它们仅能调用其他的static 方法。·它们只能访问static数据。·它们不能以任何方式引用this 或super。class Simple {staticvoid go() { System.out.println(“Welcome“); }}publicclass Cal {publicstaticvoid main(String args) { Simple.go(); }} 调用一个静态方法就是“类名.方法名”,静态方法的使用很简单如上所示。一般来说,静态方法常常为应用程序中的其它类提供一些实用工具所用,在Java的类库中大量的静态方法正是出于此目的而定义的。2.静态变量声明为static的变量实质上就是全局变量。当声明一个对象时,并不产生static变量的拷贝,而是该类所有的实例变量共用同一个static变量。静态变量与静态方法类似。所有此类实例共享此静态变量,也就是说在类装载时,只分配一块存储空间,所有此类的对象都可以操控此块存储空间,当然对于final则另当别论了class Value {staticintc = 0;staticvoid inc() {c++; }}publicclass Count2 {publicstaticvoid prt(String s) { System.out.print(s); }publicstaticvoid 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由此可以证明它们共享一块存储区。static变量有点类似于C中的全局变量的概念。值得探讨的是静态变量的初始化问题。如果你需要通过计算来初始化你的static变量,你可以声明一个static块,Static 块仅在该类被加载时执行一次。下面的例子显示的类有一个static方法,一些static变量,以及一个static 初始化块:class Value3 {staticintc = 0; Value3() {c = 15; } Value3(int i) {c = i; }staticvoid inc() {c++; }}publicclass Count {publicstaticvoid prt(String s) { System.out.println(s); } Value3 v = new Value3(10);static Value3 v1, v2;static {//此即为static块prt(“v1.c=“ + v1.c + “ v2.c=“ + v2.c);v1 = new Value3(27);prt(“v1.c=“ + v1.c + “ v2.c=“ + v2.c);v2 = new Value3(15);prt(“v1.c=“ + v1.c + “ v2.c=“ + v2.c); }publicstaticvoid main(String args) { Count ct = new Count();prt(“ct.c=“ + ct.v.c);prt(“v1.c=“ + v1.c + “ v2.c=“ + v2.c);v1.inc();prt(“v1.c=“ + v1.c + “ v2.c=“ + v2.c);prt(“ct.c=“ + ct.v.c); }}结果为:v1.c=0 v2.c=0v1.c=27 v2.c=27v1.c=15 v2.c=15ct.c=10v1.c=10 v2.c=10v1.c=11 v2.c=11ct.c=11 这个程序展示了静态初始化的各种特性。如果你初次接触Java,结果可能令你吃惊。可能会对static后加大括号感到困惑。首先要告诉你的是,static定义的变量会优先于任何其它非static变量,不论其出现的顺序如何。正如在程序中所表现的,虽然v出现在v1和v2的前面,但是结果却是v1和v2的初始化在v的前面。在static{后面跟着一段代码,这是用来进行显式的静态变量初始化,这段代码只会初始化一次,且在类被第一次装载时。如果你能读懂并理解这段代码,会帮助你对static关键字的认识。在涉及到继承的时候,会先初始化父类的static变量,然后是子类的,依次类推。3.静态类通常一个普通类不允许声明为静态的,只有一个内部类才可以。这时这个声明为静态的内部类可以直接作为一个普通类来使用,而不需实例一个外部类。publicclass StaticCls {publicstaticvoid main(String args) {OuterCls.InnerCls oi = newOuterCls.InnerCls(); }}classOuterCls {publicstaticclass InnerCls { InnerCls() { System.out.println(“InnerCls“); } }} 结果为:InnerCls

如何用static

static三种用法:

  1. 用于变量前,表示每次重新使用该变量所在方法、类或自定义类时,变量的值为程序这次运行最后一次为变量赋值时的值

  2. 在方法(函数)前用 static修饰,表示此方法为所在类或所在自定义类所有,而不是这个类的实例所有

  3. 用于class 前,说明此类型无法新建实例,简单点说这个类型的方法全是静态方法,这个类里的非静态方法是不能使用的

Singleton模式的实现基于两个要点:

  • 不直接用类的构造函数,而另外提供一个Public的静态方法来构造类的实例。通常这个方法取名为Instance。Public保证了它的全局可见性,静态方法保证了不会创建出多余的实例。

  • 将类的构造函数设为Private,即将构造函数“隐藏“起来,任何企图使用构造函数创建实例的方法都将报错。这样就阻止了开发人员绕过上面的Instance方法直接创建类的实例。

希望对你有帮助

static方法(请问java语言中的static的用法)

本文编辑:admin

更多文章:


windows7激活码(Windows7激活码有吗求一个可以用的谢谢)

windows7激活码(Windows7激活码有吗求一个可以用的谢谢)

本文目录Windows7激活码有吗求一个可以用的谢谢windows7激活码,能用的,谢谢WIN7激活码Windows7激活码有吗求一个可以用的谢谢win7激活码 win7激活密钥大全win7家庭高级版激活密钥如下:PPBK3-M92CH-M

2025年3月7日 15:10

mobilephone什么意思中文(cell phone 和mobile phone 意思上有什么区别)

mobilephone什么意思中文(cell phone 和mobile phone 意思上有什么区别)

本文目录cell phone 和mobile phone 意思上有什么区别Mobile phone 是什么意思mobile phone,telephone,,cell phone又什么不同mobile phone是什么意思cell phon

2025年3月24日 21:40

chart控件(Chart控件,怎么把Y轴设置成百分比)

chart控件(Chart控件,怎么把Y轴设置成百分比)

本文目录Chart控件,怎么把Y轴设置成百分比WPF的chart控件使用求大神救救我怎么用Chart控件画折线图wpf有没有好用的chart控件wpf chart控件怎么使用c#的chart控件的使用方法delphi chart控件怎么用C

2025年3月14日 19:40

个人博客选择wordpress还是typecho好呢?如何让emlog支持代码高亮

个人博客选择wordpress还是typecho好呢?如何让emlog支持代码高亮

本文目录个人博客选择wordpress还是typecho好呢如何让emlog支持代码高亮emlog 建站怎么设置详情页Emlog下载下来以后 该如何上传文件至Web服务器呢怎么给网站安装emlog程序emlog 删除什么可以重新安装个人博客

2025年2月9日 17:40

学生类教师类java(什么样的人适合学Java)

学生类教师类java(什么样的人适合学Java)

本文目录什么样的人适合学Java本人是软件工程大一的学生,目前想在暑假学习一门语言,java和python应该选哪个什么样的人适合学Java作为一名IT从业者,同时也是一名教育工作者,我来回答一下这个问题。首先,当前Java语言主要的应用领

2025年3月9日 10:40

grammar focus(初二英语第七单元grammar focus的翻译)

grammar focus(初二英语第七单元grammar focus的翻译)

本文目录初二英语第七单元grammar focus的翻译grammarfocus汉语意思初二英语第七单元grammar focus的翻译初二英语第七单元grammar focus的翻译:1、what’s your favorite subj

2025年3月28日 15:10

greap复数?greap是什么意思

greap复数?greap是什么意思

本文目录greap复数greap是什么意思greap复数我想应该是复数的形式,the rest of...指的是剩余部分的所有内容 eg:You read and the rest of the students listen to yo

2025年2月18日 16:30

免费搭建网页(怎么样免费建立网站)

免费搭建网页(怎么样免费建立网站)

本文目录怎么样免费建立网站如何免费创建网页怎么免费创建和使用网站建立一个免费网站的步骤如何用pageadmin cms免费搭建网站如何免费创建一个网页怎么样免费建立网站1. 要建立个人网站,首先必须要了解一下目前网页制作的基本语言HTML,

2025年2月26日 20:20

ignore的变形(ignore,neglect和overlook的区别)

ignore的变形(ignore,neglect和overlook的区别)

本文目录ignore,neglect和overlook的区别ignore的变形ignor的用法ignore,neglect和overlook的区别ignore, neglect, overlook 都有“忽略“的意思。 ignore v.忽

2025年2月27日 10:50

layout使用教程(SketchUp中的LayOut和Style Builder究竟有什么用)

layout使用教程(SketchUp中的LayOut和Style Builder究竟有什么用)

本文目录SketchUp中的LayOut和Style Builder究竟有什么用pads layout怎么绘制螺旋线草图大师怎么才能导入多个视口到layout学机械的一个菜鸟要开始学习电子layout使用altium designer,需要

2025年3月1日 11:30

suspecting(suspecting与suspicious的区别)

suspecting(suspecting与suspicious的区别)

本文目录suspecting与suspicious的区别这个suspecting在句中作什么成分句子不缺成分啊suspecting与suspicious的区别suspecting与suspicious词性不同,一个为动词,一个是形容词。su

2025年2月18日 13:50

graduate读音(graduate的意思,读音.)

graduate读音(graduate的意思,读音.)

本文目录graduate的意思,读音.关于graduate读音graduate 的用法,要有例句毕业的英文读音graduate怎么读graduate的意思,读音.graduate 关于graduate读音graduate 英 第三人称单数:

2025年3月1日 20:10

closer歌词烟鬼组合(closer女版是谁唱的)

closer歌词烟鬼组合(closer女版是谁唱的)

本文目录closer女版是谁唱的那首歌里有这句歌词 superhero如何评价thechainsmokers与Halsey的新歌曲《closer》closer是什么意思啊烟鬼的closer中文音译closer女版是谁唱的closer女版是海

2025年3月26日 01:10

headache英文(头痛,胃痛,牙痛用英文怎么说)

headache英文(头痛,胃痛,牙痛用英文怎么说)

本文目录头痛,胃痛,牙痛用英文怎么说头痛用英语怎么说头痛,胃痛,牙痛用英文怎么说headache 牙痛希望能帮到你。Good luck!头痛用英语怎么说头痛的英文:headache读音:英 n. 头痛词汇搭配:1、cause a h

2025年4月5日 07:10

网页制作教程视频自学(怎么自学DW8网页制作哪里的的教学视频好用需要看PPT版的DW教程吗)

网页制作教程视频自学(怎么自学DW8网页制作哪里的的教学视频好用需要看PPT版的DW教程吗)

本文目录怎么自学DW8网页制作哪里的的教学视频好用需要看PPT版的DW教程吗零基础怎么学习网页制作本人想学习网页制作,但是不知道从何下手.怎么学制作网页怎么自学DW8网页制作哪里的的教学视频好用需要看PPT版的DW教程吗做网站,归根到底关键

2025年3月2日 23:10

ssh框架是什么(SSH2框架的含义每个技术的作用是什么)

ssh框架是什么(SSH2框架的含义每个技术的作用是什么)

本文目录SSH2框架的含义每个技术的作用是什么老师要求我的计算机毕业设计要用SSH框架做我学得不是很好,什么是SSH我的题目是拍卖网站的设计ssh框架是什么东西,有什么用,请通俗点说,谢谢(^o^)ssh框架的区别是什么 他们各自负责的功能

2025年2月11日 02:20

spouses是什么意思(spouse什么意思)

spouses是什么意思(spouse什么意思)

本文目录spouse什么意思spouse是什么意思spouse什么意思你好:配偶双语对照spousen.配偶,夫或妻; vt.和…结婚; 第三人称单数:spouses过去分词:spoused复数:spouses现在进行时:spousing过

2025年2月19日 13:40

浮点型和双精度型区别(什么叫单精度浮点型什么叫双精度浮点型)

浮点型和双精度型区别(什么叫单精度浮点型什么叫双精度浮点型)

本文目录什么叫单精度浮点型什么叫双精度浮点型C语言中单精度浮点数和双精度分别如何表示有什么差别c语言中的float和double类型的区别是什么单精度和双精度是什么基本数据类型中,浮点型的单精度型和双精度型有什么区别,能不能帮忙举例说明一下

2025年4月10日 13:50

pushstate是什么意思(html5history.pushstate有什么用)

pushstate是什么意思(html5history.pushstate有什么用)

本文目录html5history.pushstate有什么用html5 history.pushstate有什么用html5history.pushstate有什么用HTML5为history对象添加了两个新方法,history.pushS

2025年3月19日 05:40

current password(开机出现entercurrentpassword怎么弄)

current password(开机出现entercurrentpassword怎么弄)

本文目录开机出现entercurrentpassword怎么弄电脑显示“Enter CURRENT Password:”是什么意思current password是什么意思电脑开机显示enter current password 忘记密码了

2025年2月12日 03:00

近期文章

handle(handle怎么读)
2025-04-12 23:10:07
本站热文

harbor,port,pier的区别?谁能解释“harbour“(港口)与“pier“(码头)的区别
2025-02-22 17:40:03 浏览:18
ibatis foreach(ibatis 批量update操作)
2025-02-10 23:40:06 浏览:7
endless rain(endless rain表达什么情感)
2025-02-14 06:00:02 浏览:7
标签列表

热门搜索