JavaTutorial

[TOC]

1. 数据类型

数据类型,指的是各个变量、常量和字面量的类型有可能不同,而运算符和函数匹配特定类型的变量,不匹配的变量-运算符组合无法通过编译并执行。Java是强类型语言。

编译器会区分不同的数据类型,判断对应位置上的数据是否符合相应的类型,如果类型不符则会报错。比如下面的例子:

int time = true;
true + 3;

由于time的类型是整数,而true字面量的类型是布尔值,因此无法把true赋给time

1.1 C语言的类型结构

根据之前的课程,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]

本讲义不会涉及指针的高级用法。

1.2 注释

后面的章节会讲到如何编写注释。

// java支持单行注释

/*
	java也支持多行注释
*/

/**
* 这种注释可以用来自动生成文档,至于怎么做,我们之后会讲到
*/

1.3 基本数据类型

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类型

不建议使用char类型

boolean类型

boolean(布尔)类型有两个值:falsetrue

在C++中,整数0相当于布尔值false,非0值相当于布尔值true,在java中则不行

1.4 变量

声明变量以及变量初始化:

double salary;
int vacationDays;
long earthPopulation;
boolean done;
int i = 10;

1.5 常量

java中,利用final声明常量,常量一般大写

final PAI = 3.14159;

1.9 枚举

与C语言类似,enum

1.10 字符串

Java语言提供了String类型,我们在03-字符串中有详细解释。