Java 2实用教程(第5版)
批量上传,套装书可能不全,下单前咨询在线客服! 正版书 !!!
¥
39.02
6.6折
¥
59.5
全新
库存14件
作者耿祥义//张跃平
出版社清华大学
ISBN9787302464259
出版时间2017-05
装帧其他
开本16开
定价59.5元
货号9787302464259
上书时间2024-10-20
商品详情
- 品相描述:全新
- 商品描述
-
前言
商品简介
Java 语言是一种很优秀的语言,具有面向对象、与平台无关、安全、稳定和多线程等优良特性,特别适合于网络应用程序的设计,已经成为网络时代*重要的语言之一。 全书共分15章,分别介绍了Java的基本数据类型,运算符、表达式和语句,类与对象,子类与继承,接口与实现,内部类与异常类,常用实用类,组件及事件处理,输入、输出流,JDBC与MySQL数据库,Java多线程机制,Java网络编程,图形、图像与音频,泛型与集合框架等内容。 本书注重可读性和实用性,配备了大量的例题和习题。这些例题和习题都经过精心的考虑,既能帮助理解知识,又具有启发性。本书通俗易懂,便于自学,针对较难理解的问题,都是从简单到复杂,逐步深入地引入例子,便于读者掌握Java面向对象编程思想。扫描每章提供的二维码可观看相应章节的视频讲解。 本书既可作为高等院校相关专业Java程序设计的教材,也可供自学者及软件开发人员参考。
作者简介
耿释义,1995年中国科学技术大学博士毕业,获理学博士学位。1997年从中山大学博士后流动站出站。现任大连交通大学教授。有多年讲授Java语言的经验,已编写出版十余部教材。
目录
第1章 Java入门
第2章 基本数据类型与数组
第3章 运算符、表达式和语句
第4章 类与对象
第5章 子类与继承
第6章 接口与实现
第7章 内部类与异常类
第8章 常用实用类
第9章 组件及事件处理
第10章 输入、输出流
第11章 BC与MySQL数据库
第12章 Java多线程机制
第13章 Java网络编程
第14章 图形、图像与音频
第15章 泛型与集合框架
内容摘要
Java语言是一种很的语言,具有面向对象、与平台无关、安全、稳定和多线程等优良特性,特别适合于网络应用程序的设计,已经成为网络时代重要的语言之一。
由耿祥义、张跃平编著的《Java2实用教程(第5版微课版高等学校Java课程系列教材)》共分15章,分别介绍了Java的基本数据类型,运算符、表达式和语句,类与对象,子类与继承,接口与实现,内部类与异常类,常用实用类,组件及事件处理,输入、输出流,BC与MySQL数据库,Java多线程机制,Java网络编程,图形、图像与音频,泛型与集合框架等内容。
本书注重可读性和实用性,配备了大量的例题和习题。这些例题和习题都经过精心的考虑,既能帮助理解知识,又具有启发性。本书通俗易懂,便于自学,针对较难理解的问题,都是从简单到复杂,逐步深入地引入例子,便于读者掌握Java面向对象编程思想。扫描每章提供的二维码可观看相应章节的视频讲解。
本书既可作为高等院校相关专业Java程序设计的教材,也可供自学者及软件开发人员参考。
主编推荐
基础与实战。相关概念及知识点都辅以相应的实例,通俗易懂,便于理解掌握面向对象的编程思想。实用与流行。涵盖了Java开发过程中重要的及流行的方法和技巧,讲解细致,环环相扣。教学与互动。文字叙述注重可读性,知识组织注意合理性,提供辅助在线教学平台。
【内容简介】
精彩内容
第3章运算符、表达式和语句 主要内容?运算符与表达式?语句概述?if条件分支语句?switch开关语句?循环语句?break和continue语句?数组与for语句3.1运算符与表达式 Java提供了丰富的运算符,如算术运算符、关系运算符、逻辑运算符、位运算符等。Java语言中的绝大多数运算符和C语言相同,基本语句如条件分支语句、循环语句等也和C语言类似,因此,本章就主要知识点给予简单的介绍。
3.1.1算术运算符与算术表达式 加减运算符 加减运算符+,–是二目运算符,即连接两个操作元的运算符。加减运算符的结合方向是从左到右。例如2+3–8,先计算2+3,然后再将得到的结果减8。加减运算符的操作元是整型或浮点型数据,加减运算符的优先级是4级。
乘、除和求余运算符 乘、除和求余运算符*、/、%是二目运算符,结合方向是从左到右,例如2*3/8,先计算2*3,然后再将得到的结果除以8。乘,除和求余运算符的操作元是整型或浮点型数据,*、/、%运算符的优先级是3级。
用算术运算符和括号连接起来的符合Java语法规则的式子,称为算术表达式。如x+2*y–30+3*(y+5)。
3.1.2自增、自减运算符 自增、自减运算符++、–?–是单目运算符,可以放在操作元之前,也可以放在操作元之后。操作元必须是一个整型或浮点型变量,作用是使变量的值增1或减1,例如: ++x(–?–x)表示在使用x之前,先使x的值增(减)1。
x++(x–?–)表示在使用x之后,使x的值增(减)1。
粗略地看,++x和x++的作用相当于x=x+1。但++x和x++的不同之处在于,++x是先执行x=x+1再使用x的值,而x++是先使用x的值再执行x=x+1。如果x的原值是5,则对于“y=++x;”,y的值为6,对于“y=x++;”,y的值为5。
3.1.3算术混合运算的精度 精度从“低”到“高”排列的顺序是: byteshortcharintlongfloatdouble。
Java在计算算术表达式的值时,使用下列运算精度规则: (1)如果表达式中有双精度浮点数(double型数据),则按双精度进行运算。例如,表达式5.0/2+10的结果12.5是double型数据。
(2)如果表达式中最高精度是单精度浮点数(float型数据),则按单精度进行运算。例如,表达式5.0F/2+10的结果12.5是float型数据。
(3)如果表达式中最高精度是long型整数,则按long精度进行运算。例如,表达式12L+100+''a''的结果209是long型数据。
(4)如果表达式中最高精度低于int型整数,则按int精度进行运算。例如,表达式(byte)10+''a''和5/2的结果分别为107和2,都是int型数据。
Java允许把不超出byte、short和char的取值范围的算术表达式的值赋给byte、short和char型变量。例如,(byte)30+''a''是结果为127的int型常量,
bytex=(byte)20+''a'';
是正确的,但
bytex=(byte)30+''b'';
却无法通过编译,编译错误是“可能损失精度,找到int需要byte”,其原因是(byte)30+''b''的结果是int型常量,其值超出了byte变量的取值范围(见上面关于运算精度的讲述(4))。
3.1.4关系运算符与关系表达式 关系运算符是二目运算符,用来比较两个值的关系。关系运算符的运算结果是boolean型,当运算符对应的关系成立时,运算结果是true,否则是false。例如,10<9的结果是false,5>1的结果是true,3!=5的结果是true,10>20–17的结果为true,因为算术运算符的级别高于关系运算符,10>20–17相当于10>(20–17),其结果是true。
结果为数值型的变量或表达式可以通过关系运算符(如表3.1所示)形成关系表达式。例如4>8,(x+y)>80等。
表3.1关系运算符运算符优先级用法含义结合方向><>=<===!=666677op1>op2op1=op2op1<=op2op1==op2op1!=op2大于小于大于等于小于等于等于不等于左到右左到右左到右左到右左到右左到右3.1.5逻辑运算符与逻辑表达式 逻辑运算符包括&&、||、!。其中&&、||为二目运算符,实现逻辑与、逻辑或;!为单目运算符,实现逻辑非。逻辑运算符的操作元必须是boolean型数据,逻辑运算符可以用来连接关系表达式。
表3.2给出了逻辑运算符的用法和含义。
表3.2逻辑运算符运算符优先级用法含义结合方向&&||!11122op1&&op2op1||op2!op逻辑与逻辑或逻辑非左到右左到右右到左
结果为boolean型的变量或表达式可以通过逻辑运算符形成逻辑表达式。表3.3给出了用逻辑运算符进行逻辑运算的结果。
表3.3用逻辑运算符进行逻辑运算op1op2op1&&op2op1||op2!op1truetruetruetruefalsetruefalsefalsetruefalsefalsetruefalsetruetruefalsefalsefalsefalsetrue
例如,2>8&&9>2的结果为false,2>8||9>2的结果为true。由于关系运算符的级别高于&&、||的级别,2>8&&8>2相当于(2>8)&&(9>2)。
逻辑运算符&&和||也称作短路逻辑运算符,这是因为当op1的值是false时,&&运算符在进行运算时不再去计算op2的值,直接就得出op1&&op2的结果是false;当op1的值是true时,||运算符在进行运算时不再去计算op2的值,直接就得出op1||op2的结果是true。
3.1.6赋值运算符与赋值表达式 赋值运算符=是二目运算符,左面的操作元必须是变量,不能是常量或表达式。设x是一个整型变量,y是一个boolean型变量,x=20和y=true都是正确的赋值表达式,赋值运算符的优先级较低,是14级,结合方向是从右到左。
赋值表达式的值就是=左面变量的值。例如,假如a、b是两个int型变量,那么表达式b=12和a=b=100的值分别是12和100。
注意不要将赋值运算符=与等号关系运算符==混淆,例如,12=12是非法的表达式,而表达式12==12的值是true。
3.1.7位运算符 整型数据在内存中以二进制的形式表示,例如一个int型变量在内存中占4个字节共32位,int型数据7的二进制表示是:
00000000000000000000000000000111
左面最高位是符号位,最高位是0表示正数,是1表示负数。负数采用补码表示,例如–8的补码表示是:
111111111111111111111111111111000 这样就可以对两个整型数据实施位运算,即对两个整型数据对应的位进行运算得到一个新的整型数据。
按位与运算 按位与运算符&是双目运算符,对两个整型数据a、b按位进行运算,运算结果是一个整型数据c。运算法则是:如果a、b两个数据对应位都是1,则c的该位是1,否则是0。如果b的精度高于a,那么结果c的精度和b相同。
例如: a:00000000000000000000000000000111 &b:10000001101001011111001110101011 c:00000000000000000000000000000011 按位或运算 按位或运算符|是二目运算符,对两个整型数据a、b按位进行运算,运算结果是一个整型数据c。运算法则是:如果a、b两个数据对应位都是0,则c的该位是0,否则是1。如果b的精度高于a,那么结果c的精度和b相同。
按位非运算 按位非运算符~是单目运算符,对一个整型数据a按位进行运算,运算结果是一个整型数据c。运算法则是:如果a对应位是0,则c的该位是1,否则是0。
按位异或运算 按位异或运算符^是二目运算符,对两个整型数据a、b按位进行运算,运算结果是一个整型数据c。运算法则是:如果a、b两个数据对应位相同,则c的该位是0,否则是1。如果b的精度高于a,那么结果c的精度和b相同。
由异或运算法则可知:a^a=0,a^0=a。
因此,如果c=a^b,那么a=c^b,也就是说,^的逆运算仍然是^,即a^b^b等于a。
位运算符也可以操作逻辑型数据,法则是: 当a、b都是true时,a&b是true,否则a&b是false。
当a、b都是false时,a|b是false,否则a|b是true。
当a是true时,~a是false;当a是false时,~a是true。
位运算符在操作逻辑型数据时,与逻辑运算符&&、||、!不同的是:位运算符要计算完a和b的值之后再给出运算的结果。例如,x的初值是1,那么经过下列逻辑比较运算后,
((y=1)==0))&&((x=6)==6));
x的值仍然是1,但是如果经过下列位运算之后,
((y=1)==0))&((x=6)==6));
x的值将是6。
在下面的例子1中,利用异或运算的性质,对几个字符进行加密并输出密文,然后再解密,运行效果如图3.1所示。
例子1 Example3_1.javapublicclassExample3_1{publicstaticvoidmain(Stringargs[]){chara1=''十'',a2=''点'',a3=''进'',a4=''攻'';charsecret=''A'';a1=(char)(a1^secret);a2=(char)(a2^secret);a3=(char)(a3^secret);a4=(char)(a4^secret);System.out.println(\\\"密文:\\\"+a1+a2+a3+a4);a1=(char)(a1^secret);a2=(char)(a2^secret);a3=(char)(a3^secret;a4=(char)(a4^secret);System.out.println(\\\"原文:\\\"+a1+a2+a3+a4);}}3.1.8instanceof运算符 该运算符是二目运算符,左面的操作元是一个对象,右面是一个类。当左面的对象是右面的类或子类创建的对象时,该运算符运算的结果是true,否则是false(有关细节详见 5.3.2节)。
3.1.9运算符综述 Java表达式就是用运算符连接起来的符合Java规则的式子。运算符的优先级决定了表达式中运算执行的先后顺序。例如,x表3.4运算符的优先级和结合性优先级描述运算符结合性1分隔符[]().,;2对象归类,自增自减运算,逻辑非instanceof++––!
右到左3算术乘除运算*/%左到右4算术加减运算+–左到右5移位运算>><<>>>左到右6大小关系运算<<=>>=左到右7相等关系运算==!=左到右8按位与运算&左到右9按位异或运算^左到右10按位或|左到右11逻辑与运算&&左到右12逻辑或运算||左到右13三目条件运算?:左到右14赋值运算=右到左3.2语句概述 Java里的语句可分为以下6类。
方法调用语句 如:
System.out.println(\\\"Hello\\\");
表达式语句 由一个表达式构成一个语句,即表达式尾加上分号。例如赋值语句:
x=23;
复合语句 可以用{}把一些语句括起来构成复合语句,例如:
{z=123+x;System.out.println(\\\"Howareyou\\\");}
空语句 一个分号也是一条语句,称作空语句。
控制语句 控制语句分为条件分支语句、开关语句和循环语句,将在后面的3.3~3.5节介绍。
package语句和import语句 package语句和import语句与类、对象有关,将在第4章讲解。
3.3if条件分支语句 条件分支语句按语法格式可细分为三种形式,以下是这三种形式的详细讲解。
3.3.1if语句 if语句是单条件单分支语句,即根据一个条件来控制程序执行的流程。
if语句的语法格式:
if(表达式){若干语句}
if语句的流程图如图3.2所示。在if语句中,关键字if后面的一对小括号()内的表达式的值必须是boolean类型,当值为true时,则执行紧跟着的复合语句,结束当前if语句的执行;如果表达式的值为false,结束当前if语句的执行。
需要注意的是,在if语句中,其中的复合语句中如果只有一条语句,{}可以省略不写,但为了增强程序的可读性最好不要省略(这是一个很好的编程风格)。
在下面的例子2中,将变量a、b、c中的数值按大小顺序进行互换(从小到大排列)。
例子2 Example3_2.java
publicclassExample3_2{publicstaticvoidmain(Stringargs[]){inta=9,b=5,c=7,t=0;if(b if-else语句的语法格式:
if(表达式){若干语句}else{若干语句}
if-else语句的流程图如图3.3所示。在if-else语句中,关键字if后面的一对小括号()内的表达式的值必须是boolean类型,当值为true时,则执行紧跟着的复合语句,结束当前if-else语句的执行;如果表达式的值为false,则执行关键字else后面的复合语句,结束当前if-else语句的执行。
下列是有语法错误的if-else语句。
if(x>0)y=10;z=20;elsey=-100;
正确的写法是:
if(x>0){y=10;z=20;}elsey=100;
需要注意的是,在if-else语句中,其中的复合语句中如果只有一条语句,{}可以省略不写,但为了增强程序的可读性最好不要省略(这是一个很好的编程风格)。
例子3中有两条if-else语句,其作用是根据成绩输出相应的信息,运行效果如图3.4所示。
例子3 Example3_3.java
publicclassExample3_3{publicstaticvoidmain(Stringargs[]){intmath=65,english=85;if(math>60){System.out.println(\\\"数学及格了\\\");}else{System.out.println(\\\"数学不及格\\\");}if(english>90){System.out.println(\\\"英语是优\\\");}else{System.out.println(\\\"英语不是优\\\");}System.out.println(\\\"我在学习if-else语句\\\");}}3.3.3if-elseif-else语句 if-elseif-else语句是多条件分支语句,即根据多个条件来控制程序执行的流程。
if-elseif-else语句的语法格式:
if(表达式){若干语句}elseif(表达式){若干语句}(else{若干语句}
if-elseif-else语句的流程图如图3.5所示。在if-elseif-else语句中,if以及多个elseif后面的一对小括号()内的表达式的值必须是boolean类型。程序执行if-elseif-else时,按该语句中表达式的顺序,首先计算第1个表达式的值,如果计算结果为true,则执行紧跟着的复合语句,结束当前if-elseif-else语句的执行,如果计算结果为false,则继续计算第2个表达式的值,依次类推,假设计算第m个表达式的值为true,则执行紧跟着的复合语句,结束当前if-elseif-else语句的执行,否则继续计算第m+1个表达式的值,如果所有表达式的值都为false,则执行关键字else后面的复合语句,结束当前if-elseif-else语句的执行。
图3.5if-elseif-else多条件、多分支语句 if-elseif-else语句中的else部分是可选项,如果没有else部分,当所有表达式的值都为false时,结束当前if-elseif-else语句的执行(该语句什么都没有做)。
需要注意的是,在if-elseif-else语句中,其中的复合语句中如果只有一条语句,{}可以省略不写,但为了增强程序的可读性最好不要省略。
3.4switch开关语句 switch语句是单条件多分支的开关语句,它的一般格式定义如下(其中break语句是可选的)。
switch(表达式){case常量值1:若干个语句break;case常量值2:若干个语句break;(case常量值n:若干个语句break;default:若干语句}
switch语句中“表达式”的值可以为byte、short、int、char型;“常量值1”到“常量值n”也是byte、short、int、char型,而且要互不相同。
switch语句首先计算表达式的值,如果表达式的值和某个case后面的常量值相等,就执行该case里的若干个语句直到碰到break语句为止。如果某个case中没有使用break语句,一旦表达式的值和该case后面的常量值相等,程序不仅执行该case里的若干个语句,而且继续执行后继的case里的若干个语句,直到碰到break语句为止。若switch语句中的表达式的值不与任何case的常量值相等,则执行default后面的若干个语句。switch语句中的default是可选的,如果它不存在,并且switch语句中表达式的值不与任何case的常量值相等,那么switch语句就不会进行任何处理。
前面学习的分支语句(if语句、if-else语句和if-elseif-else语句)的共同特点是根据一个条件选择执行一个分支操作,而不是选择执行多个分支操作。在switch语句中,通过合理地使用break语句,可以达到根据一个条件选择执行一个分支操作(一个case)或多个分支操作(多个case)的结果。
下面的例子4使用了switch语句判断用户从键盘输入的正整数是否为中奖号码。
例子4 Example3_4.java
importjava.util.Scanner;publicclassExample3_4{publicstaticvoidmain(Stringarg
— 没有更多了 —
以下为对购买帮助不大的评价