Java是一种强类型的语言。这就意味着必须为每一个变量声明一种类型。在Java中,一共有8中基本类型(primitive type),其中有4种整型、2种浮点类型、1种用于表示Unicode编码的字符单元的字符类型char和1种用于表示真值的boolean类型。
1、整型
整型用于表示没有小数部分的数值,它允许是负数。Java提供了4种整型,具体如下:
整数 占用字节数
byte 1
short 2
int 4
long 8
在通常情况下,int类型最常用。但如果表示地球上的居住人数,就需要使用long类型了。byte和short类型主要用于特定的应用场合,比如说,底层文件处理或者需要控制占用存储空间量的大数组。
我们需要注意的是:
- 整数默认是int类型
- 长整型后缀用L或者l标记。建议使用L。
下面是我写的一段案例代码,通过代码学习变量和数据类型,如下:
public class DataTypeDemo {
public static void main(String[] args) {
//定义变量的格式:
//数据类型 变量名 = 初始化值;
//定义一个字节变量
byte b = 10;
System.out.println(10);
System.out.println(b);
//定义一个短整型变量
short s = 100;
System.out.println(s);
//定义一个整型变量
int i = 1000;
System.out.println(i);
//超过了int的范围
//int j = 1000000000000;
long j = 1000000000000L;
//long j = 100L;
System.out.println(j);
//定义浮点数据变量
float f = 12.345F;
System.out.println(f);
double d = 12.345;
System.out.println(d);
//定义字符变量
char ch = 'a';
System.out.println(ch);
//定义布尔变量
boolean flag = true;
System.out.println(flag);
}
}
我们使用变量的时候要注意的问题呢?
1.作用域:变量定义在哪个大括号内,它就在这个大括号内有效。并且,在同一个大括号内不能同时定义同名的变量。
2.初始化值:没有初始化值的变量不能直接使用。你只要在使用前给值就行,不一定非要在定义的时候立即给值。推荐在定义的时候给值。
定义变量的格式:
(1)数据类型 变量名 = 初始化值;
(2)数据类型 变量名;
(3)变量名 = 初始化值;
3.在一行上建议只定义一个变量,可以定义多个,但是不建议。
如下我写的案例代码:
public class DataTypeDemo2 {
public static void main(String[] args) {
//定义变量
int x = 100;
//错误,不能有同名的
//int x = 200;
//定义变量必须给值
//int y;
//System.out.println(y);
int z;
z = 100;
System.out.println(z);
//在一行上定义多个变量
//int a = 10; int b = 20; int c = 30;
//上面的写法可以,但是不建议。
int a = 10;
int b = 20;
int c = 30;
//int d, e;
//d = 40;
//e = 50;
//int f,int g; //错误
//int h; int i; //正确
}
}
2、浮点型
浮点类型用于表示有小数部分的数值。在Java中有两种浮点类型,如下:
浮点数 占用字节数
float 4
double 8
double表示这种类型的数值精度是float类型的两倍(又称双精度数值)。绝大数的应用程序都采用double类型。在很多情况下,float类型的精度很难满足需求。比如:需要快速地处理单精度数据,或者需要存储大量数据。
float类型的数值有一个后缀F(例如:3.14F)。没有后缀F的浮点数组默认为double类型。当然,也可以在浮点数值后面添加后缀D(例如:3.14D)。
我们要注意的是:单精度浮点数用F或者f标记。建议使用F。
3、char类型
char类型用于表示单个字符。通常用来表示字符常量。例如:'A’是编码为65所对应的字符常量。它与“A”不同,“A”是一个包含字符。Uniocde编码单元可以表示16进制值,其范围从\u0000到\uffff。
如下我写的案例说明:字符是一数字
public class CharDemo {
public static void main(String[] args) {
char c = '田';
int i = c;
System.out.println(i);
c = '野';
i = c;
//内存2进制i——> 10进制 ->显示10进制
System.out.println(i);
//内存2进制:37326 -> 查找字库中的字模
// -> “野”
System.out.println(c);
//字符是一个数,可以利用数字进行
//初始化,但是数字不能超过char范围。
//c 的类型是char,赋值30000,编码
//为30000的字符'田'
c = 30000;
//按照char类型输出
System.out.println(c); //田
//如下代码输出结果:没有对应字模可以显示
c = 65534;
System.out.println(c);
//使用整数对char进行赋值,不能超过char
//的范围!否则编译错误
//c = 65536;
//c = 65532+6;//字面量的运输结果也不能超范围
//使用16进制unicode进行赋值
// 20013 == 4e2d
c = 20013;//10进制unicdoe编码
System.out.println(c);
c = '\u4e2d';//16进制unicode编码
System.out.println(c);
//转义字符
//将回车赋值给字符类型的办法:转义字符
c = '\n';// c 是回车字符
//如果输出c,在屏幕上回显示一个回车
System.out.println(c);
//在Java中,'\n' 代表回车
//在Java中,'\'' 代表单引号
c = '\'';
System.out.println(c); //输出单引号
c = '\"'; //在Java中,'\"' 代表双引号
System.out.println(c);//输出双引号
c = '\\'; //在Java中,'\\' 代表斜线
System.out.println(c);//输出 \
}
}
4、boolean类型
boolean(布尔)类型有两个值:false和true,用来判定逻辑条件。整形值和布尔值之间不能进行相互转换。
用途:表示是否成立的两种状态。boolean类型占8位,相当于1个字节。
我写的案例代码如下:
boolean running;//正在跑,正在运行中
running = true;//成立
running = false;//不成立
boolean gameOver = true;//游戏结束成立
boolean isMan = true; //成立,纯爷们
boolean started = true; //已经开始=成立
数据类型转换
引子:
char c = '中';
int i = c; //将字符类型赋值给int类型
Java 中范围小数据类型可自动转换为范围大的数据类型,转换期间一般没有损失。
如下案例代码:
/*
* 测试自动类型转换
* 小范围到大范围的转换
*/
byte b = 120;
long l = b;//自动类型转换
double d = b;//自动类型转换
System.out.println(l);//120
System.out.println(d);//120.0
char c = '中';
int i = c;//自动类型转换
System.out.println(i);