静态对象 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)非静态方法可以随意调用静态属性和非静态属性
分享到:
相关推荐
态变量是类中的一种特殊变量,他在运行是可以说是从属于类,也就是说由该类定义生成的所有对象共用同一个静态变量,...为了确保这个执行过程中,只有一个Connection对象村与内存中,我们把Connection定义为类静态变量。
java静态内部类(嵌套类)的实例 。嵌套类意味着: 1. 要创建嵌套类的对象,并不需要其外围类的对象。 2. 不能从嵌套类的对象中访问非静态的外围类对象。
Java中this与super的区别 this&super; 什么是this,this是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针。 Java关键字this只能用于方法的方法体内。当一个对象创建后, Java虚拟机(JVM)就...
而非静态代码则在类的使用阶段(也是实例化一个类的时候)才会被初始化。 静态变量 可以将静态变量理解为类变量(与对象无关),而实例变量则属于一个特定的对象。 静态变量有两种情况: ● 静态...
3.Java语言与其他语言的区别 4 第二章 Java面向对象程序设计初步 4 1. 程序语言的分类 4 解释型语言 4 Java是编译解释型语言 4 Java编译器、解释器、JVM以及OS之间的关系 4 JVM的结构与作用 4 2. 程序设计的...
这是本人在学习期间总结的一些注意事项,主要是java基础方面的
了解静态方法和非静态方法之间的区别。任务是编写一个名为BookCollection的Java类(在BookCollection.java文件中),该类定义了一个用于管理Books集合的类。 Book是在提供的文件Book.java中定义的类。 ...
也就是说,你拥有一个引用,并不一定需要一个对象与它关联。因此,如果想操纵一个词或句子,则可以创建一个String引用: String s; 但这里创建的只是引用,并不是对象。如果此时向s发送一个消息,就会返回一个...
1)非静态属性String studentNumber 2)非静态属性String studentName 3)非静态属性int markForMaths 4)非静态属性int markForEnglish 5)非静态属性int markForScience 方法有: 1)构造方法Student(String number, ...
本实验报告主要介绍了Java类的封装机制,包括类的声明和定义、静态成员和非静态成员变量的区别、基本参数和引用参数的区别、类构造方法的编写、类的方法实现、创建类实例的方法、继承类的定义和使用、方法的重新定义...
在“静态方法”的内部不能调用“非静态方法”,反过来倒是可以的。而且你可以在没有创建任何对象的前提下,仅仅通过类本身来调用静态方法。这实际上正是静态方法存在的主要原因。它很象是C语言中的全局函数。Java中...
静态的方法是非虚方法(Java中的非虚方法有private,final,static,构造器,非虚方法无需根据具体的对象遍历方法区的方法表,决定调用关系) 也是说,对于静态类型方法的调用,是其声明类型的,如Parent c = ...
Java 程序运行时有 6 个地方可以存储数据,它们分别是寄存器、栈、堆、静态存储、常量存储和非 RAM 存储,主要是堆与栈的存储。 栈(stack)和堆(heap)是 Java 用来在 RAM 中存放数据的地方。与 C++ 不同,Java ...
Java内存分配与管理是Java的核心技术之一,今天我们深入Java核心,详细介绍一下Java在内存分配方面的知识。一般Java在内存分配时会涉及到以下区域: ◆寄存器:我们在程序中无法控制 ◆栈:存放基本类型的...
1)非静态属性String studentNumber 2)非静态属性String studentName 3)非静态属性int markForMaths 4)非静态属性int markForEnglish 5)非静态属性int markForScience 方法有: 1)构造方法Student(String number, ...
differ.java 测试静态方法与实例方法之间的区别 forefather.java 一个简单的基类 grandson.java 上面这个类的子类 hasConstructor.java 拥有构造器的类 hasFinalFun.java 拥有最终方法的类 hasRecall.java ...
中农大线上作业Java语言与面向对象程序设计A-F(1) Java语言与面向对象程序设计 第A套 1、计算机程序设计过程实际上就是( )过程,不同的问题求解方法决定了不同的程序 设计方法。 A.用机器计算 B.实际问题的...
主要介绍了Java面向对象类的定义,静态变量,成员变量,构造函数,封装与私有,this概念与用法,较为详细的分析了Java类的定义,静态变量,成员变量,构造函数,封装,私有等相关原理、用法及操作注意事项,需要的朋友...
(1) 非静态对象的初始化 在创建对象时,对象所在类的所有数据成员会首先进行初始化。 基本类型:int型,初始化为0。 如果为对象:这些对象会按顺序初始化。 ※在所有类成员初始化完成之后,才调用本类...