
Java 中的变量 (variable) 有两种,一种是基本数据类型 (primitive data type) ,另一种则是对对象 (object) 的引用 (reference)
基本数据类型共有八种,如下表
类型类型 关键字 位元数 范围
整数(字节) byte 8 -128 ~ 127
整数 short 16 -32768 ~ 32767
整数 int 32 -2147483648 ~ 2147483647
整数 long 64 -9223372036854775808 ~ 9223372036854775807
浮点数 float 32 依据 IEEE 754 标准
浮点数 double 64 依据 IEEE 754 标准
布尔值 boolean 1 true, flase
字符 char 16 '\u0000' - '\uffff'
依数据所占位元数的不同,整数有四种,浮点数有两种,另外布林值与字符各一种。一般来说,数据类型所占据的位元数越多,可表示的数字范围也越大。字面常数 (literal) 也就是程序中直接写出来的数值 (value) ,以下表示布林值 (Boolean value) 、字符 (character) 、整数 (integer) 与浮点数 (floating-point number) 的字面常数
boolean a = true; char b ='2'; int c = 2; double d = 2.0;
声明 (declare) 布尔型的变量 (variable) 使用关键字 (keyword) boolean , true 为布林值的字面常数,表示逻辑上的真,布尔型的另一个字面常数为 false ,表示逻辑上的假。
字符类型则使用关键字 char ,由于 Java 直接支援 Unicode 编码,因此任何 Unicode 字符都可以当作字符类型的的字面常数。字符类型的字面常数为单引号围起来的单一字符,或是单引号围起来,反斜线加上四位的十六位元数字,例如
char e = '\u0061'; // 小写英文字母 a char f = '\u0032'; // 阿拉伯数字 2 char g = '\u002E'; // 英文句号 . char h = '\u0025'; // 百分比符号 %
反斜线加上特定英文小写字母表示转义字符,用来表示一些不可见字符,例如
char i = '\n'; // 新行符号 char j = '\t'; // tab 键 char k = '\a'; // 响铃 char l = '\"'; // 双引号
整数类型共有四种,一般来讲,最常使用的是 int 类型,没有特别指定的整数字面常数也会是 int 类型,而 long 类型又被称为长整数,字面常数须加上英文字母 L 或 l 的后缀,如
long m = 220L; // 长整数 220 long n = 220l; // 长整数 220
浮点数类型有两种,最常使用的是 double 类型,没有特别指定的浮点数字面常数也会是 double 类型,若是需要使用float 类型的浮浮点数需要在字面常数加上 F 或 f 的后缀,如
float o = 22.0F; // 浮点数 22.0 float p = 22.0f; // 浮点数 22.0
除了以上八种基本数据类型之外,其余的变量都是指向对象的引用,可以想像变量本身就是容器,基本数据类型所含的数值大小可以直接装进变量之中,但是对象太大,塞不进变量里头,因此对象变量里所装的是对对象的链结,也就是引用。
例如 Demo.java 中
// 声明类别名称
public class Demo {
// 声明 main() 方法
public static void main(String[] args) {
// 建立 Object 类型的对象
Object o = new Object();
// 于命令打印出信息
System.out.println();
System.out.println(o.toString());
System.out.println("程序执行结束");
System.out.println();
}
}
/* 文件名: Demo.java
作者: 52ij
时间: 6月, 2015 */第 6 行,变量 o 为对 Object 类型对象的引用
006 Object o = new Object();
建立对象须使用关键字 new ,以及对象的构造函数 (constructor) 。构造函数类似对象的方法 (method) ,用来专门建立对象之用。一旦对象建立之后,对象就会包含许多属性 (field) 与方法。
Object 类型的对象为 Java 所有对象之母,这是说, Java 中所有对象都继承 (inherit) 自 Object 。继承 (inheritance) 是面向对象程序语言 (object-oriented programming language) 中的一项重要特性,使类别 (class) 可以衍生自其他类别,子类别 (subclass) 可以拥有父类别 (superclass) 的特性。
继承的英文原文为 inherit ,中文意思泛指从什么得到什么,生物学上的遗传也是用这个词。
由于 Object 类型为对象之母,因此 Object 类型的方法,也都会被 Java 中所有对象所继承
返回类型 名称 功能
Object o.clone() 复制返回 o 本身的拷贝
boolean o.equals(Object obj) 判断 obj 是否与 o 相同
void o.finalize() 调用资源回收者检查此对象是否应该被回收
Class o.getClass() 返回类别名称
int o.hashCode() 返回对象的哈希码
void o.notify() 唤醒等待中的单一线程 (thread)
void o.notifyAll() 唤醒等待中的所有线程
String o.toString() 返回对象的字符串表达形式
void o.wait() 使 o 的线程进行等待
void o.wait(long timeout) 使 o 的线程进行等待
void o.wait(long timeout, int nanos) 使 o 的线程进行等待
有没有看到,光是 Object 里头就有这么多东东,所以变量装的下对对象的引用,装不了整个对象 :)
有一个特别的字面常数 null ,一旦对象的引用变量指向 null ,就表示引用变量失去对这个原本对象的链结,如果没有其他的变量指向这个对象,这个对象就会被资源回收者 (garbage collector) 进行资源回收,好挪出内存空间,给其他程序利用。
另有一个特别的对象,说是特别其实也是太常使用了,就是字符串 (string) 。程序中经常处理大量的字符串工作,因此字符串有专门的字面常数表示方法,也就是用双引号围起来的内容就是字符串,例如
String q = "There is no spoon."; String r = "偷得浮生半日闲";
Demo.java 中的 o.toString() ,就是返回 o 的字符串表达形式,也就是一个字符串对象。其他 println() 的参数都需要用到字符串,我们直接提供字符串的字面常数。
从 a 到 r 都是变量,变量取名有一定的规范,接下来,我们来看看变量命名规则吧!
中英文术语对照
变量 variable
基本数据类型 primitive data type
对象 object
引用 reference
字面常数 literal
数值 value
布尔值 Boolean value
字符 character
整数 integer
浮点数 floating-point number
声明 declare
变量 variable
关键字 keyword
构造函数 constructor
方法 method
属性 field
继承 inherit
继承 inheritance
面向对象程序语言 object-oriented programming language
类别 class
子类别 subclass
父类别/超类 superclass
线程 thread
垃圾回收 garbage collector
字符串 string
重点整理:
1、Java 的变量有两种,基本数据类型直接存在变量之中,对象在变量里储存的是引用。
2、基本数据类型有八种,可分为整数、浮点数、布尔值及字符等四大类。
3、整数类型使用关键字 byte 、 short 、 int 及 long ,依所占位元数有不同的数字储存范围,程序中直接写出来的数字为int 类型。
4、浮点数类型使用关键字 float 及 double ,依所占位元数有不同的数字储存范围,程序中直接写出来带有小数客人的数字为double 类型。
5、布尔型使用关键字 boolean ,字面常数为 true 及 false 。
6、字符类型使用关键字 char ,字面常数为单引号围起来的单一字母或符号。
7、转义字符为一些不可见字符,由反斜线开始加上特定的英文字母或符号。
8、对象有属性及方法,属性为对象专属的变量,方法则是执行特定的工作, Java 中所有对象都继承自 Object 类型。
9、null 是种特别的字面常数,表示什么都没有。
10、字串是处理文字符号的对象,字面常数为双引号围起来的内容。
问题与讨论
1、为什么变量要分成基本数据类型与引用两种?不能都是对象吗?
2、基本数据类型有哪八种?
3、字符跟字符串有什么不同?
4、为什么要有 null ? null 在程序中的用途为何?
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
