Java之基本数据类型

1、数据类型

在Java中支持的数据类型分为两种:基本数据类型与引用数据类型;基本数据类型总共有八种:布尔型boolean,数值类型中整数类型为:byte,short,int,long,char(相当于无符号整数类型),浮点类型为:float,double;引用数据类型包括类、接口和数组,还有一种特殊的null类型。数据类型

2、基本数据类型

基本数据类型有八种:

2.1、整型

  • byte:一个byte类型整数在内存里占8位,表数范围是:-128~127
  • short:一个short类型整数在内存里占16位
  • int : 一个int类型正数在内存里占32位
  • long:一个long类型整数在内存里占64位
    int 是最常用的数据类型,因此在通常情况下,给定的一个整数值默认为int类型的。
    如果把一个较小的数值赋给byte或者short变量,系统会自动把这个整数值当成byte或者short类型处理;如果使用一个巨大的整数值(超过int范围),java不会把数值当成long类型处理,若想将该数当成long类型处理的话,必须在后面加上“l”或“L”后缀;
//下面代码正确
byte a=56;
//错误;999999999999999999999(超过了int范围)默认为int类型
long b=999999999999999999999;
//正确
long b=999999999999999999999L;
//正确(自动类型转换)
long b=999;

2.2、字符型

  • 字符型通常用于表示单个字符;字符型值必须使用单引号(‘’)括起来;
  • 字符型在内存中占用“2字节”,
  • char类型的变量,值完全可以参与加、减、乘、除等数学运算,也可以比较大小,对应的Unicode编码
  • 一个汉字占两个字节
  • 字符型常量的三种表现形式:
    1)、字符常量是用单引号( ‘’ )括起来的单个字符,涵盖世界上所有书面语的字符。例如:
    char c1 = ‘a’;
    char c2 = ‘中’;
    char c3 = ‘9’;
    2)、Java 中还允许使用转义字符 ‘’ 来将其后的字符转变为特殊字符型常量。
    例如:char c3 = ‘\n’; \n 表示换行符
    3)直接使用 Unicode 值来表示字符型常量:’\uXXXX’。其中,XXXX 代表一个十六进制整数。 如:\u000a 表示 \n

2.3、浮点型

Java中浮点型分为两种float,double:

  • float:单精度浮点数,占内存4字节,32位;
  • double:双精度浮点型,占内存8字节,64位;
    Java语言中默认的浮点类型位double类型,声明 float 型常量,须加“f”或“F”后缀
    浮点型常量有两种表示形式:
  • 十进制数形式,如:5.12 512.0f .512 (必须有小数点)
  • 科学记数法形式:如:5.12e2 512E2 100E-2

注意:Java浮点数使用二进制数据的科学记数法来表示浮点数,因此不可能精确表示一个浮点数。


Java还提供了三个特殊的浮点数值:正无穷大,负无穷大,非数,用于表示溢出和出错
例如:一个正浮点数除以0,或一个整数除以0.0,得正无穷,负数也是如此,得负无穷,0.0除以0.0得非数。
代码如下:

	System.out.println(2.30/0);//Infinity(正无穷)
	System.out.println(2/0.0);//Infinity
	System.out.println(2.3/0.0);//Infinity
	System.out.println(-2.60/0);//-Infinity(负无穷)
	System.out.println(-6/0.0);//-Infinity
	System.out.println(-2.60/0.0);//-Infinity
	System.out.println(0.0/0.0);//NaN(非数)
		
//所有得正无穷都相等,所有负无穷都相等,而NaN不与任何数相等,NaN与NaN都不想等

只有浮点数除以0,才可以得到正无穷大,或负无穷大。一个整数除以0,会抛出一个算数异常(除以0异常)

2.4、布尔型

在 Java 中,布尔类型用 boolean 来表示。在内存中分配8位,1字节。boolean 类型适于逻辑运算,一般用于程序流程控制。还可以用在三目运算符中。

布尔类型的值只能是true/false,不能用0或非0代表。其他基本数据类型也不能转换成boolean类型

3、基本数据类型的转换

不同基本数据类型之间需要进行转换,转换方式可分为两种:自动类型转换和强制类型转换

3.1 自动类型转换

  • 当一个表数范围小的数值或变量赋值给一个表数大的变量是=时,系统就进行自动类型转换。表述小的可以向表数大的进行自动类型转换,如同:一杯水倒进一个桶里。
  • 任何基本类型的值与字符串进行运算时,基本数据类型的值都会自动转型为字符串类型
	System.out.println("hello"+3+4);//hello34
	System.out.println(3+4+"hello");//7hello

byte,short,char 之间不会相互转换,他们三者在计算时首先转换为 int

3.2、强制类型转换

将容量大的数据类型转换为容量小的数据类型,使用时要加上强制转换符(());强制类型转换就类似于把桶里面的水倒进一个杯子里面。所以可能造成精度降低或溢出。

注:boolean 类型不可以转换为其它的数据类型。

//错误,2默认为int类型
short s = 5;
s = s-2;
//错误,第二行4默认为int类型,不能转换为byte
byte b = 3;
b = b + 4;
b = (byte)(b+4;
//正确
byte b = 3;
b = (byte)(b+4;
//第三句错误,byte,short之间不能相互转换
byte b = 5;
short s = 3;
short t = s + b
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值