基本数据类型
- 逻辑型——boolean
boolean类型数据有两种取值true和false,在机器中只占一位,默认初始值false。
注意:与其他高级语言不同的是Java中的布尔值不能和数字之间转换,也就是说flase不能对应0,true不能对应非零数。 - 文字型——char和string
char类型是文字型的基本数据类型,是一个十六位的Unicode(国际码)的字符,用单引号引上。对于一些控制字符,java也需要通过转义序列来表示。
String不是基本类型而是一个类,字符串在Java中是对象(面向对象是Java与C语言很大的区别),需要注意是Java中的字符串是不以’\n’为结束符,并且String对象所表示的字符串是不能修改的。如果需要对字符串修改,需要使用StringBuffer类。 - 整数类型——byte,short,int和long
类型 | 占用储存空间 | 取值范围 |
---|---|---|
byte | 1字节 | − 2 7 -2^7 −27~ 2 7 − 1 2^7-1 27−1 |
short | 2字节 | -215 ~215-1 |
int | 4字节 | -231 ~231-1 |
long | 8字节 | -263 ~263-1 |
注意:Java中所有的整数类型都是有符号的,Java没有无符号的整数类型
- 浮点型——float和double
两种浮点类型:float、double,双精度double比单精度float具有更高的精度与更大的表示范围。但float具有速度快、占用内存少的优点。浮点型的默认初值是0.0。
//从代码规范的角度,建议在定义float、double时在最后加上f、d。
float a = 123f;
double b = 123d;
复合数据类型
在应用程序的开发中,基本的数据类型是远远不够用的,所以Java可以让程序员以类和接口的形式定义新类型。
如下面的代码用class定义了一个日期
//使用class关键字创建了一个日期类,将日期相关的三个变量进行了封装。
class MyDate{
public int day;
public int month;
public int year;
}
引用类型变量
对于复合数据类型,我们要用引用类型变量来定义它,主要有类、接口和数组变量。
引用类型变量的值是指向内存空间的引用(指针),储存在我们平常所说的堆空间里(与基本类型变量的栈空间区分)。Java与C/C++等语言不同,它不支持显示地使用内存地址,也就是没有指针,而必须通过变量名对某个内存地址进行访问。
引用类型变量声明时,只是给该变量分配引用空间,数据空间并未进行分配,因此引用变量声明后不能直接引用。所以需要通过new来给变量开辟数据空间。
public class Literal {
public static void main(String[] args){
MyDate today;//给today变量分配了一个保存引用的空间
today = new MyDate();//给today开辟数据空间,然后再赋值
today.day = 7;
today.month = 3;
today.year = 2023;
System.out.println(today.day);
System.out.println(today.month);
System.out.println(today.year);
}
}