java基础之基本数据类型详解

一、整型

1、byte,一个字节8位(1位符号,7位数字),取值范围-128(-2^7)到127

2、short,两个字节16位(1位符号,15位数字),取值范围-32,768(-2^15)到32,767

3、int,四个字节32位(1位符号,31位数字),取值范围-2,147,483,648(-2^31)到2,147,483,647

4、long,八个字节64位(1位符号,63位数字),取值范围-9,223,372,036,854,775,808(-2^63)到2^63-1

特别注意

1、java中整型默认存储为32位的int类型。比如byte本身为8位,在赋值的时候直接将前24位的0删除掉。

2、当long的取值超过int范围,则必须在结尾加L标识,在int取值范围内无需加L。

3、在实际开发中整型尽可能使用int类型,当int会出现溢出时使用long类型。

4、特别注意整型的取值范围,尤其是java变量可能会出现溢出的情况,系统不会有任何提示,但是得到的结果会有差异,示例参考java整型变量数值溢出示例

long long0 = 21;
long long1 = -2147483648;
long long2 = 2147483647;
long long3 = 2147483648L;

二、浮点型

javaé¢è¯å®ï¼Double为ä»ä¹ä¼ä¸¢å¤±ç²¾åº¦ï¼è§£å³æ¹æ³ï¼ç­åºç»1ä¸æèª

1、float,四个字节32位(1位符号位,8位指数位,23位尾数部分),取值范围整数部分为-2^128(-3.40*e^38)到2^128,精度为2^23*2(16777216),即有效数字为7到8位。

2、double,八个字节64位(1位符号位,11位指数位,52位尾数部分),取值范围整数部分为-2^1024(-1.79*e^308)到2^1024,精度为2^52*2(9007199254740992),即有效数字为16到17位。

特别注意

1、java中浮点型默认存储为double类型,在实际开发中浮点型尽可能使用double类型。

2、在定义float类型时,需要在结尾加F标识。

float float0 = 2.25F;

3、float和double都无法表示精确的值,会出现丢失精度问题,如下。所以一般涉及到精确的商业计算要使用BigDecimal。

double double1 = 0.30;
double double2 = 0.20;
//0.09999999999999998
System.out.println(double1-double2);

三、字符型

char,两个字节16位,表示一个单一的Unicode字符,可以储存任何字符(包括汉字),运算时直接当对应的ASCII码做整数运算。

char a = 'a';
char b = '王';
char c = 150;
//-                                                          
System.out.println(c);
//16进制Unicode码
char d = '\u0045';
//E
System.out.println(d);

四、布尔型

boolean,只用来表示true/false,默认是false。

五、基础类型转换以及相应问题

1、小容量-->大容量,直接转

char g = 152;
byte a= 12;
short b = 15;
int c = 56;
long d = 9666L;
float e = 2.5F;
//float-->double
double m = e;
//long-->float
float k = d;
//int-->long
long v = c;
//char-->int
int n = g;
//byte-->int
int h = a;

2、大容量-->小容量,需要强转

//double-->float
float k = (float) f;
//double-->long
long v = (long)f;
//double-->int
int n = (int) f;
//int-->char
char h = (char)a;

3、强转会导致的问题有:损失精度、数值溢出

浮点型转整型,会直接抹掉小数部分,而不会采取进位方式

double f = 5.999;
//double-->int
int n = (int) f;
//5
System.out.println(n);

如果转之前的数值超出了转之后的取值范围,会出现数值溢出,导致数值出现很大差异

double f = 616.999;
//double-->int
byte n = (byte) f;
//104
System.out.println(n);

4、char和byte、short的互转都需要强转

char g = 152;
byte a= 12;
short b = 15;
char p = (char) b;
char r = (char) a;
byte l = (byte) g;
short v = (short) g;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值