Java类型系统
Java语言基础数据类型有两种:对象和基本类型(Primitives)。Java通过强制使用静态类型来确保类型安全,要求每个变量在使用之前必须先声明。
这种机制和非静态类型的语言有很大差别,非静态语言不要求对变量进行声明。虽然显式类型声明看起来较繁琐,但其有助于编译器对很多编程错误的预防,例如,由于变量名拼写错误导致创建了没有用的变量,调用了不存在的方法等。显式声明可以彻底防止这些错误被生成到运行代码中。关于Java类型系统的详细说明可以在Java语言规范(Java Language Specification)中找到。
基本类型
Java的基本类型不是对象,它们不支持对象相关的操作。基本数据类型只能通过一些预定义的操作符来修改它们。Java中的基本类型如下:
- boolean(布尔型):值为true或false
- byte(字节):8位二进制整数
- short(短整型):16位二进制整数
- int(整型):32位二进制整数
- long(长整型):64位二进制整数
- char(字符型):16位无符号整数,表示一个UTF-16编码单元
- float(浮点型):32位IEEE-754标准的浮点数
- double(双精度浮点型):64位IEEE-754标准的浮点数
对象和类
Java是一种面向对象的语言,其重点不是基础数据类型,而是对象(数据的组合及对这些数据的操作)。类(class)定义了成员变量(数据)和方法(程序),它们一起组成一个对象。在Java中,该定义(构建对象所用的模板)本身就是一种特定类型的对象,即类。在Java中,类是类型系统的基础,开发人员可以用它来描述任意复杂的对象,包括复杂的、专门的对象和行为。
与绝大多数面向对象的语言一样,在Java语言中,某些类型可以从其他类型继承而来。如果一个类是从另外一个类中继承来的,那么可以说这个类是其父类的子类(subtype或subclass),而其父类称为超类(supertype或superclass)。有多个子类的类可以称为这些子类的基类(base type)。
在一个类中,方法和成员变量的作用域都可以是全局的,在对象外可以通过对这个类的实例的引用来访问他们。
以下给出了一个非常简单的类的例子,它只有一个成员变量ctr和一个方法incr():
public class Trivial{ /* a field: its scope is the entire class */ private long ctr; /* Modify the field */ public void incr() { ctr++; } }
对象的创建
使用关键字new创建一个新的对象,即某个类的实例,如:
Trivial trivial = new Trivial();
在复制运算符"="的左边定义了一个变量,名为trivial。该变量的类型是Trivial,因此只能赋给它类型为Trivial的对象。赋值符右边为新创建的Trivial类的实例分配内存,并对该实例进行实体化。赋值操作符为新创建的对象变量分配引用。
摘自:《Android程序设计》