首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java中的类是"静态"还是"非静态"?

在Java中,类可以是静态的(static)或非静态的(non-static)。

静态类是指在类加载时就会被初始化,并且只会被初始化一次。静态类的特点是可以直接通过类名访问其静态成员,而无需创建类的实例。静态类的成员包括静态变量和静态方法。静态变量在内存中只有一份拷贝,被所有实例共享;静态方法可以直接调用,无需通过实例对象。

非静态类是指需要通过创建类的实例对象来访问其成员。非静态类的成员包括实例变量和实例方法。实例变量在每个实例对象中都有一份拷贝,彼此之间互不干扰;实例方法需要通过实例对象调用。

对于类的选择,一般情况下,如果一个类的成员不需要与具体的实例对象相关,可以考虑将其定义为静态类。而如果一个类的成员需要与具体的实例对象相关,就应该将其定义为非静态类。

对于Java中的类来说,既可以是静态的,也可以是非静态的,这取决于类的设计和用途。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

静态静态方法

C#可以包含两种方法:静态方法和静态方法。   使用了static 修饰符方法为静态方法,反之荝是非静态方法。   ...静态方琺①種 特殊成園方琺,它不属纡某一个具体实唎,而是属于本裑。葰以对静态方法不需要首先创建一个哋实例,而是采用名.静态方法格式 。   ...1.static方法一个成園方法,属于整个,即不用創建任何对象也可以直接调用!   static内部只能出现static变量和其他static方法!...洏且static方法还不能使用this....等关键字..因为它湜属于整个!   2.静态方法效率上要比实例化高,静态方法缺点不洎动进垳销毁,洏实例化则可以做销毁。   ...,所以悱靜态成员可以直接访问静态成员.

1.4K20

Java静态方法不能调用静态方法原因

如图,Java静态代码和实例对象互相调用规则,我们接下来就讲讲为什么在Java静态方法不可以调用静态代码呢。...静态方法属于,即静态方法随着加载而加载,在加载时,程序就会为静态方法分配内存,而非静态方法属于对象,对象是在加载之后创建,也就是说静态方法先于对象存在,当你创建一个对象时,程序为其在堆中分配内存...静态方法不依赖于对象调用,它是通过‘名.静态方法名’这样方式来调用。而对于静态方法,在对象创建时候程序才会为其分配内存,然后通过对象去访问静态方法。...因此在对象未存在时静态方法也不存在,静态方法自然不能调用一个不存在方法。...这和对象创建和静态方法以及静态方法之间关系有关。也就是上面说那些。

5.4K50

JavaJava初始化顺序(静态方法,静态块,静态块,最后有流程图)

实际上要去判断一个初始化顺序,需要分一下情况,一种没有继承关系(不考虑Object),一种有继承关系。 一、无继承关系初始化 先看下边代码。...想要弄明白这个,我就得先了解一下生命周期了。我们通过主方法运行Java程序,而这个主方法创建了i对象并且属于InitializeDemo ,所以在main方法执行时会将我们进行初始化。...在我们第一次进行初始化时候,我们静态块和静态属性会被优先构建。之后才轮得到静态块和静态属性。...二、有父继承初始化 和没有父继承初始化大同小异,我定义了这样一个让InitializeDemo,去继承。为了便于还是懵懂同学理解,我把静态变量t1和t2删掉。...你应该认真的思考一下,这个 输出静态块和静态属性初始化语句到底从何而来?

13310

静态静态主要差别「建议收藏」

大家好,又见面了,我全栈君。...如有雷同,不胜荣幸,若转载,请注明 静态静态主要差别 主要差别在于静态不能实例化,静态编译器可以运行检查确保不是偶然加入实例成员,C#编译器会自己主动把它标记为sealed。...静态不能创建静态方法。即静态方法仅仅能创建静态方法。但在静态可以调用静态方法 静态主要特性: 1:仅包括静态成员。 2:无法实例化。 3:密封。 4:不能包括实例构造函数。...5:静态能够包括静态方法、字段、属性或事件。 6:静态方法和属性不能訪问其包括类型静态字段和事件 7:静态方法仅仅能被重载,而不能被重写,由于静态方法不属于实例成员。...8:C# 不支持静态局部变量(在方法内部定义静态变量)。 静态在使用时必需要实例化。

87010

【小家java静态静态方法、内部类、匿名内部类、静态一些实践

