一、简答题
1、请描述 Java 基本数据类型的 8种, 分别是什么 ?
答: byte short char int long float double boolean
2、请观察下列代码是否存在问题, 如果有, 请说明原因并改成
byte b1 = 3; // 第一行
byte b2 = 4; // 第二行
byte b3 = b1 + b2; // 第三行
byte b = 3 + 4; // 第四行
答: 第三行应该使用强制类型转换: byte b3 = (byte)(b1 + b2);
3、现有代码如下, 请回答打印的结果, 并描述中间的运算过程
int num = 10;
char content = 'a';
int result = num + content;
System.out.println(result);
答: 打印的结果: 107
在第三行的时候进行了自动类型转换将字符a转换成了97,在进行加10运算
4、简述下 ++ 运算符在参与运算使用的时候, 在前在后的区别
答:
++a 如果放在变量的前面,先对变量进行+1、-1,再拿变量的值进行运算。
a++ 如果放在变量的后面,先拿变量的值进行运算,再对变量的值进行+1、-1
5、现有代码如下, 请回答打印的结果, 并描述中间的运算过程
int a = 10;
int b = ++a;
int c = a++;
int result = b++ + ++c;
答:
结果:
过程: a 11 12
b 11 12
c 11 12
result 11 + 12 = 23
6、描述下算数运算符中 , / 和 % 的特点
答: / : 在Java中两个整数相除结果还是整数。
% : 获取的是两个数据做除法的余数
7、现有代码如下, 想要运算结果是2.5 代码应该怎么改 ?
int a = 5;
int b = 2;
double c = a / b;
答: (不止一种修改方式)
第一种: 将 int a = 5; 改成 double a = 5.0 或
int b = 2; 改成 double b = 2.0
第二种:
double c = (a * 1.0)/ b;
或
double c = a /(b * 1.0);
8、现有代码如下, 请回答打印的结果, 并描述中间的运算过程
int a = 10;
double b = 12.3;
a += b;
System.out.println(a);
答: (务必说明原因)
结果: 22
原因:
a += b;
会被转化成
int a =(int)(a + b);(在这个算术上 b 会采取强制类型装换,b 会被赋予12在进行加10)
9、现有代码如下, 请回答打印的结果, 并描述中间的运算过程
public static void main(String[] args) {
int x = 3;
int y = 4;
boolean result = x++ > 3 && --y < 4;
System.out.println(result);
System.out.println(x);
System.out.println(y);
}
答: (务必说明原因)
结果:
false 4 4
原因:x 3 3 3+1
y 4
result 3>3 && 为false
二、编程题
2.1、身高计算
需求:
身高是具有遗传性的,子女的身高和父母的身高有一定的关系。假定,父母和子女的身高遗传关系如下:
儿子身高(厘米)=(父亲身高+母亲身高) ×1.08÷2
女儿身高(厘米)=(父亲身高×0.923+母亲身高) ÷2
现有父亲身高177CM,母亲身高165CM。求子女身高分别预计为多少?
提示:
1.定义两个int变量h1和h2,代表父亲和母亲的身高,并初始化
2.根据题目需求计算儿子身高,保存int变量h3中
3.根据题目需求计算女儿身高,保存int变量h4中
4.打印h3和h4的值
public class Height {
public static void main(String[] args) {
int h1=177;
int h2=165;
int h3 = (int) ((h1 + h2) * 1.08 / 2);
int h4 = (int) ((h1*0.923 + h2) / 2);
System.out.println(h3);
System.out.println(h4);
}
}
儿子h3: 184CM
女儿h4: 164CM
2.2、数值拆分
需求:
从键盘接收一个四位数的int类型的变量,例如:1234,求这个数的个位,十位,百位,千位分别是多少?
运行效果:
加入键盘输入的是1234, 打印: 1234的个位是4,十位是3,百位是2,千位是1
提示:
1.定义键盘对象,接收数据保存到变量num
2.计算个位,十位,百位,千位分别保存int变量ge,shi,bai,qian中
3.根据题目需求打印结果数据
public class NumericalSplitting {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("键盘键入一个四位数: ");
int number = sc.nextInt();
int ge = number % 10;
int shi = number / 10 % 10;
int bai = number / 10 / 10 % 10;
int qian = number / 10 / 10 / 10 % 10;
System.out.println("个位: " + ge);
System.out.println("十位: " + shi);
System.out.println("百位: " + bai);
System.out.println("千位: " + qian);
}
}
键盘键入一个四位数:
1234
个位: 4
十位: 3
百位: 2
千位: 1
2.3、菜品优惠
某外卖商家的菜品单价如下:
1.鱼香肉丝每份24元,油炸花生米每份8元,米饭每份3元。
2.优惠方式:
总金额大于100元,总金额打9折,其它无折扣
3.需求:
小明购买了3分鱼香肉丝,3份花生米,5份米饭,最终需要付多少钱?
提示:
1.定义三个int变量yxrs,yzhsm,mf,代表三个菜品的价格,并初始化
2.根据小明的购买信息,计算优惠前的总价格,保存int变量price
3.根据优惠方式计算小明购买菜品优惠后的价格,保存int变量afterPrice中
4.打印输出结果数据
public class FoodDiscount {
public static void main(String[] args) {
int yxrs,yzhsm,mf;
yxrs=24;
yzhsm=8;
mf=3;
int money=(int) (3*yxrs+3*yzhsm+5*mf);
if (money>100){
money*=0.9;
}
System.out.println(money);
}
}
花费: 99
2.4、体重对比
需求:
动物园里有两只老虎,已知两只老虎的体重分别为180kg、200kg,
请用程序实现判断两只老虎的体重是否相同。
提示
1.定义两个int变量w1,w2,代表两只老虎的体重,并初始化
2.使用三元运算符判断w1和w2是否相同,结果保存boolean变量result中
3.打印结果数据result
public class Weight {
public static void main(String[] args) {
int w1,w2;
w1=180;
w2=200;
boolean result=w1==w2?true:false;
System.out.println(result);
}
}
结果: false
2.5、最大身高
需求:
一座寺庙里住着三个和尚,已知他们的身高分别为150cm、210cm、165cm,
请用程序实现获取这三个和尚的最高身高。
提示
2.获取三个int数字,代表三个和尚的身高,分别保存int变量h1,h2,h3中
3.使用三元运算符计算h1和h2的最小值,保存int变量temp中
3.使用三元运算符计算temp和h3的最小值,保存int变量min中
4.打印结果数据min
最大身高
public class Height {
public static void main(String[] args) {
int h1 = 150;
int h2 = 210;
int h3 = 165;
int max1 = h1 > h2 ? h1 : h2;
int max = max1 > h3 ? max1 : h3;
System.out.println(max);
}
}
最小身高
public class Height1 {
public static void main(String[] args) {
int h1 = 150;
int h2 = 210;
int h3 = 165;
int min1 = h1 < h2 ? h1 : h2;
int min = min1 < h3 ? min1 : h3;
System.out.println(min);
}
}
2.6、学生信息
在今天的课程学习中,我们知道了java的8种基本数据类型和字符串(String)
请选择合适类型的变量保存一个学生的个人信息,并打印到控制台,输出结果如下:
我的姓名是:张三
我的性别是:男
我的年龄是:18
我的地址是:xx省xx市
我的饭卡余额是:55.55元
public class Student {
public static void main(String[] args) {
String name = "张三";
char gander='男';
int age=18;
String address="xx省xx市";
double cardBalance=55.55;
System.out.println("我的姓名是:"+name);
System.out.println("我的性别是:"+gander);
System.out.println("我的年龄是:"+age);
System.out.println("我的地址是:"+address);
System.out.println("我的饭卡余额是:"+cardBalance+"元");
}
}
2.7、短信模拟
训练目标:掌握字符串拼接操作
需求描述:请从控制台录入用户信息 (用户名, 邮箱) , 模拟初始密码发送至邮箱的过程
运行效果:
请输入用户名:
zhangsan
请输入邮箱:
zhangsan@itcast.cn
尊敬的zhangsan用户您好, 我们已向您的初始密码发送至zhangsan@itcast.cn邮箱, 请注意查收!
实现提示:对采集到的信息加入字符串拼接
public class ShortMessage {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入用户名: ");
String userName= sc.nextLine();
System.out.println("请输入邮箱: ");
String email= sc.nextLine();
System.out.println("尊敬的"+ userName +"用户您好, 我们已向您的初始密码发送至"+ email +"邮箱, 请注意查收!");
}
}