Java基础(三)

本文介绍了类型转换的概念,包括隐式和显式转换。隐式转换自动进行,从低精度到高精度;显式转换需手动操作,可能引起精度损失或数值溢出。文章通过Java代码示例展示了转换过程中的问题和解决方法,并提供了多个编程练习题。
摘要由CSDN通过智能技术生成

数据类型转换

类型转换是将一个值从一种类型更改为另一种类型的过程。转换过程要做到“勿以小杯盛大物”。

低精度数据放入高精度数据中永远不会溢出。

 两种转换方式:

隐式转换(自动转换)

显式转换(强制转换)

隐式转换

从低级类型向高级类型的转换,系统将自动执行,程序员无需进行任何操作。这种类型的转换称为隐式转换。

 【示例】

byte a=8;
int b=a;
long c=b;
double d=c;

 在char的取值范围之内,与int是相互兼容的。

举个例子:

 显式转换

当把高精度的变量值赋给低精度的变量时,必须使用显式类型转换运算。

【语法】(类型名)要转换的值

int a;
tyte b=(byte)a;

 [显式转换导致精度损失]

一:数据失准。

float f=(float)3.1415926

 我们可以发现数据最后少了一个6,导致数据失准

二:小数点丢失。

int i=(int)f;

我们可以发现,小数点后面的数据全没了。

三.数值越界溢出

byte b=(byte)129

 可以发现一个整数强制转换后成为了一个负数,这就是数值溢出的效果。

训练题

【训练7】输出连续的英文字母

使用char型声明’a'-'g',然后输出他们相加后的结果。

public class text1 {

	public static void main(String[] args) {
		char a='a';
		char b='b';
		char c='c';
		char d='d';
		char e='e';
		char f='f';
		char g='g';
		System.out.println("相加后的结果为"+(a+b+c+d+e+f+g));
			}
	}

 【训练8】货车装箱子

一辆货车运输箱子,载货区宽2米,长4米,一个箱子宽1.5米,长1.5米,请问载货区一层可以放多少个箱子。

public class text1 {

	public static void main(String[] args) {
		int wide=2,high=4;
		float a=1.5F,b=1.5F;
		int c=(int)(wide/a);
		int d=(int)(high/b);
		System.out.println("载货区一层可以放"+(c*d)+"个箱子");
			}
	}

 

实践与练习

【综合练习1】象棋口诀

先使用char型变量定义“马”“象”“卒”这三个棋子,在输出“马走日,象走田,小卒一去不复返”的象棋口诀。

public class text1 {

	public static void main(String[] args) {
		char ma='马';
		char xiang='象';
		char zu='卒';
		System.out.println(ma+"走日,"+xiang+"走田,"+"小"+zu+"一去不复返。");
			}
	}

 【综合练习2】输出汇款单

向张三卡号为1234567890987654321的银行卡里面汇款10000元。控制台输出如下所示的汇款单。

public class text1 {

	public static void main(String[] args) {
		String data="2021-03-10";
		String name="张三";
		String classm="RMB";
		String ID="1234567890987654321";
		double count=10000.0;
		String a="010";
		int b=12345;
		System.out.println("  中国工商银行  ");
		System.out.println("------------------");
		System.out.println("日期: "+data);
		System.out.println("户名: "+name);
		System.out.println("账号: "+ID);
		System.out.println("币种: "+classm);
		System.out.println("存款金额: "+count);
		System.out.println("存款序号: "+a);
		System.out.println("柜员号: "+b);
		System.out.println("------------------");
			}
	}

 

 【综合练习3】输出个人信息

public class text1 {

	public static void main(String[] args) {
		System.out.println("  个人基本信息  ");
		System.out.println("------------------");
		System.out.println("姓名: "+"李四");
		System.out.println("性别: "+"男");
		System.out.println("年龄: "+"25");
		System.out.println("身高: "+"1.76米");
		System.out.println("体重: "+"65.5千克");
		System.out.println("是否已婚: "+"false");
			}
	}

 

 【综合练习4】计算月收入

小李每月的工资是4500元,每月的奖金是1000元,每月要缴纳的五险一金合计是500元,计算小李每月的最终收入是多少?

public class text1 {

	public static void main(String[] args) {
		int count=4500;
		int reward=1000;
		int insure=500;
		System.out.println("小李月收入为:"+(count+reward-insure));
	
			}
	}

【综合练习5】计算商和余数 

应用除法运算符可以计算两个数的商,应用取余运算符可以计算两个数相除所得的余数。根据这两个运算符做一个数字转置的练习,将123的各数字顺序前后颠倒后输出。 

【综合练习6】判断成绩会否及格

当分数大于等于60时,成绩及格,否则不及格。现一学生的分数是80分,使用三元运算符判断这名学生的成绩能否及格。

public class text1 {

	public static void main(String[] args) {
		int score=80;
	
		System.out.println(score>=60?"该学生及格":"该学生不及格");

			}
	}

【综合练习7】话费充值

向手机中充值10元。通话0.2元/分钟,通话时长已有30分钟;流量已使用10MB,流量费用为0.3元/MB。计算话费余额还可以通话的时长 。

public class text1 {

	public static void main(String[] args) {
		int count=10;//总话费
		double a=0.2*30;//通话消耗的费用
		double b=0.3*10;//流量消耗的费用
		double c=(count-a-b)/0.2;
		System.out.println("花费余额还可以通话"+c+"分钟");

			}
	}

【综合练习8】货车装西瓜

 一货车的车厢长400厘米、宽160厘米、高30厘米,现有100个直径约为23厘米的西瓜。问:这辆货车满载时能装多少个西瓜?实际能装多少个西瓜?

public class text1 {

	public static void main(String[] args) {
		final double PI=3.14;
		int length=400;
		int wide=160;
		int high=30;
		int D=23;
		int sum=(wide/D)*(high/D)*(length/D);
		System.out.println("满载时可以装:"+sum+"个");
		System.out.println("实际可以装"+(sum>=100?100:sum)+"个");
	}
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值