(1)常用基本类型汇总
八种基本类型汇总
八种基本类型的字节空间和应用场景
(2)byte类型
基本介绍:
byte数据类型是8位、有符号的,以二进制补码表示的整数;
最小值是-128(-2^7);
最大值是127(2^7-1);
默认值是0;
例如:byte bt = 120;
(3)short类型
基本介绍:
short数据类型是16位、有符号的以二进制补码表示的整数
最小值是-32768(-2^15);
最大值是32767(2^15 - 1);
默认值是0;
例如: short st = 32700;
(4)Int类型
基本介绍:
Int是最常用的整数类型。一个int类型的变量占用4个字节(32位),最大表示范围为:-2^31~2^31-1,即-2147483648~2147483647。
默认值是0;
整型变量的注意事项:
整数的直接量的类型默认为int类型,如果直接写出的整数超过了int的表达范围,编译报错;
int one = 80000000000000000000000;//超出范围,编译错误
除了通常的十进制书写形式,整数的直接量也经常写16进制的相识(0X或0x开头)或者8进制形式(O开头);
int two=529; //10进制
int three=0x347a; //16进制
int four=030; //8进制
两个整数相除,会舍弃小数的部分(不是四舍五入),结果也是整数;
int data1 = 49;
int data2 = 79;
int dataT = data1/data2;//dataT结果为0,因为49除以79的整数部分为0
整数运算的溢出:两个整数进行运算时,其结果可能会超过整数的范围而溢出。正数过大而产生的溢出,结果为负值;负整数过大而产生的溢出,结果为正数
int number=2147483647;
int score=-2147483648;
number= number+1;//结果为-2147483648
score = score -1; //结果为2147483647
(5)Long类型
基本介绍:
一般如果int类型的范围不够,可以使用long类型,一个long类型的变量占用8个字节(64位),最大表示范围为:-2^63~2^63-1,即-9223372036854775808~223372036854775807
默认值是0L;
注意:如果用long类型,则需要以L或l结尾
long gg = 44;//错误
long gg = 44L;//正确
long类型变量的典型应用场景:
超过int类型范围的数据,可以用long类型;
比如:long yy = 3147483647L;
(6)浮点数类型
基本介绍:
浮点数,就是小数,包括float和double;
float默认值是0.0f;
double默认值是0.0d;
double类型的精度值是float类型的两倍,一般场合使用double类型。
例如:double tt = 4.7;
浮点数的写法:
通常写法,如:3.68、.3
科学计数法,如:2.17E2
默认的浮点为double类型,如果需要表示float类型的直接量,需要加”f”或”F”后缀。例如:
float ff=6.29; //编译错误,应该写成6.29f
(7)char类型
基本介绍:
char类型事实上是一个16位无符号整数,这个值是对应字符的编码;
Java字符串类型采用Unicode字符集编码。Unicode是世界通用的长度字符集,所有的字符串都是16位;
Char类型变量赋值,可以采用如下三种形式:
字符:形如’A’,变量中实际存储的是该字符的Unicode编码(无符号整数值),一个char型变量只能存储一个字符。
整型数据:范围在0~65535之间的整数,变量中实际存储的即该整数值,但表示的是该整数值所对应的Unicode字符。
Unicode形式:形如’\u0041’,Unicode字符的16进制形式。
例如:char cr1= 705;
char cr2=’N’;
char cr3=’\u0031’;
特殊的字符:转义字符
(8)boolean类型
基本介绍:
boolean类型适用于逻辑运算,表示某个条件是否成立。一般用于程序的流程控制;
boolean类型只允许取值true或false,true表示条件成立而false表示条件不成立。
boolean默认值是false;
例如:int a = 9;
int b = 10;
Boolean isBig = b>a;//输出为true
(9)类型之间的转换
基本介绍:
不同的基本类型直接可以相互转换
自动类型转换(隐式类型转换):从小类型到大类型可以自动完成。类型的大小关系如下:
强制转换:从大类型到小类型需要强制转换符,但这样转换有可能会造成精度损失或溢出。
int onef=654;
int twof=957;
long threef= onef + twof; //自动将int转换为long
long numberf=9967L;
int af=(int) numberf; //需要强制转换符,由于9967在int范围内,没有产生溢出
long scoref=5147483647L;
int bf=(int) scoref; //会产生溢出,结果为0
double ttf=7.55684954444444444;
float rrf=(float) ttf;//会造成精度的损失,结果为7.5568495
几种特殊转换:
多种基本类型参与的表达式运算中,运算结果会自动的向较大的类型进行转换;比如:
int a = 4;
double c = a/b;//结果为0.4,自动转换为double类型
byte、char、short三种类型实际存储的数据都是整数,在实际使用中遵循如下规则:
Int直接量可以直接赋值给byte、char和short,只要不超过其表示范围。
byte、char、short三种类型参与运算时,先一律转换成int类型再进行运算。
(10)代码实例
package com.example.var;
public class DataType {
public static void main(String[] args) {
byte bt = 120;
System.out.println(bt);
short st = 32700;
System.out.println(st);
System.out.println(two);
System.out.println(three);
System.out.println(four);
int dataT = data1/data2;
System.out.println(dataT);
System.out.println(number);
System.out.println(score);
long gg= 44L;//正确
long yy = 3147483647L;
System.out.println(yy);
double tt = 4.7;
System.out.println(tt);
char cr1= 705;
char cr2='N';
char cr3='\u0031';
System.out.println(cr3);
int a = 9;
Boolean isBig = b>a;
System.out.println(isBig);
long scoref = 5147483647L;
System.out.println(scoref);
float rrf=(float) ttf; //会造成精度的损失,结果为7.5568495
System.out.println(rrf);
}
}