数据类型

Posted 非凡起航

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据类型相关的知识,希望对你有一定的参考价值。

一、说明

Java是强类型的语言,所有的变量必须先声明,再使用。
指定类型的变量,只能装对应数据类型的数据。

二、分类

基本数据类型:只有8个(byte/short/int/long/float/double/char/boolean)
引用数据类型:类、接口、数组。。。。

三、8个基本数据类型

整型:byte/short/int/long
浮点型:float/double
字符型:char
布尔型:boolean

字节:一个字节=8位(1Byte=8bit)

1、整型:
1个byte为1个字节(-128到127)256B,红白机。
1个short为2个字节(-2的15次方 到 2的15次方-1)即(-32768到32767)64KB
1个int为4个字节(-2的31次方 到 2的31次方-1)4G
1个long为8个字节(-2的63次方 到 2的63次方-1)2的24次方个TB

注意:
A、最高位为符号位:0为正,1为负。
B、所有数字在计算机中都是以补码形式保存的。
C、整型的表述形式有:二进制、十进制、八进制、十六进制。
D、当我们直接使用一个整数时,默认是int型。如果想使用long型,后面加L或l。
E、当直接写一个整数时,默认为int型,但是
如果它在byte、short的表数范围内,而且程序直接交它赋值给byte、short类型变量时,
系统会自动将它当成byte、short使用。

2、浮点型:(支持小数)
1个float由4个字节
1个double由8个字节

浮点数的表数形式:
1)十进制形式: 5.12 0.12 .12(当没有整数部分时,0可以省略)
2)科学计数法: .12e4(相当于 0.12 * 10的4次方 = 1200.0)

注意:
A、浮点数默认为double型。
B、如果想想使用float型,后面加上F或f。
C、推荐使用double型。*

浮点数有三个特殊的值:
正无穷大(Double.POSITIVE_INFINITY):
用一个正浮点数除以0或0.0可以得到正无穷大。所有的正无穷大都相等。
负无穷大(Double.NEGATIVE_INFINITY):
用一个负浮点数除以0或0.0可以得到负无穷大。所有的负无穷大都相等。
非数(Double.NaN):
用0.0除以0得到非数。非数与自己都不想等。


补充知识:仅做了解
8.125F底层是怎么储存的:
float型把32位分为三部分,1个符号位,8个幂指位,23个数值位。

0 00000000 00000000000000000000000
0 10000010 00000100000000000000000


3、字符型:
1、每个字符型变量,只能【装一个字符】,而且必须使用【单引号】包起来。
2、每个字符占两个字节(16bit),共可以表示65536个字符。
3、字符型的变量,最高位依然是数值位,没有符号位,直接可以做“正整数”使用(范围:0到65535)。
4、字符型的表示(共有4种表示方式):
1)可以是英文、中文、数字、各种符号(‘1‘/‘A‘/‘中‘)。
2)转义字符:有特殊意义的字符。(‘\n‘、‘\r‘、‘\t‘、‘\b‘、‘\"‘、‘\‘‘、‘\\‘)。
3)直接使用ASCII编码(不需要加引号):存储的字符型底层都是数字,可以转成(int)型进行查看。(97、65、48、13)
4)使用Unicode值:由于一个字符占16bit,因此可以使用4个16进制数来表示。(‘\u0041‘、‘\u1a3d‘)

 

4、布尔型(boolean):只有两个值true、false。
主要用于流程控制。

 

四、类型转换(7个数值型 + 1个boolean型)

1、自动类型转换:表数类型小的,可以自动转换为表数范围大的。
2、强制类型转换:当我们要把表数范围大的变量或值,转换为表数范围小的,就需要使用强制类型转换。
     强制类型转换语法:(类型) ————但是强转可能会引起精度丢失。

 

五、表达式类型的自动提升
1、整个表达式的数据类型,与表达式中最高等级的运算数类型相同。一个int型与另一个int型计算,最终结果还是int型。

Int i = 0;
i=+1;
System.out.println(i); //这样写是没有问题的

Float f=(float) 0.0;
f=+1;        
System.out.println(f);//这样写出现类型装换异常
//应为
f=(float)+1

 

以上是关于数据类型的主要内容,如果未能解决你的问题,请参考以下文章

对“xxx”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们。 错误解决一例。(代码片段

视图或片段库为常见数据类型组成 UI

一个具有两种显示类型的片段[关闭]

(转) Java中的负数及基本类型的转型详解

从 Apollo 缓存中读取特定类型的所有片段

Android 上的 Kotlin:如何在片段中使用数据库中的 LiveData?