接触 Java
从大二开始接触 Java,至今也有 3 年了,大学虽然会用 Java 编写一些诸如 JSP + Servlet + JavaBean 的 Web 应用和 jar 记事本应用,但对 Java 中类及对象的理解始终不够深刻。
深入 Java
这段时间通过对 Java 更系统的学习,加上一些金融通信领域的项目实践,对面向对象编程、类及对象有了更深刻的理解。
Java 原始数据类型
严格来讲,Java 不是一门纯面向对象的编程语言,这是由于它保留了一些原始数据类型(primitive type),这些原始数据类型包括:byte, short, int, long, char, float, double, boolean。
Java 语言始于 C 语言,在创造之初,工程师参考了很多 C 语言的语法风格,这就是这些原始数据类型的来源。
这些原始数据类型并非一无是处,它们极大程度上方便了我们的编程。同时 Java 的创造者们为这些原始数据类型提供了它们对应的包装类, Java 5.0 之后,自动装箱/拆箱能够很方便的在基本类型和包装类型间转换。在某些特定的情况下,我们可以使用基本类型的包装类。
提示:原始数据类型的取值不能为 null ,但在及特殊的情况下,我们需要用null来确定这个对象是否存在。
注意:某些读者可能认为用 0 可以来表示不存在的对象,在编程中 0 有特殊含义不能表示不存在。例如,我们用 int sum;来表示班级总人数,此时 0 表示这个班级还一个人都没有加入,并不表示这个班级不存在,如果使用 Integer sum;来表示班级总人数,就不会存在此类问题,我们可以用 0 表示这个班级还没有一个人,用 null 表示这个班级不存在。
理解 Java 类和对象
类是对自然世界同一种类事物的抽象,而对象是对类的一个引用。
万事万物皆对象。
例子:人是同一种类的动物,人可以分为男人、女人,更加细分可以分为男孩、男青年、老爷爷、女孩、女青年、老婆婆。
在不同的应用领域,可以对人进行不同的划分。
如图所示:人是一个类,设计时我们可以把人设计为一个抽象类,男人及女人都继承自人这个类,我们还可以将男人及女人更加细分。而小明及小强是对象,它们是对类的一种引用,可以通过对象访问类下面的非私有属性(Field)已经方法(Method)。
public class Test(){
@Test
public void test(){
// 创建一个对象,未实例化
Boy xiaoming;
// 将对象 xiaoming 实例化
xiaoming = new Boy();
}
}
class Boy(){
public Boy(){
super();
}
}
Boy xiaoming;
此时创建了一个对象,它是一个空对象,需要实例化。
xiaoming = new Boy();
对象实例化,即在内存中开辟一块空间并将变量 xiaoming 指向该空间。
结语
这里我们可以把对象看成是一个“指针”,当我们未将对象实例化时,我们不能去使用这个对象,因为它不“存在”(在内存中指向 null ),只有当我们调用类构造方法将对象实例化后, JVM 在内存中开辟一块空间,并将该对象指向内存中的这块空间。
此时这个对象才算创建完成。