一切都是对象
之前自己学习 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 关键字来引用具体的类型。去识别。