`

Java中静态对象与非静态对象的区别

    博客分类:
  • Java
阅读更多
静态对象 vs 非静态对象  
是类共同拥有的   是类独立拥有的
内存空间上是固定的 空间在各个附属类里面分配
先分配静态对象的空间 后对非静态对象分配空间,即初始化顺序是先静态再非静态

关于Java的静态对象、静态方法、静态属性
区别:属性VS参数 参数一般是指在方法里临时新建的数值或对象;属性是类声明部分声明的信息。
1、静态对象的数据在程序全局是唯一的,一改都改;如果要处理的东西是整个程序中唯一的,就可以声明成静态对象,类似于C++中的全局变量;另,程序全局范围内,可以有多个某个类的全局变量。但,这并并不是真正的全局变量,static和final共同修饰的成员变量和成员方法,才可简单理解为“全局变量”。
a)对于变量,表示一旦给值就不可修改,且程序全局范围内类名可以访问;
b)对于方法,表示不可覆盖,且程序全局范围内可以通过类名直接访问。
2、非静态对象的数据各是各的,某个类的每个非静态对象之间互不影响,修改其中一个对象或其数据并不影响其余非静态对象。
3、静态对象和非静态对象都是对象,是对象都是要实例化的。不同之处就是二者的数据表现和存储方式不一样。
4、静态变量(包括静态对象和静态的Java中的8中基本变量)在内存中只有一个copy(节省内存),JVM只为静态变量分配一次内存,在加载类的过程中完成静态变量的内存分配,可以类名直接访问(方便),当然也可以通过对象来访问(但这是不推荐的);对于实例变量(即非静态变量),每创建一个实例,就会为实例变量分配一次内存,实例变量可以在内存中有多个copy,互不影响(灵活)。
5、静态方法和静态变量的好处:
a) 引用方便;对于公用类型的变量,直接用 类名.静态方法名 或者 类名.静态变量名 就可    引用并且直接可以修改其属性值,不用getter和setter方法。
b) 保持数据的唯一性;此数据全局都是唯一的,修改他的任何一处地方,在程序所有使用到的地方都将会体现到这些数据的修改。
c) 有效减少多余的浪费。

5、静态方法与静态属性的关系
a)静态方法只能调用静态属性,不能调用非静态属性
b)非静态方法可以随意调用静态属性和非静态属性
分享到:
评论

相关推荐

    java中静态与非静态的区别

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

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

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

    Java中静态方法和非静态方法的区别.docx

    Java 中静态方法和非静态方法的区别 Java 作为一种功能强大、可靠性高、跨平台的编程语言,广泛应用于企业级应用开发、移动应用开发、云计算、大数据处理等领域。了解静态方法和非静态方法的区别是 Java 编程的基础...

    java静态代码块与非静态代码块.doc

    非静态代码块是 Java 中的一种特殊的代码块,它是非静态的,意思是说它是属于对象的,而不是属于类的。非静态代码块是在创建对象时自动执行的,它们是构造方法的一部分。 在上面的代码中,我们可以看到有一个非静态...

    java静态代码块与非静态代码块参照.pdf

    本文将通过实例代码和详细解释,阐述 Java 静态代码块与非静态代码块的区别和应用场景。 静态代码块 静态代码块是指使用静态关键字修饰的代码块,属于类级别的代码块。它的特点是:在类加载时自动执行的,且只执行...

    java 使用静态成员变量计算内存中实例化的对象数目

    静态变量被所有类的实例共享,而每个实例都有其自己的非静态变量副本。因此,静态变量在内存中只有一份,无论创建了多少个对象,它都不会因实例化而复制。 要使用静态成员变量计算内存中的对象数目,我们通常会在类...

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

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

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

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

    Java的静态代码块、非静态代码块、构造函数

    Java编程语言中,静态代码块、非静态代码块和构造函数是面向对象设计的重要组成部分,它们在类的初始化和对象创建过程中起到关键作用。本文将深入探讨这些概念,以及它们在实际开发中的应用。 首先,我们来理解静态...

    Java对象属性数据比较,返回变化数据

    这个方法遍历了给定对象类的所有非静态、非transient属性,获取它们的旧值和新值,然后通过`Objects.equals()`方法比较两者是否相等。如果属性值发生变化,就会将变化记录到结果Map中,其中`DiffResult`是一个自定义...

    java类中静态域、块,非静态域、块,构造函数的初始化顺序

    ### Java 类中静态域、块,非静态域、块,构造函数的初始化顺序 #### 一、概述 在 Java 编程语言中,类的初始化顺序对于理解程序的行为至关重要。特别是当涉及到静态域(静态变量)、非静态域(实例变量)、静态块...

    java静态内部类(嵌套类)

    ### Java静态内部类(嵌套类)详解 #### 一、静态内部类概念与特性 在Java编程语言中,静态内部类(也被称为嵌套类)是一种特殊的内部类形式,它通过`static`关键字来定义。与普通内部类相比,静态内部类具有以下...

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

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

    LINUX C调用JAVA的静态方法和非静态方法(实例方法)小实例

    在Linux环境中,C语言可以通过Java Native Interface (JNI) 来调用Java的静态和非静态方法,实现两者之间的交互。JNI是Java平台标准的一部分,它允许Java代码和其他语言写的代码进行交互,使得C/C++程序员可以编写...

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

    例如,`SynchronizedTest.java`中可能有以下非静态同步方法: ```java public class SynchronizedTest { private int count; public synchronized void incrementCount() { count++; } } ``` 在选择同步方法...

    Java面向对象之静态.doc

    - 非静态变量(实例变量)存储在对象的堆内存中,每个对象都有自己的一份副本。 - 静态变量则不同,它们只有一份,被所有对象共享。 #### 三、何时使用静态方法 1. **定义静态方法**: - 如果一个方法在其执行...

    Java static静态初始快

    6. **使用场景**:常用于设置静态变量的初始值,创建静态对象,或者执行一次性的系统设置操作。 在实际开发中,合理使用静态初始化块可以提高代码的组织性和效率。然而,过度依赖静态初始化块可能会导致代码难以...

    java中面向对象思维导图

    静态代码块和非静态代码块是Java中两种特殊的代码块。静态代码块随着类的加载而执行,只执行一次;非静态代码块随着对象的创建而执行,每创建一个对象就执行一次。 内部类 内部类是Java中的一种特殊的类,它可以被...

    静态的魔力:Java中静态方法和变量的深度解析

    - **无法访问实例成员**:由于静态方法不属于任何特定实例,因此它们不能访问类的非静态成员。 - **示例代码**: ```java public class MathUtils { public static int add(int a, int b) { return a + b; } }...

Global site tag (gtag.js) - Google Analytics