描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302518990丛书名: 高等院校计算机任务驱动教改教材
本书在基础部分中紧紧围绕“理论知识 开发案例”的模式进行编写,在项目部分中以一个完整的项目为主线,将所学的知识应用到项目中。本书非常注重基础,内容丰富,简单易懂,每个章节所对应的例子和项目的代码十分完整,书中配备了绝大部分例子运行结果的截图,一目了然。
本书适合作为高等院校应用型本科及职业院校计算机、软件工程等相关专业的教材,或供Java开发工程师等相关人员参考阅读,更可以作为Java自学者和Java爱好者的参考读物。
1.1Java语言的诞生与发展前景1
1.1.1Java语言的诞生1
1.1.2Java语言的发展前景1
1.2Java 语言的特点2
1.3了解JVM2
1.4Java开发工具的下载与安装3
1.5Eclipse的下载与安装3
1.6第一个Java程序3
1.7本章小结7
第2章Java语言基础8
2.1标识符和保留字8
2.1.1标识符8
2.1.2保留字8
2.1.3注释9
2.1.4Java分隔符9
2.2数据类型10
2.2.1整数类型10
2.2.2浮点数据类型11
2.2.3字符型数据11
2.2.4布尔型数据12
2.3运算符与表达式12
2.3.1运算符12
2.3.2表达式16
2.3.3运算符的优先级和结合性16
2.3.4instanceof 的用法17
2.4Java常用的输入/输出功能17
2.5Java流程控制语句18
2.5.1分支语句18
2.5.2循环语句20
2.6本章小结22Java软件开发技术目录第3章数组与字符串23
3.1数组23
3.1.1数组的定义23
3.1.2数组初始化24
3.1.3数组的相关操作25
3.2字符串25
3.2.1String类25
3.2.2StringBuffer类27
3.3本章小结29
第4章类与对象30
4.1面向对象编程概述30
4.1.1结构化编程思想30
4.1.2面向对象编程思想31
4.2类33
4.2.1类的概念33
4.2.2类的基本构成34
4.2.3内部类、匿名类及嵌套类37
4.3对象38
4.3.1创建对象38
4.3.2对象的使用39
4.3.3对象的消亡39
4.4变量39
4.4.1类中变量的分类39
4.4.2变量的内存分配40
4.4.3实例变量和类变量的比较41
4.4.4变量初始化与赋值43
4.5方法46
4.5.1方法概述47
4.5.2方法分类47
4.5.3方法调用中的数据传递50
4.5.4类中的重要方法54
4.6包与import语句59
4.6.1包59
4.6.2import语句61
4.7类的进一步说明62
4.7.1不可变类与可变类62
4.7.2泛型类66
4.8本章小结68第5章继承与多态69
5.1继承69
5.1.1继承的含义69
5.1.2子类的继承性的访问控制71
5.1.3子类对象的构造过程73
5.1.4子类的内存分布74
5.1.5子类对象的成员初始化75
5.1.6成员变量的隐藏76
5.1.7方法重载与方法重写77
5.1.8this关键字82
5.1.9super关键字84
5.1.10对象的上、下转型对象87
5.2接口89
5.2.1接口的声明90
5.2.2接口体91
5.2.3接口的多继承91
5.2.4接口的实现91
5.2.5接口回调92
5.3抽象类93
5.3.1抽象类的基本概念93
5.3.2抽象类的使用94
5.3.3抽象类的使用限制95
5.4接口和抽象类的异同97
5.5本章小结98
第6章Java异常处理机制99
6.1Java异常体系结构99
6.2Java异常处理的基本结构101
6.2.1try…catch…finally语句块101
6.2.2throws间接抛出异常104
6.2.3throw直接抛出异常105
6.2.4finally块106
6.2.5异常处理的嵌套107
6.3自定义异常108
6.4Java常见的异常处理类109
6.5本章小结109第7章Java图形用户界面设计110
7.1Java AWT和Swing基础110
7.1.1基本概念110
7.1.2组件的继承关系110
7.1.3利用组件进行程序设计的基本步骤110
7.2常用容器111
7.2.1框架112
7.2.2面板113
7.2.3滚动窗口114
7.2.4菜单115
7.2.5对话框116
7.3事件处理及常见事件118
7.3.1Java的事件处理118
7.3.2委托事件模型120
7.3.3常见事件121
7.4常用组件127
7.4.1文本输入常用组件127
7.4.2选择组件129
7.4.3其他组件131
7.5布局管理器134
7.5.1FlowLayout布局135
7.5.2BorderLayout布局135
7.5.3GridLayout布局137
7.5.4CardLayout布局138
7.5.5null布局140
7.6本章小结141
第8章Java常用类142
8.1System类143
8.2包装类144
8.2.1Double类和Float类144
8.2.2Byte、Integer、Short、Long类145
8.2.3Character类146
8.2.4Boolean类147
8.3Date类与Calendar类148
8.3.1Date类148
8.3.2DataFormat类148
8.3.3Calendar类149
8.4Math类与Random类151
8.4.1Math类151
8.4.2Random类152
8.5本章小结154
第9章流与文件155
9.1流的概念155
9.2标准输入/输出156
9.3File 类157
9.4FileInputStream类和FileOutputStream类158
9.5Reader类和Writer类160
9.6DataInputStream类和DataOutputStream类162
9.8本章小结164
第10章Java集合框架165
10.1集合框架概述165
10.2Collection接口166
10.3Set接口及其实现类167
10.3.1Set接口167
10.3.2HashSet167
10.3.3LinkedHashSet168
10.3.4TreeSet168
10.4List接口及其实现类169
10.4.1ArrayList170
10.4.2LinkedList170
10.4.3Vector172
10.4.4Stack172
10.5Map接口及其实现类173
10.5.1HashMap174
10.5.2LinkedHashMap175
10.5.3TreeMap176
10.6本章小结177
第11章Java多线程178
11.1多线程的概念178
11.1.1常见线程179
11.1.2线程的生命周期180
11.2创建多线程的方法183
11.2.1继承Thread类实现多线程183
11.2.2用Runnable接口实现多线程184
11.2.3Thread和Runnable的区别185
11.3常用方法的使用说明186
11.4资源的协调与同步192
11.4.1线程同步192
11.4.2synchronized193
11.5线程间通信204
11.5.1共享变量和方法封装在一个类中204
11.5.2通过系统方法实现线程通信205
11.6本章小结207
第12章Java网络编程208
12.1网络编程概述208
12.2网络编程基础209
12.2.1OSI参考模型和TCP/IP协议209
12.2.2IP地址、域名和端口209
12.3Java网络编程的常用类212
12.3.1URL(统一资源定位器)212
12.3.2InetAddress类213
12.3.3套接字214
12.3.4TCP编程214
12.3.5UDP编程221
12.4本章小结225
第13章局域网聊天室226
13.1需求分析226
13.2服务器端主界面227
13.3服务器端启动按钮事件的处理229
13.4服务器端收发消息的处理232
13.5服务器端其他按钮事件的处理235
13.6客户端主界面开发237
13.7客户端连接按钮事件的处理240
13.8客户端发消息按钮的处理243
13.9客户端其他按钮事件的处理244
13.10本章小结246
参考文献247
目前市场上关于Java基础学习的相关书籍非常多,但是我们根据分析和统计,多数书籍要么讲得过于高深,读者难于掌握和理解;要么就是大而全,把Java基础的所有知识点全部罗列出来,知识点太多,重点不突出,读者难于取舍。本书结合其他书籍的优点和不足,主要从初学者的角度来讲解相关知识点,以具体的例子来讲解知识,让读者能够根据实际的例子进行练习,最后以一个完整的项目进行训练学习。本书提供的电子资源给出了案例的完整代码供读者学习使用。
归纳起来,本书有如下特色:
(1) 第1~12章的基础部分中配备了大量的实际例子用于理解知识。针对学习中容易混淆的Java基础编程知识,通过实际的案例来描述不同知识点的区别。
(2) 第13章的项目部分中以一个实际项目为范本贯穿整个开发的过程,并将前面所学的基础知识运用到实际的项目中,这个项目分步骤地详细讲解了每一个开发过程的流程和代码,让初学者亲身体会一个项目从头到尾是怎么做出来的,每一个阶段都有对应的运行结果。
(3) 为多种教学方法提供了素材,这些教学方法包括案例教学法、项目教学法、项目驱动法、讲授法。
(4) 本书中的所有例子都经过测试,能够正常运行并看到结果,为读者的学习提供了极大便利。
(5) 本书有利于培养应用型本科院校以及职业院校学生的动手实践能力。
本书由重庆工程学院教师赖敏担任主编,黄炜、李冀明、张浩然担任副主编,具体分工如下: 第1~2章、第5~6章、第10~13章由赖敏编写,第3~4章由黄炜编写,第7~8章由李冀明编写,第9章由张浩然编写。赖敏负责全书的框架设计和统稿工作,黄炜参与了本书的审阅、勘误和代码验证工作。
本书的编写工作得到了领导和同事的大力支持和帮助,在此一并表示感谢!
在本书的编写过程中参考了许多相关的文献资料,在此向这些文献的作者表示衷心的感谢!由于编写水平有限,书中难免有不足之处,恳请专家和广大读者批评指正。
编者2019年1月
数组与字符串
大家都知道数组是常用的数据结构,它是由有限个相同数据类型的元素所构成的集合。在Java语言中,数组是属于复合数据类型,是由使用者自己来定义的,它实际上是一种隐含的“数组类”的实例。字符串是Java中的一个常用类,本章主要介绍String类和StringBuffer类。
3.1数组
数组名就是该实例的一个引用,同样,数组元素是对数组元素类实例的引用。正因为如此,所以在构建数组时就像构建对象一样要分几个步骤进行,关键步骤是数组定义和数组初始化。
3.1.1数组的定义
与C和C 不同,数组声明仅指定了数组的名字和数组元素的类型,Java的数组在使用前必须先创建。创建数组即创建数组空间,对简单数据类型的数据元素还可同时进行初始化,一般有两种方式。
1. 定义一维数组
type var[];或type[] var;声明数组时不能指定其长度(数组中元素的个数),Java中使用关键字new创建数组对象,格式为: 数组名=new 数组元素的类型 [数组元素的个数]例如:int num[];
num=new int[3];或int num[]=new int[3];2. 定义二维数组
例如:Java软件开发技术第3章数组与字符串int [][] num;//定义了一个二维数组num,这个数组有三行
num=new int[3][];
num[0]=new int[5];//数组第一行有5个元素
num[1]=new int[3];//数组第二行有3个元素
num[2]=new int[2];//数组第三行有2个元素3.1.2数组初始化〖*2〗1. 静态初始化在定义数字的同时就为数组元素分配空间并赋值。
【例31】package pk31;
public class ArrayTest1 {
public static void main(String args[]) {
int a[]={ 0,1,2,3,4,5,6,7,8,9 };//静态初始化a数组
for(int i=0;iSystem.out.println(“a[” i “]=” a[i]);//打印出每一个数组元素的值
}
}
}程序的运行结果如图31所示。
图31例31的运行结果
2. 动态初始化
数组定义与为数组分配空间和赋值的操作分开进行。
【例32】package pk31;
public class ArrayTest2{
public static void main(String args[]) {
int b[];
b=new int[3]; //动态初始化b数组
b[0]=1;
b[1]=21;
b[2]=31;
for(int i=0;iSystem.out.println(“b[” i “]=” b[i]);//打印出每一个数组元素的值
}
}
}程序的运行结果如图32所示。
图32例32的运行结果
3. 默认初始化
数组是引用类型,它的元素相当于类的成员变量,因此数组分配空间后,每个元素也按照成员变量的规则被隐式初始化。
3.1.3数组的相关操作
(1) 在Java中,所有的数组都有一个默认的属性length,用于获取数组中元素的个数。
(2) 数组的复制: System.arraycopy()。
(3) 数组的排序: Arrays.sort()。
(4) 在已排序的数组中查找某个元素: Arrays.binarySearch()。
3.2字符串〖*4/5〗3.2.1String类字符串String广泛应用在Java编程中,在 Java 中字符串属于对象。Java 提供了 String 类来创建和操作字符串。创建字符串最简单的方式如下:String str=”我是一个字符串”;在代码中遇到字符串常量时,这里的值是”我是一个字符串”,编译器会使用该值创建一个String对象。和其他对象一样,可以使用关键字和构造方法来创建String对象。下面是String类常用的方法。
1. 字符串查找
String提供了两种查找字符串的方法,即indexOf()与lastIndexOf()方法。
(1) indexOf(String s)
该方法用于返回参数字符串s在指定字符串中首次出现的索引位置,当调用字符串的indexOf()方法时,会从当前字符串的开始位置搜索s的位置;如果没有检索到字符串s,该方法返回-1。String str=”We are students”;
int size=str.indexOf(“a”); //变量size的值是3
(2) lastIndexOf(String str)
该方法用于返回字符串最后一次出现的索引位置。当调用字符串的lastIndexOf()方法时,会从当前字符串的开始位置检索参数字符串str,并将最后一次出现str的索引位置返回。如果没有检索到字符串str,该方法返回-1。
如果lastIndexOf()方法中的参数是空字符串””,则返回的结果与length方法的返回结果相同。
2. 获取指定索引位置的字符
使用charAt()方法可返回指定索引处的字符。String str=”hello word”;
char mychar= str.charAt(5);//mychar的结果是w3. 获取子字符串
通过String类的substring()方法可对字符串进行截取。这些方法的共同点就是都利用字符串的下标进行截取,且应明确字符串下标是从0开始的。在字符串中空格占用一个索引位置。
(1) substring(int beginIndex)
该方法返回的是从指定的索引位置开始截取直到该字符串结尾的子串。String str=”Hello word”;
String substr=str.substring(3); //获取字符串,此时substr的值为”lo word”(2) substring(int beginIndex, int endIndex)
beginIndex: 开始截取子字符串的索引位置。
endIndex: 子字符串在整个字符串中的结束位置。String str=”Hello word”;
String substr=str.substring(0,3); //substr的值为hel4. 去除空格
trim()方法返回字符串的副本,去掉前导空格和尾部空格。
5. 字符串替换
replace(char oldChar,char newChar)方法可实现将指定的字符或字符串替换成新的字符或字符串。
oldChar: 要替换的字符或字符串。
newChar: 用于替换原来字符串的内容。
如果要替换的字符oldChar在字符串中重复出现多次,replace()方法会将所有oldChar全部替换成newChar。需要注意的是,要替换的字符oldChar的大小写要与原字符串中字符的大小写保持一致。String str=”address”;
String newstr=str.replace(“a”, “A”);//newstr的值为Address6. 判断字符串的开始与结尾
startsWith()方法与endsWith()方法分别用于判断字符串是否以指定的内容开始或结束。这两个方法的返回值都为boolean类型。
(1) startsWith(String prefix)
该方法用于判断当前字符串对象的前缀是否是参数指定的字符串。
(2) endsWith(String suffix)
该方法用于判断当前字符串是否以给定的子字符串结束。
7. 判断字符串是否相等
(1) equals(String otherstr)
如果两个字符串具有相同的字符和长度,则使用equals()方法比较时,返回true。同时equals()方法比较时区分大小写。
(2) equalsIgnoreCase(String otherstr)
equalsIgnoreCase()方法与equals()方法作用类似,不过在比较时忽略了大小写。
8. 字母大小写转换
toLowerCase()方法可将字符串中的所有字符从大写字母改写为小写字母,而tuUpperCase()方法可将字符串中的小写字母改写为大写字母。str.toLowerCase();
str.toUpperCase();9. 字符串分隔
使用split()方法可以使字符串按指定的分隔字符或字符串对内容进行分隔,并将分隔后的结果存放在字符数组中。
例如,“str.split(String sign);”中,sign为分隔字符串的分隔符,也可以使用正则表达式。
没有统一的对字符串进行分隔的符号。如果想定义多个分隔符,可使用符号“|”。例如,“,|=”表示分隔符分别为“,”和“=”。str.split(String sign, in limit);该方法可根据给定的分隔符对字符串进行拆分,并限定拆分的次数。
3.2.2StringBuffer类
StringBuffer类和String类一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和String不同,所以StringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于String类。所以在实际使用时,如果经常需要对一个字符串进行修改,例如插入、删除等操作,使用StringBuffer要更加适合一些。
1. StringBuffer对象的初始化
StringBuffer对象的初始化不像String类的初始化一样,Java提供了特殊的语法,而通
评论
还没有评论。