JAVA基础(四)数据类型

数据类型一些整理及分类

 

目录

一、8大基本数据类型

1、字节型

2、短整型

3、整型

4、长整型

5、单精度浮点型

6、双精度浮点型

7、字符型

8、布尔型

二、 引用类

1、常用引用类

2、引用类的使用方式

三、数据类型转换

1、隐式转换(自动类型转换)

2、显式转换(强制类型转换)


一、8大基本数据类型

1、字节型

字节型 ,单位:byte, 长度: 1,取值范围:-128~127    2的7次方

字节由8位的二进制组成

Byte s1=00000001;
System.out.println(s1);//1

 进制转换

2进制转10进制

整数二进制用数值乘以2的幂次依次相加

10010111

十进制=151

1*2^7+0*2^6+0*2^5+1*2^4+0*2^3+1*2^2+1*2+1*2^0

PS:末尾位是2的零次幂,所以是1

 

10进制转2进制

以54为例,步骤如下:

54/2=27.......0

27/2=13.........1

13/2=6............1

6/2=3............0

3/2=1............1

1/2=0............1

则54(十进制)=110110(二进制)

2、短整型

短整型 ,单位:short, 长度: 2,取值范围:-32768~32767    2的15次方

short 短整形 最大为32767(5位)

short a1=32767;
System.out.println(a1);//32767

3、整型

整型 ,单位:int, 长度: 4,取值范围:-2147483648~2147483647  2的31次方

//int 整形 最大为2147483647(10位)

int a2=2147483647;
System.out.println(a2);//2147483647

4、长整型

长整型 ,单位:long, 长度: 8,取值范围:-9223372036854775808L~9223372036854775807L    2的63次方

long 长整型 最大为9223372036854775807L(16位)

long a3=922337203685477580L;
System.out.println(a3);//922337203685477580L

5、单精度浮点型

单精度浮点型 ,单位:float, 长度: 4,取值范围:+/-3.4E+38F(6~7 个有效位)

float 单精度浮点型 最大小数点8位

float a4=0.12345678F;
System.out.println(a4);//0.12345678

6、双精度浮点型

双精度浮点型 ,单位:double, 长度: 8,取值范围:+/-1.8E+308 (15 个有效位)

//double 双精度浮点型 最大小数点16位

double a5=0.1234567890123456;
System.out.println(a5);//0.1234567890123456

7、字符型

字符型 ,单位:char, 长度: 2,取值范围 ISO单一字符集

char 占用2位,可以直接赋值一个 字母、数字、中文、或者一个数字范围0~65565

赋值数字范围时,每个数字代表一个字符

        char a6='陈';
        char a7='c';
        char a8='1';
        char a9=6556;
        char a10=99;
        System.out.println(a6);//陈
        System.out.println(a7);//c
        System.out.println(a8);//1
        System.out.println(a9);//ᦜ
        System.out.println(a10);// c
        System.out.println(a7==a10);// true

8、布尔型

boolean 布尔类型 大小1字节 true/false

二、 引用类

1、常用引用类

包装类(Byte、Short、Integer、Long、Float、Double、Boolean)

与八大基本数据类型一致,一一对应的包装类

Byte b=new Byte("001");
System.out.println(b);//1

Short s=new Short("32767");
System.out.println(s);//32767

Integer s=new Integer("2147483647");
System.out.println(s);//2147483647

Long s=new Long("9223372036854775807");
System.out.println(s);//9223372036854775807

Float s=new Float("0.12345678");
System.out.println(s);//0.12345678

Double s=new Double("0.1234567890123456");
System.out.println(s);//0.12345678

Boolean s=new Boolean("true");
System.out.println(s);//true

Character s=new Character('a');
System.out.println(s);//a

、枚举类、String类、Object。。。。

2、引用类的使用方式

1、强引用(StrongReference)

强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。

当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,

也不会靠随意回收具有强引用的对象来解决内存不足的问题。

ps:强引用其实也就是我们平时A a = new A()这个意思。

2、软引用(SoftReference)

如果一个对象只具有软引用,则内存空间足够,垃圾回收器就不会回收它;

如果内存空间不足了,就会回收这些对象的内存。

只要垃圾回收器没有回收它,该对象就可以被程序使用。

软引用可用来实现内存敏感的高速缓存

3、弱引用(WeakReference)

弱引用与软引用的区别在于:只具有弱引用的对象拥有更短暂的生命周期。

在垃圾回收器线程扫描它所管辖的内存区域的过程中,一旦发现了只具有弱引用的对象,不管当前内存空间足够与否,都会回收它的内存。

不过,由于垃圾回收器是一个优先级很低的线程,因此不一定会很快发现那些只具有弱引用的对象。

4、虚引用(PhantomReference)

“虚引用”顾名思义,就是形同虚设,与其他几种引用都不同,虚引用并不会决定对象的生命周期。

如果一个对象仅持有虚引用,那么它就和没有任何引用一样,在任何时候都可能被垃圾回收器回收。

虚引用主要用来跟踪对象被垃圾回收器回收的活动。

三、数据类型转换

1、隐式转换(自动类型转换)

以下类型左到右,直接转换,不会出现报错提示

数值型数据的转换:byte→short→int→long→float→double。

字符型转换为整型:char→int。

注:

float 和 double 相加会增加小数点,float转成double会有值的增加(不建议这么玩)

char 类型比较特殊,char 自动转换成 int、long、float 和 double,

但 byte 和 short 不能自动转换为 char,而且 char 也不能自动转换为 byte 或 short。

float a1=10.1f;
int a2=2;

double a3=10.2;
int a4=2;
System.out.println(a1*a2);//20.2
System.out.println(a3*a4);//20.4
System.out.println(a1*a2+a3*a4);//40.60000076293945

2、显式转换(强制类型转换)

这种转换不会自动进行,因为 double 型的变化范围比 int 型的要小。

这种转换有使成为“缩小转换”,因为你肯定要将源数据类型的值变小才能适合目标数据类型。

所以当两种数据类型不兼容,或目标类型的取值范围小于源类型时,自动转换将无法进行,这时就需要进行强制类型转换

转换方式:(type)variableName

int a=3;
double b=5.0;
a=(int)b;

大转小会造成精度丢失(不建议这么玩)

 

参考

http://c.biancheng.net/view/796.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值