一切都是对象

Posted fyln

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一切都是对象相关的知识,希望对你有一定的参考价值。

如果我们说另一种不同的语言,那么我们就会发觉一个有些不同的世界。

解读:不同的语言是从不同的角度描述世界的。

Java:是一种纯粹的面向对象的语言,几乎一切都是对象。

用引用操纵对象:操纵内存中的元素(数据类型,直接操纵(引用),间接操纵(指针))。

Java:类型 标识符;String s;定义一个引用reference;可以将对象赋值给引用,使其操纵该对象。

本质:引用存放于执行栈中,由执行栈的指针查找并获取他的值;对象存放于堆内存中,由引用的值查找并获取对象的数据。至于是怎么查找及获取的原理:我想就是一套定位机制。

必须由你创建所有对象:new String();

存储位置:

寄存器:计算机中最快的存储区,位于处理器内部。

堆栈:位于RAM随机访问存储器中,通过堆栈指针可以从处理器哪里获得直接支持。仅次于寄存器。指针只能上下移动来控制内存的分配和释放,故内存中的数据必须是有确切的生命周期的。

本质:内存分配,栈空间(可以想象成连续的内存空间)每分配一个内存,指针向下移动一步,数据被放入分配的空间中。每释放一个内存,指针向上移动一步。那么怎么使用已经存放好的数据呢?这就需要通过控制指针的移动步骤了。

堆:一种通用内存池(也位于RAM区),用于存放java对象。内存分配和清理是由于不知道内存数据的生命周期,而变得更为缓慢,不过也更为灵活。

本质:堆空间(不连续的内存空间),分配时,随机查找到一块未用内存存放,返回地址数据,释放时需判断其地址是否有引用持有来释放。

常量存储:常量值通常放入代码内部,或者放在ROM只读存储器中。

RAM存储:硬盘等位置。

特例:基本类型。特点:占用空间小且不随机器硬件的改变而改变(保证移植不变),表示简单。

对于此类对象,可以放入栈中,提高效率。

Booleanchar(16bit,范围Unicode0Unicode2^16-1)byte(8bit)short(16bit)int(32bit)long(64bit)float(32bit)double(64bit)void

1 byte = 8 bit1字节=8位,每位只能存储二进制数据(01

Java中的数值都有符号,由最高位表示。

byte的范围计算为:-2^7+2^7-1;一共可表示的数2^8=256+0-0所以要减1.

高精度数字:BigIntegerBigDecimal。为一个类库中的类,其范围任意,所能做的计算有其本身的方法实现。

数组:为特殊的抽象数据类型,在java中其规则有,初始化内存全部清零,访问范围将被检查,不能超出范围。

永远不需要销毁对象:

变量的作用域:变量的生命周期(c语言可以由花括号包裹的范围决定,java不行),java是由方法(方法中的变量只能在方法中可以使用,称为局部变量),对象决定的(能在对象的各个方法中使用,称为成员变量)。

对象的作用域:java中对象可以一直存在,除非其没有引用指向后才可能被释放(不过其引用变量是有作用域的,可以将引用变量赋值给更大的作用域变量);c中对象作用域类似变量的作用域。

创建新的数据类型:类。Class name{变量,方法 }

变量:类型 变量名;int i; String s;都会有默认初始化值。

方法:返回值类型 方法名(参数列表){代码}

细节:返回值类型(任何数据类型,特殊数据类型void(表示返回值为空)),参数列表(将调用请求时可能会需要传递一些信息,信息为各类型的值,不同类型的值在参数列表中需要明确指定其类型和代表值的名称,如add(5), void add(int i){}。调用时5int类型)

类的名字:区分不同类,自定义时可能会和类库中的一样。那么类的实际名称为包名+类名。为了避免每次写包名+类名,可以用import 包名。

Static:静态的,用于某个变量希望他不依赖对象,也就是说没有new对象或者new了多个对象都是存在此变量且各对象中的此变量是同一个。其存放在类定义的代码区。

以上是关于一切都是对象的主要内容,如果未能解决你的问题,请参考以下文章

一切都是对象

Java学习记录-1.一切都是对象

一切都是对象

python里的类与一切事物都是对象

一切都是对象

第二章----一切都是对象