Java中数据类型分为两大类: 基本数据类型、引用数据类型。
· 基本数据类型:(只包含具体的数据,不牵扯内存关系)
|· 数值型:
|· 整型:byte(8位)、 short(16位)、int(32位)、long(64位); ——>默认值: 0
|· 实型(浮点型): float(32位)、double(64位); ——>默认值: 0.0
|·字符型: char(2位); ——>默认值: '\u0000'
|· 布尔型:boolean; ——>默认值: false
·引用数据类型:类、数组、接口. ——>默认值: null
byte < short < int < long < float < double
表达式中如果有double,结果就是double类型
表达式中如果有float,结果就是float类型
表达式中如果有long,结果就是long类型
其余的都是int类型
· 表示整数用int、表示小数用double;
· 在进行数据传输和字符转码的过程之中用byte;
· 表示日期时间或文件大小时用long;
· 表示逻辑关系的时候用boolean。
·整型
public class TestDemo {
public static void main(String args[]) {
int num;
System.out.println(num);
}
}
错误:
局部变量 num 可能尚未初始化
注:变量在使用前一定要初始化,不要依靠系统提供的默认值。
public class TestDemo {
public static void main(String args[]) {
int max = Integer.MAX_VALUE; // 取得int的最大最
int min = Integer.MIN_VALUE; // 取得int的最小值
System.out.println(max); // 最大值:2147483647
System.out.println(min); // 最小值:-2147483648
//int型 + int型 = int型
System.out.println(max+1); // 最大值 + 1 = -2147483648(最小值)
System.out.println(max+2); // 最大值 + 2 = -2147483647 (次最小值)
//int型 - int型 = int型
System.out.println(min - 1); // 最小值 - 1 = 2147483647(最大值)
}
}
注:发现据是一个循环过程,最大值继续进行加法计算则变为最小值,最小值继续进行减法计算将变为最大值,这一概念属于数据的溢出。
解决数据溢出的唯一途径是扩大使用的数据范围。
将int变为long,有两种方式:
方式一: 在数字前加上一个 "(long)"
long x = (long) 10; // int 变为long
方式二: 在数字后面加上一个字母"L"
long x = 10L; // int 变为long
public class TestDemo {
public static void main(String args[]) {
int max = Integer.MAX_VALUE; // 取得int的最大最
int min = Integer.MIN_VALUE; // 取得int的最小值
System.out.println(max); // 最大值:2147483647
System.out.println(min); // 最小值:-2147483648
//int型(自动向上变为long) + long型 = long型
System.out.println(max+1L); // 2147483648
System.out.println(max+(long)2); // 2147483649
//int型(自动向上变为long) - long型 = long型
System.out.println(min - 1L); // -2147483649
long x = 10L; // int 变为long
}
}
结论: 当范围小的数据类型与范围大的数据类型一起进行数学计算时,范围小的数据类型会自动的变为范围大的数据类型,当类型统一之后再进行数学计算。byte ——>short——>int——>long——>float——>double
范围大的数据类型如果要变为范围小的数据类型,一定要使用强制转换,但是这之中有可能出现数字的错乱。
public class TestDemo {
public static void main(String args[]) {
int num = 129;
byte b = (byte) num; //强制转换
System.out.println(b);
}
}
运行结果:
-127
任何一个整数在java中都是一个int类型的常量。如果不在byte范围之中的整型常量,则需要执行强制转型。
例一:
public class TestDemo {
public static void main(String args[]) {
byte b = 1000;
System.out.println(b);
}
}
- 类型不匹配:不能从 int 转换为 byte
例二:
public class TestDemo {
public static void main(String args[]) {
byte b = 100;
System.out.println(b); //100
}
}
· 实型数据:(float、double)
在程序中默认的小数类型为double,double式范围最大的数据类型。
public class TestDemo {
public static void main(String args[]) {
double num = 10.2; //小数为double类型
System.out.println(num);
//double型 * int型(变为double型) = double型
System.out.println(num *2);
}
}
运行结果:
10.2
20.4
如果使用float类型,一定要执行强制类型转换。转换形式有两种;
· 形式一: (float)变量;
· 形式二: 在数字之后使用字母"F"表示。
示例:
public class TestDemo {
public static void main(String args[]) {
float num = 10.2
System.out.println(num);
}
}
语法错误,将“;”插入到完整 BlockStatements 中
类型不匹配:不能从 double 转换为 float
正确用法:
public class TestDemo {
public static void main(String args[]) {
float num = 10.2F;
System.out.println(num); //10.2
}
}
建议小数以double为主
·字符型数据
所谓字符数据指的是使用"'"声明的一个字符信息。字符使用char表示,char和int可以进行相互转换的。
public class TestDemo {
public static void main(String args[]) {
char c = 'a';
int num = c;
System.out.println(num); //97
}
}
字母和数值之间的转换是有一定的数据联系的:
· 大写字母(A~Z) : 65~90;
· 小写字母 (a~z) : 97~122;
· 数字字母 (0~9) : 48~57;
public class TestDemo {
public static void main(String args[]) {
char c = 'A';
int num = c;
num = num + 32;
System.out.println(num); //97
System.out.println((char) num); //a
}
}
·布尔型数据
Boolean数据类型只有两种:true、false。
在一些其它语言中(不支持布尔型数据的)可能使用 0 表示 false,1 表示 true。
但在java中布尔型只能是 true 和 false。
·字符串类型
java 中使用 String 类表示字符串。使用 “"" 声明得到数据表示一个字符串。
public class TestDemo {
public static void main(String args[]) {
String str = "Hello ";
str = str + "World";
System.out.println(str); //a
}
}
运行结果:
Hello World
注:在字符串之中 "+" 表示字符串连接操作。
public class TestDemo {
public static void main(String args[]) {
int numA = 10;
double numB = 20.1;
String result = "计算结果: " + numA + numB;
System.out.println(result);
}
}
运行结果:
计算结果: 1020.1
在 java 里面任何的数据类型,只要与 String 进行了 "+" 连接操作,都表示所有的类型自动变为 String 后进行连接操作。为了正确只能使用 "( )" 改变优先级。
转义字符: \n (换行)、\t (Tab) 、\" ( " ) 、\' ( ' ) 、\\ ( \ )
public class TestDemo {
public static void main(String args[]) {
int numA = 10;
String result = "\t\"Hello \'World .\n 你好!";
System.out.println(result);
}
}
运行结果:
"Hello 'World .
你好!