一切都是对象

一切都是对象

之前自己学习Java就是以系统的角度去学习,就是我们把这些知识点罗列出来,然后做一个全面的学习。这样的的确确可以将知识点都学习全面,但是自己理解上来说还是很浅层次的。如果一段时间没有去使用Java我觉得自己还是会忘记,所以去理解为什么对于学习Java是很重要的。

上节我们从语言的角度去分析,语言就是描述人类的想法和同时让计算机辨识的一种标识。根据这个语言是偏向我们人类好理解,还是计算机好理解可以分为,面向过程语言和面向对象的语言。Java就属于面向对象的语言。

那么面向对象语言,我们主要去理解的就是这个对象,我们编写程序就是去操作这个语言。

那么:

·Java是怎么去操作这个对象的呢?
·同时这个对象怎么生成的?
·我们又怎么去区分这么多对象呢?
·对象的存在应该有空间,那么对象存储在哪呢?
·有开始就有结束,有生成就有销毁,那么Java是怎么销毁一个对象的呢?
·还有就是是不是真的就是一切都是对象,有没有一些特例呢?
·最后面我们写的程序应该就是很多个对象的组合和操作,他们之间是怎么运作的呢?我们这一节就是面对这些问题,我们对对象的理解就会更加深刻。

Java怎么操作对象?

Java是用引用(reference)去操作对象,用字符串去解释这个引用。

String s;

那么这个s就是引用,那么我们这样是不是可以操作对象了。不行,因为我们还没有创建对象,没有对象给我们操作,直接运行是会报错的。这也是我们编程中经常会遇到的空指针异常。

Java怎么创建对象?

Java使用new关键字来创建对象。

String s1 = new String(“hello”);
String s2 = “hello”;

String字符串比较特殊,可以直接使用””来创建对象。那么这些创建好的对象到底存储在哪里呢?

Java怎么存储对象?

一切都是对象

除此之外这些都是对象的数据的存储位置等等一些知识,那么Java当中还有一些特殊的数据类型。按照面向对象的思想,一切都是对象,不管什么数据都应该是对象,但是Java对于一些基础的数据类型为了运行效率和内存的优化,将8个基本类型进行了特殊处理。同时针对8个基本类型的存储的大小的限制有了BigDecimal和BigInteger进行扩展。

我们知道Java是如何存储数据之后我们如何去分辨这么多对象呢?

Java如何分辨对象?

Java中使用Class这个关键字来创建新的对象类型,也就是通过Class 来分辨对象。更加具体的是类里面的内容–域和方法。

域就是我们通常所说的成员变量。这里面需要注意的是,如果我们初始化的话,Java程序一般会给一些默认值8个基本类型一般给一个0,引用类型给一个null。所以我们需要初始化这些成员变量。但是这种给与默认值的情况不适合方法里面的局部变量。

方法在以前经常认为是函数,但是本书有一个说法更加能体现他作用,就是接受一个消息进行操作。

认识完这些之后我们是不是可以随便的使用创建好的对象呢?

Java的作用域

Java跟C语言和C++语言都是通过花括号来限定变量名的可见性。

最后我们创建了实例我们需要控制他的销毁。

Java如何销毁实例?

Java通过GC垃圾处理机制销毁实例,这部分不需要程序员去控制。

以上就是我们对对象的理解,那么是不是有需要将一些方法单独拿出来,这个方法不属于任何对象,这个时候我们处理?

不是对象的特殊处理

使用static关键字,分static修饰的成员变量和成员方法。这些变量和成员方法可以每一个对象共享。

我们理解完对象之后,我们就需要将这些对象组合起来,运行成一个Java程序。

怎么构建一个Java程序?

我们使用class创建一个新的类型,如果我们使用了相同的名字在不同的包下创建我们怎么知道他们之间的区别呢?这里就需要将类标注在那个包下。

同时我们使用其他的类型的时候我们怎么知道我们选择的是哪个对象呢?所以需要使用import关键字来引用具体的类型。去识别。

原文 

https://segmentfault.com/a/1190000018451551

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » 一切都是对象

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址