java类的成员变量有俩种:一种是被static关键字修饰的变量,叫类变量或者静态变量;另一种是实例变量,通常有new 关键字初始化。
在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。
在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。
例如,对于下面的程序,无论创建多少个实例对象,永远都只分配了一个staticVar变量,并且每创建一个实例对象,这个staticVar 就会加1;但是,每创建一个实例对象,就会分配一个instanceVar,即可能分配多个instanceVar,并且每个instanceVar的值都只自加了1次。
类的静态变量在内存中只有一个,java虚拟机在加载类的过程中为静态变量分配内存,静态变量位于方法区,被类的所有实例共享。静态变量可以直接通过类名进行访问,其生命周期取决于类的生命周期。
而实例变量取决于类的实例。每创建一个实例,java虚拟机就会为实例变量分配一次内存,实例变量位于堆区中,其生命周期取决于实例的生命周期。
结果为:
1
0 (成员变量具有缺省值 而局部变量则没有)
把代码改为:
结果则为
0
1
0
相关推荐
### Java中对象的生命周期 #### 一、对象的生命周期概览 在Java中,对象的生命周期是指从对象被创建到最终被垃圾回收器回收这段时间。理解对象的生命周期对于有效地管理和优化Java应用程序至关重要。 #### 二、...
Java 变量的生命周期与作用域 Java 变量的生命周期是指变量从定义到销毁的整个过程,而作用域是指变量可以被访问的范围。在 Java 中,变量的生命周期和作用域是密切相关的。 变量的生命周期可以分为三个阶段:定义...
因此,它们的生命周期从类加载开始,到类卸载结束。 2. **访问限制**:静态方法可以访问类的静态变量和静态方法,但不能直接访问非静态(实例)变量和方法,因为它们与特定的对象实例相关联。 3. **无this引用**:...
在Java编程语言中,`static`关键字是一个非常重要的修饰符,它有多种用途,涉及到类、对象以及变量和方法的生命周期。本视频教程详细讲解了`static`关键字在Java中的应用及其背后的原理。 首先,我们要理解`static`...
1. **静态属性与实例无关**:静态属性不依赖于类的实例,它们在类级别上共享,因此,它们的生命周期与类的实例无关。 2. **内存管理**:由于静态属性在类加载时就存在,它们会一直驻留在内存中,直到应用程序终止。...
Java对象的生命周期是Java编程中一个关键的概念,它涵盖了从对象创建到销毁的全过程,包括内存分配、使用、以及垃圾回收。在这个过程中,理解JVM(Java虚拟机)的角色至关重要,因为它是对象生命周期的主要管理者。 ...
总结起来,`static`、`this`、`super`和`final`是Java中控制对象生命周期、引用当前对象、访问父类成员以及确保数据不变性的重要工具。理解和熟练使用这些关键字对于编写高质量的Java代码至关重要。在实际编程中,应...
### Activity生命周期详解 #### 概述 Android应用开发中,`Activity`是四大基础组件之一,主要用于构建用户界面。理解`Activity`的生命周期对于管理应用的状态、资源以及响应用户交互至关重要。 #### `Activity`...
- **静态变量**:静态变量也称为类变量,它的生命周期随着类的加载而开始,直到应用程序结束。静态变量存储在方法区(Method Area)的类数据区域,而不是堆内存中。 - **静态方法**:静态方法是不依赖于任何特定对象...
### Servlet 生命周期演示代码详解 #### 一、Servlet 生命周期概述 在深入分析代码之前,我们先来了解一下 Servlet 的生命周期。Servlet 的生命周期主要包括三个阶段:初始化 (`init` 方法)、请求处理 (`service` ...
本文将详细探讨Java线程的生命周期、调度与控制,并提供相关的代码实现。 **一、线程的生命周期** Java线程的生命周期包括五个基本状态: 1. **新建状态**(New):当使用`new Thread()`创建一个新的线程对象时,...
Android Activity 生命周期 Android Activity 生命周期是指 Activity 从创建到销毁的整个过程,该过程中会经历多个状态变化,每个状态变化都会触发相应的回调方法。理解 Activity 生命周期是 Android 开发的基础。 ...
`static`修饰的变量在程序的生命周期内保持其值,直到程序结束。这意味着即使创建了多个对象,它们也无法独立改变静态变量的值,因为它们都指向同一块内存。例如,如果在类`A`中有一个静态变量`cunt`,所有`A`的实例...
- 它们在内存中只存在一个副本,所以在类加载时分配内存,并在类的生命周期内一直存在。 - 静态变量可以通过类名直接访问,如`ClassName.staticVariable`,而无需创建类的实例。 - 静态变量常用于定义常量或全局...
Java线程的生命周期是每个Java多线程开发者必须了解的重要概念。线程在它的整个生命周期中会经历五个基本状态:新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)和死亡(Dead)。接下来,我们将...
### Activity 生命周期总结 在 Android 开发中,理解 Activity 的生命周期是非常重要的,因为它直接影响到应用程序的行为、性能以及用户体验。本文将详细介绍 Activity 生命周期中的各个方法及其触发条件,并通过...
静态变量在类被加载到内存时就会被初始化,并在整个应用程序的生命周期内一直存在。 ##### 2.2 特点 - **共享性**:静态变量被所有对象共享。 - **唯一性**:在内存中只有一个副本。 - **初始化时机**:类初次加载...
本文将深入探讨Java线程的生命周期,包括创建、启动、结束以及线程的协作和调度。 首先,创建Java线程有两种主要方式:直接实例化`Thread`类或者创建一个新的类去继承`Thread`类并重写`run()`方法。例如,你可以...