摘要:一引用操纵对象在的世界里,一切都被视为对象。特点创建程序时,需要知道存储在栈内所有数据的确切生命周期,以便上下移动堆栈指针。因为,指向同一块内存空间除了通过对象引用静态变量,我们还可以通过类直接引用静态变量
一、引用操纵对象
在Java的世界里,一切都被视为对象。操纵的标识符实际上是对象的引用,
例如:遥控器与电视的关系。
可以在没有对象关联的情况下,拥有一个引用。没有电视机,也可以拥有遥控器。
eg:
String s1; //此时创建的只是引用,而不是对象。
如果此时向s1发送一个消息,会报错。因为s1实际上并未与任何事物关联。
安全的做法,创建一个引用的同时便进行初始化。
String s2 = "qwer";
二、存储
Java内存分配:
寄存器:最快的存储区,位于存储器内部,无法直接控制,由寄存器根据需求进行分配。
栈:位于RAM(随机访问存储器)中,通过堆栈指针进行操作。指针下移,分配新的空间,指针上移,释放内存。特点:创建程序时,需要知道存储在栈内所有数据的确切生命周期,以便上下移动堆栈指针。
堆:通用的内存池,用于存放所有的Java对象。特点:程序不需要知道数据在堆中的生命周期。用堆进行存储分配和清理可能会比用栈进行存储分配更耗时。
常量存储:直接存储在程序代码内部。(某些嵌入式系统中,常量存储在只读存储器)
非RAM存储:数据完全存储于程序之外。流对象和持久化对象。
三、基本数据类型
基本类型 | 大小 | 最小值 | 最大值 | 包装器类型 |
---|---|---|---|---|
boolean | - | - | - | Boolean |
char | 2字节 | 0 | 2^16-1 | Character |
byte | 1字节 | -128 | 127 | Byte |
short | 2字节 | -2^15 | 2^15-1 | Short |
int | 4字节 | -2^31 | 2^31-1 | Integer |
long | 8字节 | -2^63 | 2^63-1 | Long |
float | 4字节 | IEEE754 | IEEE754 | Float |
double | 8字节 | IEEE754 | IEEE754 | Double |
void | - | - | - | Void |
四、static关键字
应用场景:
1.只想为某特定域分配单一的存储空间,而不去考虑究竟要创建多少对象
2.希望某个方法不与任何对象关联
将static关键字放在定义之前,可以在不创建任何对象的情况下调用静态方法/静态变量
eg:
public class StaticTest { @Test public void test() { DemoClass dClass1 = new DemoClass(); DemoClass dClass2 = new DemoClass(); dClass1.staticNum = 2048; System.out.println(dClass2.staticNum); //输出2048。因为,dClass1.staticNum、dClass2.staticNum指向同一块内存空间 //除了通过对象引用静态变量,我们还可以通过类直接引用静态变量 System.out.println(DemoClass.staticNum); StaticIncrement.staticNumIncrement(); System.out.println(DemoClass.staticNum); } } class DemoClass { static int staticNum = 1024; } class StaticIncrement { static void staticNumIncrement() { DemoClass.staticNum++; } }
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/68194.html
摘要:方法的基本组成包括名称参数返回值方法体方法名和参数列表唯一的标识出某个方法。如果返回的类型是,则的作用仅是退出方法否则必须返回正确的返回值包名名字可见性约定以域名反转作为包名,用来划分子目录,并且全部小写。 点击进入我的博客 2.1用引用操纵对象 尽管一切都看作对象,但操纵的标识符实际上是对象的一个引用。 String s; // s是一个String类型的引用, 并没有任何对象与其...
摘要:堆栈位于通用随机访问存储器中,但通过堆栈指针可以从处理器那里获得直接支持。堆栈指针若向下移动,则分配新的内存若向上移动,则释放那些内存。创建程序时,系统必须知道存储在堆栈内所有项的确切声明周期,以便上下移动堆栈指针。 写在前面 首先我想说的是 Java编程思想——知识卡片 将是一系列文章,文章的内容是我阅读《Java编程思想》这本书的心得体会,那么我为什么要写这一系列的文章呢?原因有一...
摘要:类最基本的作用,在于通过类获取到相应的对象,在向对象发送消息时以期望对象做某些特定的事情。先导概念引用中一切皆对象,因此采用一个指向对象的引用来操纵对象。对象可以存活于作用域之外。 欢迎各位读者关注我的微信公众号,共同探讨Java相关技术。生命不止,学习不休! showImg(https://segmentfault.com/img/bVboaBO?w=129&h=129); 也许你慢...
摘要:在中,并没有对抽象类和接口的支持。例如,当对象需要对象的能力时,可以有选择地把对象的构造器的原型指向对象,从而达到继承的效果。本节内容为设计模式与开发实践第一章笔记。 动态类型语言 编程语言按数据类型大体可以分为两类:静态类型语言与动态类型语言。 静态类型语言在编译时已确定变量类型,动态类型语言的变量类型要到程序运行时,待变量被赋值后,才具有某种类型。 而JavaScript是一门典型...
摘要:很多情况下,通常一个人类,即创建了一个具体的对象。对象就是数据,对象本身不包含方法。类是相似对象的描述,称为类的定义,是该类对象的蓝图或原型。在中,对象通过对类的实体化形成的对象。一类的对象抽取出来。注意中,对象一定是通过类的实例化来的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 马上就要到七夕了,离年底老妈老爸...
阅读 2313·2021-11-08 13:13
阅读 1244·2021-10-09 09:41
阅读 1682·2021-09-02 15:40
阅读 3185·2021-08-17 10:13
阅读 2545·2019-08-29 16:33
阅读 3121·2019-08-29 13:17
阅读 3130·2019-08-29 11:00
阅读 3294·2019-08-26 13:40