`

【转】java静态变量和实例变量的区别

    博客分类:
  • java
 
阅读更多

转自:http://www.2cto.com/kf/201009/74383.html

在语法定义上的区别:静态变量前要加static 关 键字,而实例变量前则不加。
        在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变 量才会被分配空间,才能使用这个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对 象,静态变量就会被分配空间,静态变量就可以被使用了。总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。
        例如,对于下面的程序,无论创建多少个 实例对象,永远都只分配了一个 staticVar 变量,并且每创建一个实例对象,这个staticVar 就会加1 ;但是,每创建一个实例对象,就会分配一个instanceVar ,即可能分配多个instanceVar ,并且每个instanceVar 的值都只自加了1

public class VariantTest
{
         public static int staticVar = 0;
         public int instanceVar = 0;
         public VariantTest()
         {
                  staticVar ;
                  instanceVar ;
                  System.out.println("staticVar = " staticVar ", instanceVar = " instanceVar);
         }
}
 
文二:
java类的成员变量有俩种:
一种是被static关键字修饰的变量,叫类变量或者静态变量
另一种没有static修饰,为实例变量

类的静态变量在内存中只有一个,java虚拟机 在加载类的过程中为静态变量分配内存,静态变量位于方法区,被类的所有实例共享。静态变量可以直接通过类名 进行访问,其生命周期取决于类的生命周期。

而实例变量取决于类的实例。每创建一个实例,java虚拟机就会为实例变量分配一次内存,实例变量位于堆区中,其生命周期取决于实例的生命周期。
public class Temp {
int t; //实例变量
public static void main(String args[]){
int t=1; //局部变量
System.out.println(t ); //打印局部变量
Temp a= new Temp(); //创建实例
System.out.println(a.t ); //通过实例访问实例变量
}
}
结果为:
1
0 (成员变量具有缺省值 而局部变量则没有

把代码改为
public class Temp {
static int t; //类变量
public static void main(String args[]){
System.out.println(t ); //打印类变量
int t=1; //局部变量
System.out.println(t ); //打印局部变量
Temp a= new Temp(); //创建实例
System.out.println(a.t ); //通过实例访问实例变量
}
}
结果则为
0
1
0
分享到:
评论

相关推荐

    java中静态变量和实例变量的区别详细介绍

    在Java编程语言中,静态变量和实例变量是两种不同类型的成员变量,它们在内存中的分配、生命周期、以及使用方式上有着显著的区别。本篇文章将详细探讨这两种变量的差异。 1. 内存分配: - 静态变量:静态变量是...

    Java中的静态变量静态方法静态块与静态类.docx

    Java 中的静态变量、静态方法、静态块和静态类 Java 中的静态变量、静态方法、静态块和静态类是 Java 编程语言的四个重要概念,它们之间存在着紧密的关系。下面将对这四个概念进行详细的介绍。 一、静态变量...

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

    总结起来,Java 中的静态变量与非静态变量之间的主要区别在于它们的生命周期、存储位置以及访问方式。静态变量是类级别的,与对象无关,而实例变量是对象级别的,每个对象都有自己的一份副本。理解这两种变量类型...

    Java成员变量局部变量静态变量成员方法全局方法等概念的区

    以下是关于Java成员变量、局部变量、静态变量以及成员方法和全局方法的基本概念和区别的详细阐述。 1. 成员变量(Member Variables): 成员变量是类的一部分,它们定义了对象的状态。它们可以是实例变量(非静态...

    static静态变量使用@Value注入方式.md

    在Java中,可以通过类名直接访问静态变量而无需创建类的实例。例如: ```java public class MyClass { public static String myVar = "Hello World"; } // 访问静态变量 System.out.println(MyClass.myVar); ``` ...

    java 常量 变量 详细实例

    Java中的变量有三种类型:局部变量、成员变量(包括实例变量和静态变量)和全局变量。 1. **局部变量**:在方法、构造器或块内部定义的变量,仅在该范围有效。 2. **实例变量**:属于类的每个对象实例,每个实例都...

    java变量命名心得

    下面我们将通过一个实例来展示局部变量和实例变量的区别,并总结 java 变量命名的几个典型问题。 首先,让我们来看一下局部变量和实例变量的区别。局部变量是指在方法内部定义的变量,它的作用域仅限于该方法内部。...

    java静态变量与方法.doc

    Java中的静态变量和静态方法是面向对象编程中的关键概念,它们与实例变量和实例方法有着显著的区别。在Java中,`static`关键字用于声明类级别的成员,而不是对象级别的成员。 **一、静态成员变量与实例成员变量的...

    springboot 使用yml配置文件给静态变量赋值教程

    Spring Boot通过`@Component`注解和`@Value`注解的组合,使得静态工具类能够根据配置文件动态地获取和设置静态变量的值,从而实现了环境间的配置隔离。这种方法在处理数据库连接和其他环境敏感的参数时非常实用。

    静态变量的导入以及集合的运用

    在Java编程语言中,静态变量和集合是两个非常重要的概念。本文将详细介绍如何导入静态变量,并深入探讨集合类的使用方法及其实例。 #### 一、静态变量的导入 静态变量(也称为类变量)是在类的生命周期内共享的...

    java-静态变量方法块

    在Java编程语言中,静态变量、静态方法、静态代码块以及非静态变量和非静态方法是核心概念,它们对于理解和编写Java程序至关重要。下面将详细解释这些概念,并通过实例程序来阐述它们的使用和内存管理。 首先,静态...

    计算机后端-Java-Java核心基础-第15章 面向对象07 06. 静态变量与实例变量的对比.avi

    计算机后端-Java-Java核心基础-第15章 面向对象07 06. 静态变量与实例变量的对比.avi

    类变量和实例变量.txt

    在面向对象编程中,尤其是在Java这样的语言里,类变量(也称为静态变量)和实例变量是两个重要的概念。它们都存储了对象的状态信息,但有着本质的区别。 - **实例变量**:实例变量是在每个对象创建时为其分配内存...

    Java 成员变量和局部变量

    这意味着所有类的实例共享同一份静态变量。非静态成员变量则是每个实例独有的。 4. **this关键字**: 在方法中,使用`this`关键字可以引用当前对象的成员变量,以区分方法参数或其他局部变量。 **局部变量** 局部...

    JAVA静态方法和非静态方法的区别和实例.doc

    JAVA静态方法和非静态方法的区别和实例 静态方法和非静态方法是 Java 编程语言中两个基本概念,它们在编程实践中扮演着重要角色。了解它们的区别和使用场景对于编写高效、可维护的代码至关重要。 什么是静态方法?...

    Java中static静态变量.pdf

    在Java编程语言中,`static`关键字是用来声明静态变量和静态方法的,这些成员属于类本身,而不属于类的任何实例。静态变量,也被称为类变量,是存储在内存的类区域,而实例变量则是存储在堆内存中,每个对象实例都有...

    java-variables-basic:Java中静态和实例变量的例子

    java变量Java中静态和实例变量的例子在这个项目中,您可以看到静态变量和实例变量是如何工作和实现的。 静态变量:属于类,所以将值保存在类中而不是对象中。 实例变量:属于对象,所以根据你设置的值在每个对象中会...

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

    本文将详细介绍静态变量和非静态变量在获取配置文件中变量值的区别,并通过实例代码展示如何正确地使用静态变量和非静态变量。 首先,让我们看一下非静态变量的使用。在 Controller 文件中,我们可以使用 `@Value` ...

    JAVAStatic静态变量.doc

    Java中的`static`关键字是用来声明静态变量或静态方法的,它是面向对象编程中非常...理解静态变量和方法的使用是成为一名熟练的Java开发者的关键。在编写代码时,明智地使用`static`可以帮助提高程序的效率和可维护性。

Global site tag (gtag.js) - Google Analytics