java中一切都是对象这句话是不是错的?

题目描述

经常听到这句话,这句话也是所谓老鸟给新手说的看起来最高级的一句话,在很多教材上也被广泛引用。网上也有很多不一样的理解方式
比如

  • JAVA的一切都是为对象服务

    • 但是如果这么理解,那也相当于给“java中一切都是对象”这句话判了死刑。我给客户服务,但我不是看客户,java的一切可以都给对象服务,但是不能因此就说一切都是对象。

  • java的一切都是对象,都可以调用方法。

    • 很明显基本数据类型就不是对象,否则也不需要引入包装类来帮助解决这个问题。

所以,java中一切都是对象这句我们几乎每天都能听到的话,是不是本身就是个伪命题。

回答:

不是

  1. 基本类型不是对象
  2. static的东西也不依赖对象存在

回答:

java中一切都是对象这句我们几乎每天都能听到的话

我怎么没听过

回答:

我们大二学习的JAVA是这本教材。
图片描述

里面虽然没有这句话,不过的确也体现了这个思想。
java中一切都是对象
【老鸟给新手说的看起来最高级的一句话】
我的理解是,每一中语言都是一种思维模式的学习,来帮助人表达思维。而JAVA的核心思维就是【对象】,所以老鸟们才喜欢这样说吧。

图片描述
C语言中,可用的数据类型(基本上)已经预设好,比如int, float。在Java中,我们除了可以用这些预设的数据类型外,还可以通过类来定制自己想要的数据类型,然后通过组合来使用。但基本类型和普通类型还是有所区别的。基本类型经常被使用,且所占据内存空间不大,所以在
Java中,为了效率起见,这些基本类型与普通的类型(也就是自定义的类)的内存管理方式不同。比如,基本类型一旦声明就会被分配内存空间,而普通类型需要使用new关键字来分配内存空间。
Java为每个基本类型提供了相应的普通类型。比如int基本类型对应Integer类型。如果将基本类型的对象转成相应的普通类型变量,所谓的基本类型也就成为了一般意义上的类型(不再有内存管理上的不同)。

图片描述

下面是一些学习笔记:
 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(支持任何精度的定点数)。它们大体上属于包装器类型,但没有对应的基本类型。

回答:

明显不是的,别想太多?

回答:

你可以把语言本身当成个对象

回答:

面向对象的语言

以上是 java中一切都是对象这句话是不是错的? 的全部内容, 来源链接: utcz.com/p/181154.html

回到顶部