`
xiaoxubuaa
  • 浏览: 6583 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

静态与非静态

 
阅读更多

    在java中,静态的类、方法以及变量都是以static作为关键字的,非静态的类、方法和变量中不会出现static关键字。

    当我们访问静态的类时,不需要创建类的实例(实际上也无法创建),可以以类名.方法名来调用类中的方法。

 

    静态变量:如果出现在非静态的类中,那么所有的实例共享一个变量,就是所有的实例中这个变量的值是一样的。

 

    静态方法:在访问静态方法时,我们不需要创建类的实例。而是直接以类名.方法名来访问。静态方法是一种“不依靠实例变量也就不需要对象的行为”。

 

    静态方法不能调用非静态的变量,因为静态方法是在无关特定类的实例情况下执行的,是通过类的名称来调用,所以静态的方法无法引用到该类的任何实例变量。在此情况下,静态方法也不知道可以使用那个实例变量。简单地说就是,所有实例共享一个静态方法,但是每个实例的非静态实例变量都具有不同的状态,所以无法判断应当取用那个变量的状态。

 

    如public class Dog{

       private int size;

       public void setSize(int size)

       {

         this.size=size;

        }

       public int  getSize(int size)

       {

         return size;

        }

       public static void main(String[] args)

        {

           System.out.println("dog'size is"+size);

         }

    }

    在上面的例子中,我们静态的main方法中引用了非静态的变量size,你可以试一试,在编译的时候就会提示出错。

    同理,静态方法也不能调用非静态的方法。

 

    初始化的时间:

    静态变量会在类的任何对象创建之前初始化,也就是在执行类的构造函数之前初始化。

    静态方法会在类的任何静态方法执行之前初始化。

    非静态方法或变量只有在用到的时候才会初始化。

 

分享到:
评论

相关推荐

    java中静态与非静态的变量定义与使用

    让我们深入探讨一下静态与非静态变量的定义与使用。 首先,静态变量是属于类级别的,这意味着它们是共享的,无论创建了多少个类的实例,都只有一个静态变量的副本。当类加载到内存中时,静态变量就会被初始化,并且...

    java中静态与非静态的区别

    ### Java中静态与非静态的区别 #### 一、静态类与非静态类 在Java中,**静态类**与**非静态类**有着明显的区别: 1. **成员组成**: - **静态类**只能包含**静态成员**和**静态方法**。这意味着你无法在静态类中...

    C#中静态与非静态方法比较

    ### C#中静态与非静态方法的深入解析 #### 引言 在C#编程语言中,静态方法和非静态方法是两种常见的方法类型。它们各自具有独特的特性和用途,在不同的场景下发挥着不可替代的作用。本文将从多个角度详细探讨这两...

    (js)静态与非静态方法

    在JavaScript中,静态方法与非静态方法是面向对象编程中的两个基本概念,它们在类的定义和实例化过程中扮演着重要角色。理解这两者之间的区别对于编写高效、可维护的代码至关重要。 ### 静态方法 #### 定义 静态...

    静态与非静态.cs

    静态与非静态.cs

    .NET的静态与非静态的区别分析

    总结来说,静态成员(包括静态类、静态构造函数、静态方法和静态字段)主要关注类级别的行为和数据,它们不依赖于对象实例,而非静态成员则与对象实例紧密关联,代表了对象的状态和行为。理解这些区别对于编写高效、...

    静态变量和非静态变量的区别.xmind

    静态变量和非静态变量的区别

    C#静态方法与非静态方法的比较

    ### C#静态方法与非静态方法的比较 在C#编程语言中,静态方法与非静态(实例)方法是两种非常重要的方法定义方式。这两种方法各有特点,在不同的场景下使用可以带来不同的效果。 #### 一、概念理解 **1. 静态方法...

    全面解析C#中静态与非静态

     在C#中,静态和非静态的特征对于我们来说是再熟悉不过了,但是很少看到有一篇文章去好好地总结静态和非静态它们之间的不同,为了帮助大家更好地去理解静态和非静态特征, 所以将在这篇文章中帮大家全面总结下它们...

    【独家】【笔面试知识要点】20.RW与IO类层次结构静态与非静态1

    4. 静态变量与非静态变量的区别: 静态变量是属于类的,所有类的实例共享同一份静态变量的值。它们在内存中只有一份拷贝,可以通过类名直接访问。而非静态变量(实例变量)是属于类的每个实例的,每个对象都有自己...

    .NET中的静态与非静态的区别分析

    .NET框架中的静态与非静态是面向对象编程中的关键概念,它们在类的设计和使用中扮演着不同的角色。静态成员和非静态成员之间的区别主要体现在以下几个方面: 1. **静态类与普通类的区别**: - **实例化能力**:...

    静态方法同步 与 非静态方法同步

    本篇文章将深入探讨“静态方法同步”与“非静态方法同步”的差异、应用场景以及它们如何影响程序的并发性能。 首先,我们来了解什么是同步。在Java中,同步是通过`synchronized`关键字实现的,它用于确保同一时间...

    JavaScript面向对象之静态与非静态类

    在JavaScript中,我们可以通过构造函数和原型来创建类,而类的成员可以分为静态成员和非静态成员。 静态类和非静态类的概念主要来源于静态类型的语言,如Java或C#。在JavaScript中,我们没有严格意义上的静态类,但...

    PHP中静态方法(static)与非静态方法的使用及区别.docx

    非静态方法则需要通过类的实例来调用,它们可以直接访问类的非静态属性,因为这些属性与特定的对象实例相关联。静态方法无法访问非静态属性或方法,因为它们在没有实例的情况下被调用,无法访问与特定对象相关的信息...

    C++非静态成员函数完全可以作为线程函数

    那非静态的成员函数呢?一般地方都说的是,不行,做不了。。。为什么不行?都是代码区的代码,static就行,我就不行,歧视我???本例就是自己的研究成果,使用非静态的成员函数作为线程函数,还能修改类的非静态的...

    学习java静态数据初始化.doc

    3. **静态与非静态初始化的区别**: - 静态初始化发生在类被加载时,而非静态初始化则发生在每个对象被创建时。 - 静态初始化只执行一次,而非静态初始化每次创建新对象时都会执行。 #### 三、示例代码分析 下面...

    java无法从静态上下文中引用非静态一些错误

    java初学者在编写类,在调用方法,在静态方法与动态方法使用会出现的一些错误。 学习后 能初步了解自己的错误的原因 以及遇到这种错误的改正方法 避免下次踩坑

    java 静态非静态 字段方法 子类父类构造_初始化顺序!

    java 静态_非静态 字段_方法_代码块 子类父类构造_初始化顺序! 三个class 让你清清楚楚 第一个class java代码如下: package initialOrder; class Parent { // 静态变量 public static String p_StaticField...

    静态变量与非静态变量获取配置文件application中变量值的区别.docx

    静态变量与非静态变量获取配置文件application中变量值的区别 在 SpringBoot 应用程序中,经常会遇到获取配置文件中的变量值,并将其赋值给变量的情况。在这种情况下,静态变量和非静态变量的使用会出现一些问题。...

Global site tag (gtag.js) - Google Analytics