第02章 JAVA语言基础(2)
- 格式:doc
- 大小:79.50 KB
- 文档页数:7
Java语言程序设计第三版(谭浩强主编)课后答案下载Java语言程序设计第三版(谭浩强主编)课后答案下载《Java语言程序设计(第3版)》是2021年清华大学出版社出版的图书。
以下是由阳光网我整理关于Java语言程序设计第三版(谭浩强主编)课后答案下载地址,盼望大家喜爱!点击进入:Java语言程序设计第三版(谭浩强主编)课后答案下载地址Java语言程序设计第三版(谭浩强主编)图书简介Java是近年来十分流行的程序设计语言,又是一门通用的网络编程语言,在Internet上有着广泛的应用。
本书全面介绍了Java语言的功能和特点,主要内容包括Java语言基础学问、Java语法构成、面向对象编程技术、常用系统类的使用、图形用户界面设计、图形处理、多媒体处理、异样处理、多线程技术和访问数据库技术等内容。
本书以通俗易懂的语言介绍了大量的实例,从有用的角度解释了Java面向对象编程思想,介绍了Java编程技巧。
本书不仅适合没有编程阅历的读者学习,也适合有肯定程序语言基础的读者自学,本书可作为高等院校或计算机培训班的教材。
Java语言程序设计第三版(谭浩强主编)图书名目第1章Java语言概述1.1Java的起源1.2Java语言的特点1.3Java的运行机制1.4程序设计算法及描述1.5Java程序的开发过程1.5.1JDK的下载与安装1.5.2Java工具集与标准类库1.5.3Java程序的开发过程1.5.4源文件命名规范与解释语句1.5.5Java程序示例试验1习题1第2章Java语言基础2.1数据类型2.1.1Java的数据类型2.1.2常量与变量2.1.3变量赋值2.1.4关键字2.1.5转义符2.2基本数据类型应用示例 2.2.1整数类型与浮点类型 2.2.2字符型2.2.3布尔型2.2.4数据类型的转换2.3表达式和运算符2.3.1表达式与运算符分类 2.3.2算术运算符2.3.3关系与规律运算符2.4程序掌握语句2.4.1语句2.4.2键盘输入语句2.4.3顺序掌握语句2.4.4if选择语句2.4.5switch语句2.4.6循环语句2.4.7跳转语句试验2习题2第3章面向对象程序设计基础 3.1面向对象的基本概念3.2类3.2.1类的`定义3.2.2成员变量和局部变量 3.3成员方法3.3.1方法的定义3.3.2方法的调用3.3.3方法重载3.3.4构造方法3.4对象3.5面向对象特性3.5.1封装性3.5.2继承性3.5.3多态性3.5.4其他修饰符的用法 3.6接口3.6.1接口的定义3.6.2接口的应用3.7包3.7.1创建自己的包 3.7.2压缩文件jar试验3习题3第4章数组与字符串 4.1数组4.1.1一维数组4.1.2多维数组的应用 4.2字符串4.2.1字符串的表示4.2.2字符串的常用方法4.2.3StringTokenizer字符分析器 4.2.4正则表达式4.2.5main()中的参数4.3StringBuffer类试验4习题4第5章图形用户界面设计5.1图形用户界面概述5.2窗体容器和组件5.2.1窗体容器JFrame类5.2.2按钮和事件处理5.3面板容器和界面布局管理5.3.1面板JPanel类 5.3.2界面布局策略5.4JComponent类组件的使用5.4.1JComponent类组件5.4.2文本组件和标签5.4.3单项选择按钮、复选框和下拉列表5.4.4卡片选项页面(JTabbedPane)5.4.5滑杆(JSlider)和进度指示条(JProgressBar) 5.4.6表格(JTable)5.5菜单与对话框5.5.1菜单5.5.2弹出式菜单5.5.3对话框5.6树5.6.1树的概念5.6.2树的构造方法试验5习题5。
第二章数据和表达式目录第一节基本语法元素第二节基本数据类型第三节表达式01 基本语法元素1.空白在java程序中,换行符及回车符都可以表示一行的结束,它们可被看作是空白,另外空格键,水平定位键(Tab)亦是空白,编译器会忽略多余的空白。
2.注释(1)单行注释://一行内的注释(2)多行注释:/*一行或多行注释*/(3)文档注释:/**文档注释*/3.语句、分号和块语句是Java程序的最小执行单位,程序的各语句间以分号“;”分隔。
一个语句可以写在连续的若干行内。
大括号“{”和“}”包含的一系列语句称为块语句,简称块。
语句块可以嵌套,即语句块中可以含有子语句块;关键字Java语言定义了许多关键字,关键字也称为保留字,他们都有各自的特殊意义和用途。
*标红的为预留关键字,尚未使用标识符1.标识符是由字母、数字、下划线(_)或美元符($)组成的字符串,其中数字不能作为标识符的开头。
2.标识符区分大小写,长度没有限制。
3.标识符中不能含有其他符号,例如+、=、*、及%等,当然也不允许插入空白。
4.标识符可用作变量名、方法名、接口名和类名。
5.Java源代码采用的是Unicode码,用16位无符号二进制数表示一个字符,Unicode字符集中的字符数可达65535个,汉字也是字符,所以也可以出现在标识符中,例如“这是一个标识符”也是一个正确的标识符。
Java编程风格编写程序时应该注重自己的编程风格,增加必要的注释和空格,采用缩进格式。
定义的各种标识符也要遵从惯例注意大小写。
程序中尽量不使用没有含义的标识符。
最好能望名知义,例如,变量用于计数,可将它命名为counter;用变量保存税率,可将它命名为taxRate。
·类名或接口名:多为名词,含有大小写,每个单词的首字母大写如HelloWorld、Customer、SortClass 等。
·方法名:多是动词,含有大小写,首字母小写,其余各单词的首字母大写。
第二、三章 Java根底知识与流程构造1、Java语言是〔〕A、区分大小写的B、不完全区分大小写C、完全不区分大小写D、以上说法都不对2、Java语言中,以下标识符错误的选项是A、nameB、?questionC、$numberD、_tree3、在Java语言中,int类型在内存中所占的位数为A、8B、16C、32D、644、以下不属于根本类型的是A、intB、interfaceC、floatD、char5、Java变量中,以下不属于复合类型的数据类型是A、数组型B、类C、整数型D、接口6、专门定义常量的保存字是A、varB、interfaceC、finalD、const7、以下定义变量错误的选项是A、int al;B、char ch1;C、int d1=10;D、bool bl1;8、以下定义变量错误的选项是()A、char s="23";B、short I=100;C、double d;D、String srt="weare me!";9、在给数值类型赋值时,如数字后没有字母,计算机默认为〔〕类型A、integer类型B、float类型C、double类型D、字符类型10、将较长的数据类型转换为较短的整数类型,要进展〔〕A、类型的自动转换B、类型的强迫转换C、无需转换D、无法实现11、以下表示回车的是A、\fB、\nC、\tD、\r12、以下赋值语句错误的选项是A、i=i;B、I = = 0;C、I = I +1;D、I += 1;13、在Java中,〞%〞符号的作用是A、求百分比B、求余C、除D、取整14、下面不属于Java条件分支语句构造的是A、if-else if构造B、if-else构造C、if-else if-else构造D、if-end if构造15、Java中最简单的条件语句是( )构造A、if构造B、while构造C、if-else构造D、以上都不对16、当x=1、y=3,时,表达式 x%=y 的运算结果为( )A、x=2,y=3B、x=0,y=3C、x=1,y=3D、x=1,y=217、if语句中“条件〞表达式可以是A、关系表达式B、布尔逻辑表达式C、选项A、B都是D、以上都错18、if语句中“条件〞为“真〞时,可以执行A、一条语句B、两条语句C、多条语句D、一条语句,或者由“{}〞括起的代码块19、If-else语句中的else子句A、可以单独使用B、不能单独使用C、可以在一定条件下单独使用D、可以配合while使用20、三元条件运算符ex1 ? ex2: ex3,相当于下面的( )语句A、if(ex1) ex2;else ex3;B、if(ex2) ex1;else ex3;C、if(ex1) ex3;else ex2;D、if(ex3) ex2;else ex1;21、Java程序中的语句不可以是A、单一的一条语句B、{}括起来的语句块C、复合语句D、汉字语句22、switch语句表达式的值与某case子句的值匹配后A、执行该子句后的所有语句,遇到break终止执行B、只执行该case子句C、执行该子句后的所有语句,除了default子句D、只执行default子句23、switch语句中A、必须有default子句B、不必有default子句C、必须有default子句和至少一个case子句D、必须有default子句,不必有case子句24、switch语句中A、case子句中的值不一定必须是常量B、case子句中的值可以是变量C、case子句的值必须是常量D、case 子句的值必须是变量25、在switch语句中,每个case子句后A、都必须有一个break语句B、不应存在break语句C、假如不想执行以后的case分支和default分支,应有break语句D、假如想执行以后的case分支和default分支,应有break语句26、下面对do-while构造描绘错误的选项是A、先执行循环体,再判断终止条件,假设结果为true,循环执行循环体,直到布尔表达式为falseB、循环体至少执行一次C、循环中可以使用break跳出循环D、与while语句完全一样27、对for循环初始化描绘正确的选项是A、必须执行初始化操作B、首先执行初始化操作C、先执行循环体内容再执行初始化操作D、以上都不对28、可以在for循环初始化部分声明一个变量,其作用域是A、for循环所在的代码块B、整个for循环C、for循环后的所有部分D、全部代码29、for循环的循环次数A、是确定的B、不是确定的C、通常是确定的,但也可以不确定D、通常不确定,但也可以确定30、对for循环中初始化、终止和迭代部分的描绘错误的选项是A、都可以为空语句B、之间的分号不能省略C、可以部分为空语句D、可以用逗号彼此分隔31、break语句可以用在switch语句中,执行后A、跳出所在的case子句,执行下一条case子句B、跳出所在的case子句,执行最后的default子句C、跳出整个switch子句D、以上说法都不对32、break语句可以在循环语句中执行,执行后A、跳出本次循环,继续进展下次循环B、跳出循环,从紧跟循环的第一条语句执行C、跳出循环,从循环条件处执行D、跳出本次循环,到指定处运行33、执行continue语句后A、跳出整个循环B、跳过循环体中下面的语句,继续下次循环C、下次循环前不需要判断终止条件D、以上说法不对34、以下说法错误的选项是A、Java是面向对象的语言B、Java以类为程序的根本单位C、类就是对象D、在Java语言中,类是具有某种功能的根本模块的描绘35、Java程序构造中,源文件的主文件名与程序公共类名〔〕A、开头字母必须大写B、可以不同C、必须一样D、以上说法都不对36、Java语言中,byte类型在内存中所占的位数为A、8B、16C、32D、6437、long类型存储时占()位bit。
一、语言基础(1-3章)1、基本数据类型2、程序的三大结构(顺序、分支、循环)3、数组一维数组、二维数组:声明、创建、数组元素的使用、length的使用、数组的初始化、数组的引用。
For each语句二、面向对象(4-5章)1、类与对象(封装、继承、多态)2、抽象类3、接口方法的参数传递1 . 基本数据类型参数的传值2 . 引用类型参数的传值(数组名、对象名、接口变量)构造方法•名字必须与它所在的类名相同。
•没有返回类型。
•可以重载。
•如果不写一个构造函数,java提供默认构造方法,该构造方法没有参数,而且函数体为空。
继承class 子类名extends 父类名{新增的变量定义;新增的方法定义;}注意:●如果没有extends关键字,则该类默认为ng.Object类的子类。
●Java只支持单继承子类对象的构造方法在子类的构造方法中如果没有显式的调用父类的构造方法,Java编译器会在构造方法的第一行加super()。
执行子类构造方法的顺序是:①调用父类构造方法。
②再执行类构造方法本身。
多态多态性对同一消息(方法名)会作出不同的响应(操作)。
实现方式有两种:•重载——横向•覆盖——纵向:上转型,接口回调;三、String(字符串类)(9章)1、length():字符串长度2、字符串连接3、字符串比较4、字符串分割public String[] split(String regex)四、异常处理(6章—不考内部类)5个:try、catch、throw、throws和finally。
五、集合(重点)(13章)参见第13章的电子教案和例题代码(在网络学堂)、实验代码。
ArrayList 类(重点),LinkedList 类●创建列表对象:List<String> list=new ArrayList <String> ();List<String> list=new LinkedList <String> ();●常用方法boolean add(Object)Iterator iterator()boolean contains(Object)boolean remove(Object)2、Set接口——无重复HashSet类(重点)、TreeSet类。
第二章计算机硬件基础(二)一、单项选择题(请在()内填写答案)()1. 绘图仪属于。
A: 输出设备B: 输入设备和输出设备C: 输入设备D: 计算机正常工作时不可缺少的设备()2. 计算机的存储系统一般指主存储器和。
A: 累加器B: 寄存器C: 辅助存储器D: 鼠标器()3. 把硬盘上的数据传送到计算机的内存中去,称为。
A: 打印B: 写盘C: 输出D: 读盘()4. CPU 是计算机硬件中的部件。
A: 核心B: 辅助C: 主存D: 输入输出()5. CPU 中的运算器的主要功能是。
A: 负责读取并分析指令B: 算术运算和逻辑运算C: 指挥和控制计算机的运行D: 存放运算结果()6. 现代计算机之所以能自动地连续进行数据处理,主要是由于________。
A:采用了二进制B:采用开关电路C:具有存储程序的功能D:采用了半导体器件()7. CPU 中的控制器的功能是。
A: 进行逻辑运算B: 进行算术运算C: 控制运算的速度D: 分析指令并发出相应的控制信号()8. 以下全是输入设备的是。
A: 键盘、扫描仪、打印机B: 键盘、硬盘、打印机C: 鼠标、硬盘、音箱D: 扫描仪、键盘、只读光盘()9. 现代计算机系统是以为中心的。
A: 中央处理器B: 内存C: 运算器D: 控制器()10. 计算机中必要的、使用最广泛的、用于人机交互的输出设备是。
A: 打印机B: 显示器C: 绘图仪D: 声卡()11. 半导体只读存储器(ROM)和半导体随机存储器(RAM)的主要区别在于。
A: ROM 可以永久保存信息,RAM 在掉电后信息会消失B: ROM 掉电后,信息会消失,RAM 不会C: ROM 是内存储器,RAM 是外存储器D: RAM 是内存储器,ROM 是外存储器()12. CPU 的中文意思是。
A: 中央处理器B: 主机C: 控制器D: 计算机器()13. 内存和外存的主要不同在于。
A: CPU 可以直接处理内存中的信息,速度快,存储容量大;外存则相反。
第2章JA V A语言基础
首先,观察第1章的两个样例程序,了解JA V A Application程序的一般特点:
2.1 语言成分
2.1.1 关键字与标识符
(1)JA V A语言有40多个关键字,其中约一半与C语言相同,其含义及用法也相同。
(2)JA V A语言标识符(变量、常量等)命名规则与C语言也基本相同。
Q1:下列哪些标识符是合法的?
X2 2x x_2 x+y
Q2: X和x是同一个标识符吗?
小知识:在实际工作中,标识符的命名是很重要的事,不仅要合法,而且要合理,要满足见名知意、作用域尽可能小等原则,和企业(及项目组的规定)
(3)JA V A语言的代码注释方法与C语言也基本相同
比如://单行注释
/* 多行注释。
*/
Q3:一个完整程序的注释应有哪几个部分?各应该写什么内容?
2.1.2 基本数据类型
计算机主要用于事务处理和科学计算,在这些应用领域,要用到很多数据类型。
比如:用于计算的整数、小数等数值类型;
用于事务处理的字符和字符串;
用于判断真伪的布尔型;
用于集中处理一组数据的数组。
JA V A语言支持多种数据类型,下面分别介绍:
简单数据类型
(八进制数以0前缀,十六进制数以0x或0X为前缀)
小知识:JA V A是纯面向对象的语言,与C语言不同的是,JA V A的简单数据类型也是面向对象的,它们本身也是类,有属性和操作,这一点以后再介绍。
引用数据类型:
数组、类、接口,以后陆续介绍。
小知识:JA V A引用数据类型和简单数据类型有什么区别?
基本(简单)类型是值,引用类型是指针。
在函数参数的传递上,简单数据类型默认是值传递(还记得C/C++函数的值传递吗?只传参数值的副本而不改变参数原值)。
而引用数据类型是引用传递(相当于一个指针,但JA V A语言取消了指针而代之以引用。
还记得C/C++函数对数组的参数传递吗?你不需在数组形参前加指针,就可以改变数组参数原值。
C/C++数组本身就是指针,在JA V A里改成引用)。
小知识:强类型语言和弱类型语言
很多同学在学习编程语言时,对繁杂的数据类型及类型转换规则感觉很头痛。
为什么编程语言要做如此繁琐的规定?与C/C++一样,JA V A是一种强类型语言。
实际上按类型划分,高级编程语言可分为强类型的(如C/C++/JA V A/C#/、弱类型的(如VB)和无类型的(如Vbsrcript)。
为什么大多数主流语言都是强类型的?从编译器的设计上看,编译时所有对象类型(除多态对象外)均确定,因此在内存的位置也确定,这可以简化编译器的设计、提高效率、节约资源;其次它可以帮助程序员检查一些类型的不匹配引起的错误,比如将一个整数和一个字符串相加,这可能有违程序员的本意,也可能会给程序带来潜在的危险,这时编译器会给你报错。
强类型语言有利于提高程序的健壮性,但也给程序员带来一些麻烦,你必需时时留意类型转换问题,否则编译器就报错,但从长远来说它将帮助你减少程序出错的可能性。
对于强类型的编程语言,数据类型转换是程序员常用又极容易犯大错误的地方,一定要特别小心,反复验证。
在
一些专业的JA V A编程书里,对数据类型转换都加以较详尽的说明,对我们这本初学者入门教材,则不是重要内容。
但是我们要知道:不正确的数据类型转换是编程重大隐患所在,有时后编译器不能识别这种错误。
强类型的编程语言对数据类型检查较完善,适合可靠性要求高的应用。
而弱类型(如VB)和无类型的(如Vbsrcript)编程语言,数据类型检查很松散,程序员也不需做细致的类型检查,适合可靠性要求低的应用。
2.1.3 常量与变量
我们在中学学习代数的时侯就会定义变量和常量了。
JA V A语言变量和常量的概念与代数类似。
看教材P28-29。
注:P29的最终变量与符号常量实际上是一回事。
2.1.4 运算符与表达式
0 赋值运算符
赋值运算符“=”是最常用的运算符。
int x=10;
x=x+2; //x=12
1运算符
JA V A主要有4类运算符:
◆算术运算符;+,-,*,/,++,--等
◆位运算符:&, | , !,<<, >>等
◆关系运算符;>,<, >=, ==
◆布尔运算符。
&, | , !等
Q4:if (x= =10); 和if (10 = = x) 哪种写法更好?
Q5:用运算符写一个表达式,能最有效率的算出2*8
注意P33运算符(6)-(13)
逗号运算符,常用于for循环,比如for(i=1, i=100, i++)
Q6:var = (235,567); var为多少?a=(3*5,a*4);a为多少?
2. 运算符的优先级
与C/C++语言基本相同。
3. 运算符的结合性(左结合,右结合)
与C/C++语言基本相同。
4 表达式
(略。
)
5 JA V A“简单数据类型”的转换(补充教材)
这一小节是对教材P35“5类型兼容原则”的另一种讲述方法。
教材这一部分介绍了JA V A作为强类型语言,常见的数据类型转换规则,但是写得比较难理解,我做一个通俗点的介绍。
JA V A作为强类型语言,数据类型转换规则相当烦杂枯燥,这里先不做全面介绍,只介绍初学者编程常见的“简单数据类型”转换方式。
前面介绍的Java整型、浮点型、字符型被视为简单数据类型,这些类型由低级到高级分别为:
(byte,short,char)--int--long--float--double
当从低级到高级转换时,我们叫“赋值相容”,这种转换是隐式的(或叫自动的),不需要特别处理,比如以下转换是合法的:
--------------------------------------------------------------------------------
short x=100;
int i=x;
long l=i;
float f=l;
double d=f;
--------------------------------------------------------------------------------
下面的例子,字符型转为整型也是合法的,自符型会转换为对应ASCII码值,例如
--------------------------------------------------------------------------------
char a='c';
int i=a;
System.out.println(i);
--------------------------------------------------------------------------------
输出: 99; (99是c的ASCII码值)
对于平级(byte,short,char是平级的)和高级到低级的转换,是“赋值不相容”,这种转换是显式的(或叫非自动的、强制的类型转换),被转换的数据前面必需加一个(类型说明)。
例如:对于byte,short,char三种类型而言,他们是平级的,因此不能相互自动转换,可以使用下述的强制类型转换。
--------------------------------------------------------------------------------
short i=99;
char a=(char)i; //()为强制类型转换符
System.out.println(c);
--------------------------------------------------------------------------------
输出:c; (99是c的ASCII码值)
下面是一个从高级到低级,必需使用强制类型转换的例子:
--------------------------------------------------------------------------------
double x=99;
int i=(int)x;
byte b=(byte)i;
char c=(char)i;
--------------------------------------------------------------------------------
可以想象,这种转换可能会导致数据溢出,要特别小心。
看这个程序
运行结果是:99
如果把x改为99999呢?
运行结果是:-97
b为什么变成-97呢?因为b的类型是byte,只有8位,数据表示范围是-127—128,当遇到99999时,b溢出了,变成一个莫名其妙的-97。
从这个例子我们看出数据类型转换的危险性,本例这种情况编译器不给你报错,因为代码完全符合语法要求。
这需要程序员认真测试:将x的值从最小到最大都测一遍。
再看这个例子:
我们希望b为128,但程序的输出却是-128。
这种情况编译器不给你报错,因为代码完全符合语法要求。
需要程序员认真测试。
从上面两个例子看出:数据类型转换多么容易出错,即便强类型的语言也不能避免。
在实际工作中,如过出现这种错误,可能会造成严重问题。
Q7:对上面的两个例子,我们应该怎样测试程序才能确保不出现类型转换错误?。