在Java程序设计中实例变量和类变量有啥区别?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Java程序设计中实例变量和类变量有啥区别?相关的知识,希望对你有一定的参考价值。

你可以这样理解:类变量相当于一个人的姓,是先于对象存在的;而实例变量是对象创建之后再存在的,相当于人的名字;
1、类变量也叫静态变量,也就是在变量前加了static 的变量;
2、实例变量也叫对象变量,即没加static 的变量;
3、区别在于:类变量和实例变量的区别在于:类变量是所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果;而实例变量则属对象私有,某一个对象将其值改变,不影响其他对象;
参考技术A 类变量是所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果;而实例变量则属对象私有,某一个对象将其值改变,不影响其他对象;

实例变量是类实例化后,系统为其创建的一个类的实例变量的拷贝,即一个实例拥有一个实例变量。
类变量则是用static声明,系统为每个类变量分配一次存储空间。即所有的实例共享一个类变量。本回答被提问者和网友采纳
参考技术B 实例变量 是每个对象都有拥有的变量 类变量 是这一类的(即就是这个)拥有的变量啊

你的抽象一下

实例变量 你每new一个对象出来 这个对象里面就有这个变量 而类变量呢 就只有一个
参考技术C 实例变量必须new一个该实例才能访问到该变量
而类变量不用去new一个具体的实例直接用类名.实例变量名就可以直接访问到
因为类变量不属于某个实例专有的而是这个类共有的。
类变量用static声明。
参考技术D 实例变量是所有的实例所共有的变量。
类变量就只能是实例独有。

Java:对象数组;本地实例和类级别实例有啥区别? [关闭]

【中文标题】Java:对象数组;本地实例和类级别实例有啥区别? [关闭]【英文标题】:Java: Arrays of Objects; what is the difference between local and class-level instances? [closed]Java:对象数组;本地实例和类级别实例有什么区别? [关闭] 【发布时间】:2012-06-07 09:53:11 【问题描述】:

就初始/默认/未初始化值而言... ...是否已初始化数组对象(在类和本地级别)?

在一些 SCJP 笔记中阅读它:

数组元素被赋予其默认值,无论是否 数组被声明为实例或局部变量。

如果声明了数组“对象”,则不会对其进行初始化 本地。

【问题讨论】:

你能解释一下你的问题是什么意思吗? 请查看 John Skeet 在how to ask the perfect question 上的博客文章,了解更多信息可以帮助我们。 已编辑问题,请再次查看 @pop stack:恭喜:您在 JLS 中找到了问题的答案。 【参考方案1】:

声明为字段的数组被初始化为 null,就像每个非原始实例变量一样。声明为局部变量的数组未初始化,与其他所有局部变量一样。

一旦初始化为一个新数组,它们的每个元素都包含 null。

【讨论】:

【参考方案2】:

一个未初始化的对象总是null

Object[] myArray;
//myArray == null

myArray = new Object[1];
//myArray[0] == null

【讨论】:

并非如此。如果它是实例或静态变量,则您的第一个数组被隐式初始化为 null。如果是局部变量,则未初始化。【参考方案3】:

作为引用类型的类成员的初始值为 null。

作为引用类型的局部变量被认为是单元化的,需要明确地分配 null 或其他东西,否则代码将无法编译。

尝试测试这个例子,看看会发生什么:

class Test 
    private Object[] member;

    public void foo() 
        member.toString(); // NullPointerException
        Object[] local;
        local.toString(); // won't compile: The local variable local may not have been initialized
    

对象数组遵循相同的规则,因为它们本身就是引用。

现在,这是数组本身。当谈到数组的实际元素时,无论您在何处声明它们,它们默认为 null:

class Test 
    private Object[] member = new Object[10];

    public void foo() 
        member[0].toString(); // NullPointerException
        Object[] local = new Object[10];
        local[0].toString(); // NullPointerException
    

【讨论】:

【参考方案4】:

1.In JAVA local variable have to intitialized before using it.

2. String s[] = new String[2];
Here s[0] and s[1] both contains NULL value and initialize s[0] and s[1] as:
s[0] = new String();
s[1] = new String();

【讨论】:

以上是关于在Java程序设计中实例变量和类变量有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

本地 和 实例 变量之间有啥区别

java-实例变量和类变量的区别

JAVA类与对象---实例变量与类变量的区别,实例方法和类方法的区别

Python中静态方法和类方法的区别

在java语言中,静态变量和普通变量有啥区别?

Java:对象数组;本地实例和类级别实例有啥区别? [关闭]