静态内部类有一个很大优点:可以自由使用外部类所有变量和方法,对其外部类有个引用 有了这两个区别,各位看官应该知道什么时候使用什么样了吧 下面静态方法和静态方法区别: 静态方法(Static...静态方法使用效率比静态方法效率高。静态方法共享代码段,静态变量共享数据段。既然“共享”就有并发(Concurrence)问题。...3、使用场景 内部类和静态内部类区别 静态 只能在内部类定义静态 静态内部类不依赖于外部类,即使外部类没有创建对象,静态也可以new对象 静态方法可以是静态方法也可以是非静态方法,静态方法可以在外层通过静态调用...可以实现多重继承 可以避免修改接口而实现同一个***两种同名方法***调用 java设计旨在简单,所以初学者十分好入门并且上手工作,但作为一门火了这么多年语言,肯定还是有些硬骨头,而这些,...我们会发现java设计者在设计内部类时候用心良苦,学会使用内部类,掌握java高级编程一部分,它可以让你更优雅设计你程序结构。

2.3K30

详解java静态方法有哪些_java静态变量

大家好,又见面了,我你们朋友全栈君。...定义: 在中使用static修饰静态方法会随着定义而被分配和装载入内存;而非静态方法属于对象具体实例,只有在对象创建时在对象内存才有这个方法代码段。...原因: 因为静态方法和静态数据成员会随着定义而被分配和装载入内存,而非静态方法和静态数据成员只有在对象创建时在对象内存才有这个方法代码段。...return t; } } } 总结: (1)static修饰静态方法会随着定义而被分配和装载入内存,编译器只为整个创建了一个静态变量副本...(2)静态不能引用静态这一特性,由于静态会随着定义而被分配和装载入内存这一关键点决定;如果静态引用了静态,根本无法从内存中找到静态代码段,势必会出错,这种做法Java虚拟机决不允许

1.4K10

MSIL 静态在 IL 定义上和静态差别

本文来聊聊 MSIL 基础知识,给一个 C# 标记了 static 之后和标记 static 之前,生成这个 IL 代码有什么不同 如以下代码一个默认控制台程序 class Program...beforefieldinit KakawbaijairKacheberelere.Program extends [System.Runtime]System.Object 而如果给 Program 加上静态...,如以下代码,生成 IL 代码和之前不相同 static class Program { static void Main(string[] args)...[名] extends [继承] 可以看到上下两个 IL 代码不同在于,如果标记了 static 那 IL 将加上 abstract sealed 修饰。...和 C# 代码含义相同,通过 abstract 表示此类型不能被实例化,通过 sealed 表示此类型不能被继承。因此这就构成了静态特点,不能被创建实例,也不能被继承

58230

静态静态方法、内部类、匿名内部类、静态一些实践

如题,在实际开发,关于静态静态方法、内部类、匿名内部类、静态一般都会遇到,特别是你在研究开源框架源码时候很是常见,它是内聚性体现。本文针对这些“概念”实战,做些总结。...静态方法使用效率比静态方法效率高。静态方法共享代码段,静态变量共享数据段。既然“共享”就有并发(Concurrence)问题。...内部类可以很好实现隐藏(一般内部类,不允许有 private 与protected权限,但内部类可以) 内部类拥有外围所有元素访问权限 可以实现多重继承 可以避免修改接口而实现同一个...***两种同名方法***调用 java设计旨在简单,所以初学者十分好入门并且上手工作,但作为一门火了这么多年语言,肯定还是有些硬骨头,而这些,算是一些脆骨了。...我们会发现java设计者在设计内部类时候用心良苦,学会使用内部类,掌握java高级编程一部分,它可以让你更优雅设计你程序结构。

87150

静态方法只能通过名进行调用_java静态方法可以调用静态方法吗

静态方法调用三种方式: 1、new xx().静态(); //使用对象调用,不推荐 2、xx.静态(); //名调用,正规调用方法,推荐 3、静态(); //本类静态方法在本类调用,直接调用...注意事项: 在同包不同类调用时候,可以直接 名.方法() 调用,无需创建对象。...在不同包调用时候,需要引包再调用。 欢迎各位在评论区留言探讨 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。...如发现本站有涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

1.1K10

Java静态初始化和静态初始化

Java初始化 Java与C++一个不同之处在于,Java不仅有构造函数,还有一个“初始化块”(Initialization Block)概念。...Java初始化块在创建Java对象时隐式执行,并且在构造函数之前执行。 2....静态初始化 // 定义 static { ... } 静态初始化块执行优先级高于静态初始化块,在对象装载到JVM时执行一次,仅能初始化成员变量,即static修饰数据成员。 3....静态初始化 // 定义 { ... } 静态初始化块在每个对象生成时都会被执行一次,它可以初始化实例变量。静态初始化块在构造函数之前执行。 4....静态初始化块相关,系统将在加载时执行静态初始化块,而不是在创建对象时才执行,因此静态初始化块总是比静态初始化块先执行。用途:例如在JNI调用时,需要加载动态链接库,就可以在静态代码块中加载。

2.7K20

Java学习笔记之静态方法,静态方法,静态变量,静态变量四者之间关系

Java学习笔记之静态方法,静态方法,静态变量,静态变量四者之间关系 首先明白这几个名词意思: 静态方法:即方法,在之中,以static关键字申明方法。...静态变量:即变量,在之中,方法之外,以static关键字申明变量,它属于整个所有,而不是某个对象所有,即被所有对象所共享。 使用方法:直接使用名.变量名来进行访问。...这四者之间关系 静态方法可以直接调用同类静态成员,但不能直接调用静态成员。...静态方法调用静态变量,可以通过创建对象,然后通过对象来访问静态变量 静态方法可以通过名.静态方法名来调用,但不能直接调用静态方法,需要通过对象来访问静态方法 静态方法可以通过名....静态方法名来调用,但不能直接调用静态方法,需要通过对象来访问静态方法 以上我在学习Java过程觉得容易被弄晕地方,所以总结了一下,如果有什么不对地方,欢迎指出。

