数据类型
强类型语言
- 要求变量的使用严格符合规定,所有的变量都必须先定义后才能使用
- 安全性高,但速度变慢
- 我们日常学习的Java也是一种强类型语言
弱类型语言
数据类型可以被忽略的语言。它与强类型定义语言相反, 一个变量可以赋不同数据类型的值。
Java的数据类型分为两大类
基本类型
(primitive type)
数据类型 | 关键字 | 内存占用 | 取值范围 |
---|---|---|---|
字节型 | byte | 1个字节 | -128—127 |
短整型 | shot | 2个字节 | -215—215-1 |
整型 | int(默认) | 4个字节 | -231—231-1 |
长整型 | long | 8个字节 | -263—263-1 |
单精度浮点数 | float | 4个字节 | 1.4013E-45~3.4028E+38 |
双精度浮点数 | double | 8个字节 | 4.9E-324~1.7977E+308 |
字符型 | char | 2个字节 | 0-65535 |
布尔类型 | boolean | 1个字节 | true / false |
小编在这里给大家举例
public class Hello {
public static void main(String[] args) {
//八大基本数据类型
//整数
int num1 = 10; //最常用
byte num2 = 20;
short num3 = 30;
long num4 = 30L; //Long类型要在数字后边加个“L”
//小数:浮点数
float num5 = 52.10000000F; //float类型要在数字后边加个“F
double num6 = 3.14159265;
//字符
char num7 = '中';
//字符串,String不是关键字,也不是类
//String name = "北屿";
//布尔值 只有“true”和“false”
boolean a = true;
boolean b = false;
}
}
如果大家不明白数据类型的取值范围,不知道这个数用什么类型,小编这里教大家一招
我们找到数据类型所对应的“类”,比如int
对应的是Integer
- 在IDEA空白初输入
Integer
- 按住
Ctrl
,用鼠标点击刚才输入的Integer
就能进入对应的“类”里
基本数据类型对应的类小编在这里都给大家整理好了
基本数据类型 | 对应名 | 对应类 |
---|---|---|
byte | Byte | java.lang.Byte |
short | Short | java.lang.Short |
int | Integer | java.lang.Integer |
long | Long | java.lang.Long |
float | Float | java.lang.Float |
double | Double | java.lang.Double |
boolean | Boolean | java.lang.Boolean |
char | Character | java.lang.Character |
引用类型
(reference type)
除了基本数据类型以外的数据都叫引用类型,这里小编能力有限,平时用的极少,就不跟大家细聊了嘻嘻嘻
类型转换
-
由于Java语言是强类型语言,所以要进行有些运算的时候,需要用到类型转换。
低-------------------------->高 byte short ==> int ==> long ==> float ==> double char
-
运算中,不同类型的数据先转换为同一类型,然后进行运算
-
自动转换:当数据类型比较小的转变成类型比较大的时候,不需要自动转换,本身可自动转换
即
-
强制转换当我们定义了一个比较大的类型的时候,这时候我们想转给比较小的类型的时候,但超出了小的范围,这时候就会出现以下报错
例如:
解决办法就是将类型进行强转
在我们定义的变量i
前边加上要转化的类型 即类型·
+变量名
这里i
的结果没错,但j
的值变成了复数,由于byte
类型的范围是 -128—127,比最大值大,所以这里就涉及到一个问题——内存溢出
注意:
-
不能对布尔类型转换
-
不能把对象类型转换为不相干的类型
-
在把高容量类型转换到低容量的时候,强制转换
-
转换的时候可能会存在内存溢出,或者精度问题!、
溢出问题
操作比较大的数的时候,注意溢出问题,小编在这里给大家举个例子看哦~
int
类型最大取值为21亿,这里用两个int类型范围内的数相乘的出来的结果远大于21亿,而控制台输出的结果却为负数,这是为什么呢?
因为在转换的时候已经存在问题了,所以在这里用更大类型的的long
或者float
以及double
是不行的
我们可以把代码像这样改写
先将一个数转换为long
类型,这样就能进行后续
什么是字节
-
位(bit):是计算机内部数据储存的最小单位,11001100是一个八位二进制数
-
字节(btye):是计算机数据处理的基本单位,习惯上用大写字母B来表示
-
1B(byte)= 8bit(位)
-
字符:是指计算机中使用的字母、数字、字和符号
-
1bti表示1位
-
1Byte表示一个字节 1B = 8b
-
1024B = 1KB
-
1024KB = 1M
-
1024M = 1G
-
1024G = 1T