第一章:计算机、程序和Java概述
复习题
1.1 什么是硬件和软件?
答:硬件指计算机中可见的物理部分;软件是计算机中看不见的指令,这些指令控制硬件并使硬件完成特定的任务。
1.2 列举计算机的5个主要硬件组件。
答:①中央处理器;②内存;③输入设备;④输出设备;⑤存储设备。
1.3 缩写“CPU”代表什么含义?
答:CPU全称Central Processing Unit,中央处理器。
1.4 衡量CPU速度的单位是什么?
答:单位是赫兹HZ,现在通常以Mhz,Ghz数量级衡量。
1.5 什么是比特?什么是字节?
答:比特bit是计算机中物理存储设备的最小单位;8个bit是一个字节。
1.6 内存是用来做什么的?RAM代表什么?为什么内存称为RAM?
答:内存的用途:用于存储程序及程序需要的数据;RAM(Random-Access Memory)代表随机访问的存储器;因为内存可以按任意顺序存取字节所以背称为RAM(按功能划分)。
1.7 用于衡量内存大小的单位是什么?
答:GB(Gigabyte)
1.8 用于衡量磁盘大小的单位是什么?
答:TB(Terabyte)
1.9 内存和永久存储设备的主要不同是什么?
答:内存是易失性存储介质(断电即失),存储容量小,传输速度快;永久存储设备为非易失性存储介质(断电可留),存储容量大,传输速度慢。
1.10 CPU能理解什么语言?
答:机器语言。
1.11 什么是汇编语言?
答:汇编语言能用短的描述性单词来表示每一条机器语言指令,是一种低级语言。
1.12 什么是汇编器?
答:汇编器可以将汇编语言转换成机器语言。
1.13 什么是高级编程语言?
答:很像英语,易于学习和使用的编程语言称为高级编程语言。
1.14 什么是源程序?
答:使用高级编程语言编写的程序称为源程序。
1.15 什么是解释器?
答:解释器会逐条读取源代码中的语言,并立刻翻译成机器代码或者虚拟机器代码,然后立刻立刻运行。
1.16 什么是编译器?
答:编译器是先将整个源代码翻译为机器代码文件,然后再执行该机器代码文件。
1.17 解释语言和编译语言之间的区别是什么?
答:解释语言是在运行的时候将程序翻译成机器语言,效率比较低,但是跨平台性好,比如Java和Python。
编译语言在执行程序之前,有一个单独的编译过程,将程序翻译成机器语言就不再进行翻译了,效率高,比如C和C++。
1.18 什么是操作系统?列出一些流行的操作系统?
答: 操作系统(Operation System,简称OS)是运行在计算机上最重要的程序,它可以管理和控制计算机的各种活动。
比较流行的操作系统有Windows,MacOS和Linux。
1.19 操作系统的主要任务是什么?
答:①控制和监控系统的各种活动;②分配和调配系统资源。
1.20 什么是多道程序设计、多线程以及多处理?
答:①多道程序设计:允许多个程序通过共享CPU同时进行的程序设计。②多线程:运行单个程序同时执行多个任务。③多处理(多进程,也称为并行处理):是指使用两个或多个处理器共同并行执行子任务,然后将子任务的结果合并以得到整个任务的结果。
1.21 Java是由谁发明的?哪个公司现在拥有Java?
答:Java是由James Grosling在Sun公司领导的小组开发的;Oracle现在拥有Java。
1.22 什么是Java applet?
答:能在web浏览器中运行的Java程序称为Java applet。
1.23 安卓使用的是什么编程语言?
答:Java、Kotlin
1.24 什么是Java语言规范?
答:Java语言规范(Java language specification)是对语言的技术定义,包括Java程序设计语言的语法和定义。
1.25 JDK代表什么?
答:Java开发工具包(Java Development Toolkit),是由一套独立程序构成的集合,每个程序都是从命令行调用的,用于开发和测试Java程序。
1.26 IDE代表什么?
答:集成开发环境(Integrated Development Environment)
1.27 类似NetBeans和Eclipse的工具是和Java不同的语言吗?或者它们是Java的方言或者扩充?
答:不是的,这些仅仅是方便进行Java开发的开发工具而已,也就是IDE
1.28 什么是关键字?列举一些Java关键字。
答:关键字就是Java本身特殊含义的单词,不能再程序中用于其他目的。例如class、static、void
1.29 Java是大小写敏感的吗?Java关键字是大写还是小写?
答:Java大小写敏感;关键字是小写的。
1.30 什么是注释?编译器会忽略注释吗?如何标识一行以及一段注释?
答:①注释主要用于说明程序是干什么的;②会忽略注释;③//和/*/以及/* **/
1.31 在控制台上显示一个字符串的语句是什么?
答:System.out.println();
1.32 给出以下代码的输出:
public class Test {public static void main(String[] args) {System.out.println("3.5 * 4 / 2 - 2.5 is ");System.out.println(3.5 * 4 / 2 - 2.5);}}
答:3.5 * 4 / 2 - 2.5 is
4.5
1.33 什么是Java源程序的文件后缀名,什么是Java字节码文件后缀?
答:①Java源程序文件后缀名为.java;②Java字节码文件后缀为.class。
1.34 Java编译器的输入和输出是什么?
答:输入是源代码,输出是字节码。
1.35 编译Java程序的命令是什么?
答:javac ***.java
1.36 运行Java程序的命令是什么?
答:java ***
1.37 什么是JVM?
答:Java虚拟机,可以解释java字节码的程序。
1.38 Java可以运行在任何机器上吗?在一台计算机上运行Java需要什么?
答:可以,只要有安装java虚拟机即可;需要java虚拟机。
1.39 如果运行程序的时候出现 NoClassDefFoundError 错误,是什么原因导致了这个错误?
答:运行一个不存在的类文件。
1.40 如果运行程序的时候出现 NoSuchMethodError 错误,是什么原因导致了这个错误?
答:没有main方法或者敲错了main方法。
1.41 使用行尾括号风格,将下面的程序根据程序设计风格和文档指南进行重新格式化。
public class Test {// Main methodpublic static void main(String[] args) {/** display output */System.out.println("Welcome to Java");}}
答:
public class Test {// Main methodpublic static void main(String[] args) {/** display output */System.out.println("Welcome to Java");}}
1.42 什么是语法错误(编译错误)、运行时错误以及逻辑错误?
答:①在编译过程中出现的错误称为语法错误(syntax error)或编译错误(compile error);②引起程序非正常中断的错误叫运行时错误(runtime error);③当程序没有按预期的方式执行时就会产生逻辑错误(logic error)。
1.43 给出语法错误、运行时错误以及逻辑错误的实例。
答:
语法错误:少关键字;运行时错误:1除以0的计算场景;逻辑错误:小数点计算中给的都是整形数字导致计算结果不正确。
1.44 如果忘记为字符串加引号了,将产生哪类错误?
答:语法错误。
1.45 如果程序需要读取整数,而用户输入了字符串,运行该程序的时候将产生什么错误?这是哪类错误?
答:将产生数据类型错误;这是运行时错误。
1.46 假设编写一个计算矩形周长的程序,但是错误地写成了计算矩形面积的程序。这属于哪类错误?
答:这属于逻辑错误。
1.47 指出和修改下面代码中的错误。
public class Welcome {public void main(String[] args) {System.out.println('Welcome to java!);}}
答:
主方法缺少关键字static。输出语句内应为双引号。
正确代码如下所示:
public class Welcome {public static void main(String[] args) {System.out.println("Welcome to java!");}}
编程练习题
1.1 (显示三条消息)编写程序,显示Welcome to Java、Welcome to Computer Science和Programming is fun。
答:
public class Exercise1_1 {public static void main(String[] args) {System.out.println("Welcome to Java");System.out.println("Welcome to Computer Science");System.out.println("Programming is fun");}}
1.2 (显示五条消息)编写程序,显示Welcome to Java五次。
答:
public class Exercise1_2 {public static void main(String[] args) {System.out.println("Welcome to java");System.out.println("Welcome to java");System.out.println("Welcome to java");System.out.println("Welcome to java");System.out.println("Welcome to java");}}
1.3 (显示图案)编写一个程序,显示下面的图案:
答:
public class Exercise1_3 {public static void main(String[] args) {System.out.println(" JAVVA");System.out.println(" J A AV VA A");System.out.println("J J AAAAAV VAAAAA");System.out.println(" JJ AAVAA");}}
1.4 编写程序,显示以下表格:
解:
public class Exercise1_4 {public static void main(String[] args) {System.out.println("a" + " " + "a^2" + " " + "a^3");System.out.println(1 + " " + (1 * 1) + "" + (1 * 1 * 1));System.out.println(2 + " " + (2 * 2) + "" + (2 * 2 * 2));System.out.println(3 + " " + (3 * 3) + "" + (3 * 3 * 3));System.out.println(4 + " " + (4 * 4) + " " + (4 * 4 * 4));}}
1.5 (计算表达式)编写程序,显示以下公式的结果。
解:
public class Exercise1_5 {public static void main(String[] args) {System.out.println((9.5 * 4.5 - 2.5 * 3) / (45.5 - 3.5));}}
结果是 0.8392857142857143
1.6 (数列求和)编写程序,显示 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 的结果。
解:
public class Exercise1_6 {public static void main(String[] args) {System.out.println(1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9);}}
结果是 45
1.7 (近似求p)可以使用以下公式计算p:
π=4*(1-1/3+1/5-1/7+1/9-1/11+…)
编写程序,显示⽰4*(1-1/3+1/5-1/7+1/9-1/11)和4*(1-1/3+1/5-1/7+1/9-1/11+1/13)的结果。在程序中用1.0代替1。
解:
public class Exercise1_7 {public static void main(String[] args) {System.out.println(4 * (1.0 - 1.0 / 3 + 1.0 / 5 - 1.0 / 7 + 1.0 / 9 - 1.0 / 11));System.out.println(4 * (1.0 - 1.0 / 3 + 1.0 / 5 - 1.0 / 7 + 1.0 / 9 - 1.0 / 11 + 1.0 / 13));}}
结果是:
2.9760461760461765
3.2837384837384844
1.8 (圆的面积和周长)编写程序,使用以下公式计算并显示半径为5.5的圆的面积和周长。
周长 = 2 x 半径 x π
⾯积 = 半径 x 半径 x π
解:
public class Exercise1_8 {public static void main(String[] args) {System.out.println("周长 = " + (2 * 5.5 * 3.14));System.out.println("⾯积 = " + (5.5 * 5.5 * 3.14));}}
周长 = 34.54
⾯积 = 94.985
1.9 (矩形的面积和周长)编写程序,使用以下公式计算并显示宽度为 4.5、高度为 7.9 的矩形的面积和周长。
面积 = 宽 × 高
解:
public class Exercise1_9 {public static void main(String[] args) {System.out.println("⾯积 = " + (4.5 * 7.9));System.out.println("周长 = " + (4.5 * 2 + 7.9 * 2));}}
⾯积 = 35.550000000000004
周长 = 24.8
1.10 (以英里计的平均速度)假设一个跑步者45分钟30秒内跑了14公里。编写一个程序显示每小时多少英里为单位的平均速度值。(注意,1英里等于1.6公里。)
解:
public class Exercise1_10 {public static void main(String[] args) {System.out.println("平均速度值为" + (14.0 / 1.6) / ((45.0 * 60 + 30) / (60 * 60)) + "英⾥每⼩时");}}
平均速度值为11.538461538461538英⾥每⼩时
*1.11 (人口估算)美国人口调查局基于以下假设进行人口估算:
每7秒有一个人诞生每13秒有一个人死亡每45秒有一个移民迁入
编写一个程序,显示未来5年的人口数。假设当前的人口是 312 032 486,每年有 365 天。
提示:Java中,两个整数相除,结果还是整数,小数部分被去掉。例如,5/4 等于 1(而不是1.25 ),10/4 等于 2(而不是 2.5 )。
如果想得到有小数部分的精确结果,进行除法运算的两个值之一必须是一个具有小数点的数值。例如,5.0/4 等于 1.25,10/4.0 等于 2.5。
解:
public class Exercise1_11 {public static void main(String[] args) {System.out.println(312032486 + (5 * 365 * 24 * 60 * 60 / 7) - (5 * 365 * 24 * 60 * 60 / 13) + (5 * 365 * 24 * 60 * 60 / 45));}}
结果是 325932970
1.12 (以公里计的平均速度)假设一个跑步者 1 小时 40 分钟 35 秒内跑了 24 英里。编写一个程序显示每小时多少公里为单位的平均速度值。(注意,1 英里等于 1.6 公里。)
解:
public class Exercise1_12 {public static void main(String[] args) {System.out.println("平均速度值为 " + (24 * 1.6) * (60 * 60) / (60 * 60 + 40 * 60 + 35) + " 公⾥每⼩时");}}
平均速度值为 22.906379453189732 公⾥每⼩时。
*1.13 (代数:求解 2 × 2 线性方程)可以使用Cramer规则解下面的 2 × 2 线性方程组:
ax + by = e
cx + dy = f
x = (ed - bf) / (ad - bc)
y = (af - ec) / (ad - bc)
编写程序,求解以下方程组并显示 x 和 y 的值。
3.4x + 50.2y = 44.5
2.1x + 0.55y = 5.9
解:
public class Exercise1_13 {public static void main(String[] args) {double a = 3.4;double b = 50.2;double c = 2.1;double d = 0.55;double e = 44.5;double f = 5.9;System.out.println("x = " + (e * d - b * f) / (a * d - b * c));System.out.println("y = " + (a * f - e * c) / (a * d - b * c));}}
x = 2.623901496861419
y = 0.7087397392563978