「Java题库」基础程序设计(理论+操作)
理论试题
一、选择题
-
下面哪个不是Java的基本数据类型?
A.int
B.String
C.boolean
D.double答案:B
解析:String是引用类型,不是基本数据类型。Java中8大基本数据类型分别是byte、short、int、long、float、double、char和boolean。 -
以下代码的输出结果是?
System.out.println(5 + 2 * 3);
A.21
B.11
C.编译错误
D.17
答案:B
解析:乘法优先级高于加法,所以先算2 * 3 = 6
,再加5得到11。运算符优先级决定了运算顺序,在记不清的时候可以加括号明确顺序。 -
想要从键盘读取一个整数,应该使用哪个语句?
A.Scanner.next()
B.Scanner.nextInt()
C.Scanner.nextLine()
D.Scanner.readInt()
答案:B
解析:Scanner类中nextInt()
专门用来读取整数。next()
读取字符串直到空格,nextLine()
读取整行,没有readInt()这个方法。 -
下面哪种格式化输出可以显示2位小数?
A.System.out.print(“%.2d”, 3.1415);
B.System.out.printf(“%.2f”, 3.1415);
C.System.out.format(“%2d”, 3.1415);
D.System.out.print(“%2f”, 3.1415);
答案:B
解析:printf和format都可以格式化输出,"%.2f"表示保留两位小数。其中f表示浮点数,.2表示小数点后保留2位小数;d表示整数。
二、填空题
-
Java中表示单精度浮点数的关键字是______,双精度浮点数的关键字是______。
答案:float、double
解析:float占4字节,double占8字节。小数默认是double类型,要声明float类型需要再小数后f后缀,比如3.14f。 -
表达式
10 / 3
的结果是______,而10.0 / 3
的结果是______。
答案:3、3.333…
解析:/前后两个操作数都是整数是,进行的是两个数整除,相除结果还是整数,会自动舍去小数部分。如果有一个操作数是浮点数,则结果就会是浮点数。 -
使用Scanner类前必须先导入______包,创建Scanner对象的常用写法是______。
答案:
java.util
、Scanner sc = new Scanner(System.in);
解析:Scanner
类是java.util
包中的一个实体类,常用于从控制台读取用户输入、解析文件内容等场景。System.in
表示标准输入流,通常就是键盘输入。
三、简答题
-
请解释以下代码的运行结果及原因:
int a = 5; int b = a++; System.out.println("a=" + a + ", b=" + b);
答案:输出结果为a=6, b=5
解析:a++
是后置递增运算符。先把a的值赋给b,然后a在自加。如果是++a
,就会先加1再赋值。 -
写出用printf格式化输出当前日期时间的完整代码,要求格式类似"2023-08-15 14:30:00"。
答案:import java.util.Date;public class Main {public static void main(String[] args) {Date now = new Date();System.out.printf("%tF %tT", now, now);} }
解析:格式符%tF表示完整的日期信息,采用YYYY-MM-DD的形式;格式符%tT表示完整的时间信息,采用HH:MM:SS的形式,使用24小时制。Date类是java.util包中的一个类,使用前要导入java.util包。
-
下面代码有什么问题?如何修正?
double price = 19.99; System.out.println("价格:" + price + "元"); System.out.printf("价格:%.2f元", price);
答案:两种输出方式都是正确的。
解析:System.out.println("价格:" + price + "元");
使用字符串拼接方式,System.out.printf("价格:%.2f元", price);
使用printf精确控制小数位数。
四、代码分析题
分析下面代码的输出结果,并解释每个输出语句的执行过程:
public class Test {public static void