【Java】基本数据类型与数据类型转换

132 阅读4分钟

本人已参与「新人创作礼」活动,一起开启掘金创作之路。

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第16天,点击查看活动详情

目录

02381310.jpg 今天阿文介绍的内容为:

  • Java的基本数据类型
  • 数据类型转换

1.Java基本数据类型

在Java中变量就是申请内存来存储值的,当我们创建变量的时候,需要申请内存空间去保存变量的值,内存管理系统会根据变量的类型为变量分配存储空间,分配的空间只能用来存储该类型的数据。

Java基本数据类型1.png

所以,通过定义不同类型的变量,可以在内存中存储整数、小树或者字符

Java有两大数据类型:

  • 内置数据类型
  • 引用数据类型

1.1内置数据类型

Java语言提供了八种基本类型。6种数字类型,1种字符类型,还有1种布尔类型

数据类型占位数符号最大值最小值默认值
byte8位有符号127(2^7-1)-128(-2^7)0
short16位有符号32767(2^15-1)-32768(-2^15)0
int32位有符号2,147,483,647(2^31-1)-2,146,483,648(-2^31)0
long64位有符号9,223,372,036,854,775,807(2^63 -1)-9,223,372,036,854,775,808(-2^63)0L
float32位有符号3.4028235E381.4E-450.0f
double64位有符号1.7976931348623157E3084.9E-3240.0d
boolean1位无符号只有两值0和1false
char16位无符号\u0000(十进制等效值为0)\uffff(即65535)无默认值

对于数据类型的取值范围大家不需要强制的去记住,因为在Java当中已经有以常量的形式定义在对应的包装类中了:

例如:

public class PrimitiveTypeTest {  
    public static void main(String[] args) {  
        System.out.println("基本类型:int 二进制位数:" + Integer.SIZE);  
        System.out.println("包装类:java.lang.Integer");  
        System.out.println("最小值:Integer.MIN_VALUE=" + Integer.MIN_VALUE);  
        System.out.println("最大值:Integer.MAX_VALUE=" + Integer.MAX_VALUE);  
        System.out.println();  
    }

输出结果为:

Java基本数据类型2.png

其他的基本数据类型也是同理

数据类型的二进制位数最大值最小值包装类
Byte.SIZEByte.MIN_VALUEByte.MAX_VALUEjava.lang.Byte
Short.SIZEShort.MIN_VALUEShort.MAX_VALUEjava.lang.Short
Integer.SIZEInteger.MIN_VALUEInteger.MAX_VALUEjava.lang.Integer
Long.SIZELong.MIN_VALUELong.MAX_VALUEjava.lang.Long
Float.SIZEFloat.MIN_VALUEFloat.MAX_VALUEjava.lang.Float
Double.SIZEDouble.MIN_VALUEDouble.MAX_VALUEjava.lang.Double
Character.SIZECharacter.MIN_VALUECharacter.MAX_VALUEjava.lang.Character

1.2引用类型

  • 在Java中,引用类型的变量非常类似于C/C++的指针。引用类型指向一个对象,指向对象的变量是引用变量。这些变量在声明时被指定为一个特定的类型,比如 Employee、Puppy 等。变量一旦声明后,类型就不能被改变了。
  • 对象数组都是引用数据类型。
  • 所有引用类型的默认值都是null
  • 一个引用变量可以用来引用任何与之兼容的类型。

1.3Java常量

所谓的常量是在程序当中不能修改的量。

在Java中,使用final关键字来修饰常量,声明方式和变量类似:

final double PI = 3.1415926;

为了比较容易的辨识常量和变量,所以我们通常将常量的变量名所有字母大写

在Java中,byte、int、long和short都可以使用十进制、八进制和十六进制来表示

例如:

int decimal = 100;//十进制
int octal = 0144;//八进制
int hexa = 0x32;//十六进制

java语言支持一些特殊的转义字符

符号字符含义
\n换行
\r回车
\f换页符
\b退格
\0空字符
\s空格
\t制表符
\"双引号
\'单引号
\\反斜杠
\ddd八进制字符
\uxxxx16进制Unicode字符(xxxx)

1.4自动类型转换

整型、实型(常量)、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算。

转换的规则是由低级到高级

Java基本数据类型3.png

数据类型转换必须满足如下规则:

  • 不能对boolean类型进行转换。
  • 不能把对象类型转换成不相关的对象。
  • 在把容量大的类型换换为容量小的类型时必须使用强制类型转换
  • 转换过程中可能导致溢出或损失精度,例如:
int i = 128byte j = (byte)i;

因为byte类型是8位,最大值为127,所以当int强制转换为byte类型时会导致溢出。

  • 浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入,例如:
(int)23.7 == 23;
(int)-45.889f == -45

两个结果返回的都是true。

1.5隐含强制类型转换

  • 整数的默认类型为int
  • 小数的默认类型是double类型浮点型,在定义 float 类型时必须在数字后面跟上 F 或者 f。

总结

  • Java中的数据类型分为内置数据类型引用数据类型两大类
  • 数据类型转换的规则是由低级到高级

好了,今天阿文就介绍到这了... byebye