(8)Java基础语法 --数据类型转换

目录

数据类型转换

一、数据类型转换有两种方式

二、转换规律

三、浮点数运算问题

四、类型转换练习


数据类型转换

一、数据类型转换有两种方式

自动类型转换(默认的类型转换)

      也叫向上转型。表示范围小的数据类型(如byte)可以直接转换成范围大的数据类型(如int),这种方式称为自动类型转换。

      格式:

            范围更大的数据类型 变量名 = 范围比较小的那个类型的数据;

强制类型转换

      也叫向下转型。表示范围大的数据类型(如int)不可以转换成范围小的数据类型(如byte),但可以强制转,这种方式称为强制类型转换。

      格式:

            范围小的数据类型  变量名 = (范围小的数据类型) 范围大的数据类型的数据;

二、转换规律

各种数据类型按照数据范围从小到大依次列出:范围小的类型向范围大的类型提升:byte- ->short=char‐‐>int‐‐>long‐‐>float‐‐>double

byte、short、char 运算时直接提升为int,同样的道理,当一个int 类型变量和一个double 变量运算时, int 类型将会自动提升为double 类型进行运算。

public static void main(String[] args) {
		
		byte a = 1;
		byte b = 2;
		int c = a+b;  // 正确,byte类型可以自动提升为int类型(小东西装大盒子中)
		
		int d = 1;
		int e = 2;
		byte f = (byte)(d+e);  // 这里需要强制类型转换,强制转换可能损失精度
}

浮点转成整数,直接去掉小数点,可能造成数据损失精度。

public static void main(String[] args) {
		double d = 3.14;
		int x = (int)d;
		System.out.println(x); //3  损失精度
}

int 强制转成byte砍掉3个字节,可能造成数据丢失(丢失精度)。

public static void main(String[] args) {
		int x = 128;
		byte b = (byte)x;
		System.out.println(b); // -128
}

三、浮点数运算问题

浮点数做运算结果不精确。

public static void main(String[] args) {
		double x = 1.0;
		double y = 0.9;
		double result = x-y;
		System.out.println(result); //0.09999999999999998
		
		double a = 0.1;
		double b = 0.2;
		double result2 = a+b;
		System.out.println(result2); //0.30000000000000004
}

四、类型转换练习

1、计算一年有多少毫秒(一年按365天计算)

public static void main(String[] args) {
		//int result = 365*24*60*60*1000;
		long result = 365*24*60*60*1000;    // 计算的结果已经超出了int类型的最大范围
		System.out.println(result);
}

2、整数的除法运算

public static void main(String[] args) {
		int x = 10;
		int y = 4;
		
		int result = x/y;
		System.out.println(result); // 2
		
		double result2 = x/y;
		System.out.println(result2); //2.0;
		
		double result3 = (double)x/y; // 把x强转成double
		System.out.println(result3); //2.5
		
		double result4 = 1.0*x/y; // 低侵入式
		System.out.println(result4);
}

3、浮点数 四舍五入取整 四舍五入取两位小数

public static void main(String[] args) {
		double x = 3.4665;
		//四舍五入取整数
		int result = (int)(x+0.5);
		System.out.println(result);
		
		// 四舍五入保留两位小数
		double result2 = (int)(x*100+0.5)/100.0;
		System.out.println(result2);
}

上一篇:(7)Java基础语法 --变量

下一篇:(9)Java基础语法 --字符集和char类型

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值