66420

Java静态关键字和静态关键字区别

静态关键字和静态关键字在Java语言中是非常重要且常用两个关键字,它们分别被用于描述属性和方法。它们具有不同特性和作用,对于理解Java语言面向对象编程思想有着很大作用。...下面将详细介绍静态关键字和静态关键字区别。 1、静态关键字 静态关键字Java语言中经常使用一个关键字,它可以用来修饰、属性和方法。使用静态关键字修饰属性和方法被称为静态属性和静态方法。...2、静态关键字 静态关键字Java语言中另一个常用关键字,它可以用来修饰属性和方法。使用静态关键字修饰属性和方法被称为静态属性和静态方法。...3、静态静态区别 从上述分析可以看出,静态静态Java语言中具有很大区别。...4、静态静态使用场景 由于静态静态具有不同特点和区别,因此它们在编程也有不同使用场景。

10110

(转) Java 静态代码块和静态代码块

参考:http://uule.iteye.com/blog/1558891 Java静态代码块在虚拟机加载时候,就执行,而且只执行一次。...如果static代码块有多个,JVM将按照它们在中出现先后顺序依次执行它们,每个代码块只会被执行一次。 静态代码块new一个实例时候执行,而且每次new对象实例都会执行。...代码执行顺序 主调类静态代码块 对象父静态代码块 对象静态代码块 对象父静态代码块 对象父构造函数 对象静态代码块 对象构造函数 示例代码 public class StaticBlockTest1...System.out.println("Parent constructor method--> not static block"); } } //父静态代码块...block //父静态代码块 Parent constructor method //父构造函数 Parent constructor method--> not

1.1K10

java_自由块(静态块和静态块)

java自由块分为两种: 静态块和静态静态块: 1 public class Test { 2 static int x = 10; 3 //静态块:静态执行时机在class...文件装载时候;静态块只会执行一次 4 //多个静态时候,按出现顺序执行 5 static{ 6 x+=5; 7 } 8 } 静态块: 1 public class...Test { 2 //静态块:每次初始化一个对象,都会导致一次静态执行;在构造函数执行之前执行 3 //继承关系:父静态块->父构造函数->自己自由块->自己构造函数...:静态执行时机在class文件装载时候;静态块只会执行一次 5 //多个静态时候,按出现顺序执行 6 static{ 7 x+=5; 8 }...:每次初始化一个对象,都会导致一次静态执行;在构造函数执行之前执行 21 //继承关系:父静态块->父构造函数->自己自由块->自己构造函数 22 { 23

1.1K20

Java 内部静态_静态内部类特点

大家好,又见面了,我你们朋友全栈君。 Java内部类在Jdk1.1版本之后增加,内部类Java语言中一个比较重要概念,如果能把内部类运用好,那么会明显增强Java程序灵活性。...要想清楚static内部类和static内部类区别,首先要了解内部类概念及特点,然后再进行一个全面的对比。 什么内部类呢?...简单说就是在一个内部又定义了一个,这个就称之为内部类(Inner Class)。...看一个例子: static内部类内部类中一个比较特殊情况,Java文档这样描述static内部类:一旦内部类使用static修饰,那么此时这个内部类就升级为顶级。...与static内部类不同,内部接口自动具备静态属性,也就是说,普通可以直接实现内部接口,看一个例子: 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。

60020

静态静态方法、静态变量区别

引言 一直疑惑静态静态方法、静态变量内存驻用情况。今天就写了个Demo来深入八一八他们区别和注意点。...为了演示方便,方法名和变量名采取中文命名 先上结论 静态变量 只在初始化时加载一次 静态方法和静态方法语法糖 实时加载里面的内容 只读属性 实时加载里面的内容 附有初始值属性语法糖 只在初始化时加载一次...(应该是set里面处理,而不是get里面处理静态有参方法 实时加载里面的内容 无图我还说什么?...请看代码 代码 先看测试Demo 1.静态 静态方法 /// /// 静态 /// public class TestCommonService...ConfigHelper.TryGetOtherProject(ProjectsEnum.SurpriseGamePollApi, "ConfigId", "")}"; } } 2.静态静态方法

1.5K10

子类A继承父B, A a = new A(); 则父B构造函数、父B静态代码块、父B静态代码块、子类A构造函数、子类A静态代码块、子类A静态代码块 执行先后顺序

(1)子类A继承父B, A a = new A(); 则: 父静态代码块->子类A静态代码块->父静态代码块->父B构造函数->子类A静态代码块->子类A构造函数 (2)若子类构造函数显式调用了父某构造函数...,这里通过super(“B”)显示调用了父带参构造。...执行父带参构造前要先对父对象进行初始化,对父c成员进行初始化,调用了C无参构造,所以调用顺序为: 先调用C无参构造 再调用A带参构造 最后调用调用子类构造 (3...)在JVM调用mian方法之前先用进行静态内容初始化。...顺序为:父静态变量, 父静态代码块 ,子类静态变量,子类静态代码块。

2.1K30
领券