[TOC]
数据类型,指的是各个变量、常量和字面量的类型有可能不同,而运算符和函数匹配特定类型的变量,不匹配的变量-运算符组合无法通过编译并执行。Java是强类型语言。
编译器会区分不同的数据类型,判断对应位置上的数据是否符合相应的类型,如果类型不符则会报错。比如下面的例子:
int time = true;
true + 3;
由于time
的类型是整数,而true字面量的类型是布尔值,因此无法把true
赋给time
。
根据之前的课程,C语言中存在整数(字符)类型、浮点数类型、结构体类型和各种指针(数组)类型。由于C编译器不会对下面的代码块报错,字符和整数可以互相替换而不引起歧义,因此整数和字符属于同一类型。
int character = 's';
整数可以替换浮点数,但是浮点数不一定可以替换整数,因此浮点数和整数是不同的类型。整数和结构体不能相互替换,因此不是同一类型。
如果尝试对整数变量进行解引用(间接运算符*
),或者进行数组取值([]
),那么会触发编译时错误,指出整数类型不能作为上述操作符的参数。由此可见,整数和指针不是同一类型。
int fake_pointer = 5;
int res1 = *fake_pointer;
int res2 = fake_pointer[2];
不同类型的指针(数组),解引用的结果不同,因此指针与指针的类型也不一样。后来的C++,将智能指针包装为泛型类型,用泛型来保证不同指针的类型关系。
#include <time.h>
int vector[20] = {1,2,3};
struct tm times[20];
struct tm time = vector[0];
int element = times[0]
本讲义不会涉及指针的高级用法。
后面的章节会讲到如何编写注释。
// java支持单行注释
/*
java也支持多行注释
*/
/**
* 这种注释可以用来自动生成文档,至于怎么做,我们之后会讲到
*/
Java包括八种基本类型,列表如下:
类型 | 存储需求 | 取值范围 |
---|---|---|
int | 4字节 | -2 147 483 648 ~ 2 147 483 647 |
short | 2字节 | -32 768 ~ 32767 |
long | 8字节 | -9 223 372 036 854 775 808 ~ 9 223 372 036 854 775 807 |
byte | 1字节 | -128 ~ 127 |
类型 | 存储需求 | 取值范围 |
---|---|---|
float | 4字节 | 大约±3.402 823 47E + 38F(有效位数为6~7位) |
double | 8字节 | 大约±1.797 693 134 862 315 70E + 308(有效位数为15位) |
float类型的数值有一个后缀F。没有F的浮点数值默认为double类型
不建议使用char类型
boolean(布尔)类型有两个值:false
和true
在C++中,整数0相当于布尔值false,非0值相当于布尔值true,在java中则不行
声明变量以及变量初始化:
double salary;
int vacationDays;
long earthPopulation;
boolean done;
int i = 10;
java中,利用final
声明常量,常量一般大写
final PAI = 3.14159;
与C语言类似,enum
Java语言提供了String类型,我们在03-字符串中有详细解释。