如何理解java一切都是对象_java中一切都是对象这句话是不是错的?

我们大二学习的JAVA是这本教材。

c81e3a479f55cc3d8c980a6799bc011e.png

里面虽然没有这句话,不过的确也体现了这个思想。

java中一切都是对象

【老鸟给新手说的看起来最高级的一句话】

我的理解是,每一中语言都是一种思维模式的学习,来帮助人表达思维。而JAVA的核心思维就是【对象】,所以老鸟们才喜欢这样说吧。

c78fa0289ccd8d12a4a478dc33a72f0f.png

C语言中,可用的数据类型(基本上)已经预设好,比如int, float。在Java中,我们除了可以用这些预设的数据类型外,还可以通过类来定制自己想要的数据类型,然后通过组合来使用。但基本类型和普通类型还是有所区别的。基本类型经常被使用,且所占据内存空间不大,所以在

Java中,为了效率起见,这些基本类型与普通的类型(也就是自定义的类)的内存管理方式不同。比如,基本类型一旦声明就会被分配内存空间,而普通类型需要使用new关键字来分配内存空间。

Java为每个基本类型提供了相应的普通类型。比如int基本类型对应Integer类型。如果将基本类型的对象转成相应的普通类型变量,所谓的基本类型也就成为了一般意义上的类型(不再有内存管理上的不同)。

498fd7313c4bda9ced1b726187dffb4f.png

下面是一些学习笔记:

Java语言假设我们只进行面向对象的程序设计,即在开始用Java进行设计前,我们需要将思想切换到面向对象的世界中。

1.用引用操纵对象

每种编程语言都有自己操纵内存中元素的方式。是直接操纵元素还是用某种基于特殊语法的间接表示来操纵对象?

Java中将一切都视为对象,这样就可采用较为单一固定的语法。

虽然将一切都看做对象,但操纵的标识符实际上是对象的引用。

拥有一个引用,并不一定与一个对象相关联。

2.必须由使用者创建所有对象

1).Java内存分配

五个地方可以存储数据:

a.寄存器。位于处理器内部,速度最快,但数量有限,不能直接控制。

b.堆栈。位于RAM中,通过堆栈指针可以从处理器那里获得直接支持。速度仅次于寄存器。

但Java系统必须知道存储在堆栈的所有项的生命周期,这样才能操纵堆栈指针分配或者释放内存。

对象引用存储在堆栈中(堆栈还存储着其他项),但对象不存储在堆栈中。

c.堆。位于RAM区,一种通用的内存池,存放所有的Java对象。编译器不需要知道存储在堆里的数据的存活时间。速度慢于堆栈。

d.常量存储。常量值通常存于程序代码内部。

e.非RAM存储。如持久化对象,数据存储在磁盘上。

2).一切皆是对象的特例:基本类型

new创建对象存放在堆上,但创建简单、较小的变量没有必要用new。因此Java采用创建并非是引用的自动变量来存储这类小而简单的变量,并将它们放在堆栈里,以提高效率。这类自动变量就是Java的基本类型。

基本类型共9种,如下表所示:

基本类型 大小 最小值 最大值 包装器类型

boolean — — — Boolean

char 16-bit Unicode 0 Unicode 216-1 Character

byte 8 bits -128 +127 Byte

short 16 bits -215 +215-1 Short

int 32 bits -231 +231-1 Integer

long 64 bits -263 +263-1 Long

float 32 bits IEEE754 IEEE754 Float

double 64 bits IEEE754 IEEE754 Double

void — — — Void

从表中可知基本类型的特点:占用存储空间大小不变;所有数值类型都是有符号数;具有包装器。

占用存储空间大小不变提高了Java程序的可移植性。

Java中一切皆对象,但基本类型却不是对象,为了解决这个问题,Java让每个基本类型都对应了一个包装器类型。

包装器类型将基本类型包装起来,添加了属性和方法。Java SE5自动包装功能可以将基本类型转换为包装器类型,当然也可以反向转换。

基本类型和它们的包装器类型有哪些区别呢?

a)包含内容不同。基本类型只是表示一个数据,包装器类型包括数据和方法。

b)声明方式不同。包装器类型需要使用new来声明,而基本类型不需要。

c)未进行初始化时,默认初始值不同。如int作为类成员变量时,默认初始值为0,而包装器类型都为null。

d)存储位置不同。基本类型存储在堆栈中,而包装器类型的引用存储在堆栈中,引用引用的对象存储在堆中。

e)使用方式不同。基本类型可以直接赋值,不能放进List,Map等集合类中,而包装器类型可以。

Java还提供了两个用于高精度计算的类,BigInteger(支持任意精读的整数)和BigDecimal(支持任何精度的定点数)。它们大体上属于包装器类型,但没有对应的基本类型。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值