红色java书第十三讲
- 格式:pdf
- 大小:107.42 KB
- 文档页数:8
import java.util.Scanner;public class Exercise13_2 {public static void main(String[] args) {Scanner input = new Scanner(System.in);boolean done = false;int number1 = 0;int number2 = 0;// Enter two integersSystem.out.print("Enter two integers: ");while (!done) {try {number1 = input.nextInt();number2 = input.nextInt();done = true;}catch (Exception ex) {System.out.print("Incorrect input and re-enter two integers: ");input.nextLine(); // Discard input}}System.out.println("Sum is " + (number1 + number2));}}public class Exercise13_4{public static void main(String[] args) {try {new NewLoan(7.5, 30, 100000);NewLoan m = new NewLoan(-1, 3, 3);new NewLoan(7.5, 30, 20000);}catch (Exception ex){System.out.println(ex);}System.out.println("End of program");}}class NewLoan {private double annualInterestRate;private int numOfYears;private double loanAmount;/** Default constructor */public NewLoan() {this(7.5, 30, 100000);}/** Construct a NewLoan with specified annual interest rate,number of years and loan amount*/public NewLoan(double annualInterestRate, int numOfYears,double loanAmount) {if (annualInterestRate <= 0)throw new IllegalArgumentException("Annual interest rate must be positive.");if (numOfYears <= 0)throw new IllegalArgumentException("Number of years must be positive.");if (loanAmount <= 0)throw new IllegalArgumentException("Loan amount must be positive."); setAnnualInterestRate(annualInterestRate);setNumOfYears(numOfYears);setLoanAmount(loanAmount);}/** Return annualInterestRate */public double getAnnualInterestRate() {return annualInterestRate;}/** Set a new annualInterestRate */public void setAnnualInterestRate(double annualInterestRate) {if (annualInterestRate <= 0)throw new IllegalArgumentException("Annual interest rate must be positive.");this.annualInterestRate = annualInterestRate;}/** Return numOfYears */public int getNumOfYears() {return numOfYears;}/** Set a new numOfYears */public void setNumOfYears(int numOfYears){if (numOfYears <= 0)throw new IllegalArgumentException("Number of years must be positive.");this.numOfYears = numOfYears;}/** Return loanAmount */public double getLoanAmount() {return loanAmount;}/** Set a newloanAmount */public void setLoanAmount(double loanAmount) {if (loanAmount <= 0)throw new IllegalArgumentException("Loan amount must be positive.");this.loanAmount = loanAmount;}/** Find monthly payment */public double monthlyPayment() {double monthlyInterestRate = annualInterestRate / 1200;return loanAmount * monthlyInterestRate / (1 -(Math.pow(1 / (1 + monthlyInterestRate), numOfYears * 12)));}/** Find total payment */public double totalPayment() {return monthlyPayment() * numOfYears * 12;}}public class Exercise13_6 {public static void main(String[] args) {System.out.println(parseHex("A5"));System.out.println(parseHex("FAA"));System.out.println(parseHex("T10"));System.out.println(parseHex("ABC"));System.out.println(parseHex("10A"));}public static int parseHex(String hexString) {int value = convertHexToDec(hexString.charAt(0));for (int i = 1; i < hexString.length(); i++) {value = value * 16 + hexString.charAt(i) - '0';}return value;}static int convertHexToDec(char ch) {if (ch == 'A') {return 10;}else if (ch == 'B') {return 11;}else if (ch == 'C') {return 12;}else if (ch == 'D') {return 13;}else if (ch == 'E') {return 14;}else if (ch == 'F') {return 15;}else if (ch <= '9' && ch >= '0')return ch - '0';elsethrow new NumberFormatException("Illegal character: " + ch);}}public class Exercise13_8 {public static void main(String[] args) throws HexFormatException {System.out.println(parseHex("A5"));System.out.println(parseHex("FAA"));System.out.println(parseHex("T10"));System.out.println(parseHex("ABC"));System.out.println(parseHex("10A"));}public static int parseHex(String hexString) throws HexFormatException { int value = convertHexToDec(hexString.charAt(0));for (int i = 1; i < hexString.length(); i++) {value = value * 16 + hexString.charAt(i) - '0';}return value;}static int convertHexToDec(char ch) throws HexFormatException {if (ch == 'A') {return 10;}else if (ch == 'B') {return 11;}else if (ch == 'C') {return 12;}else if (ch == 'D') {return 13;}else if (ch == 'E') {return 14;}else if (ch == 'F') {return 15;}else if (ch <= '9' && ch >= '0')return ch - '0';elsethrow new HexFormatException("Illegal hex character: " + ch); }}class HexFormatException extends Exception { HexFormatException() {super("Illegal hex character");}HexFormatException(String message) {super(message);}}public class Exercise13_10 {public static void main(String[] args) {try {int[] list = new int[20000000];}catch (Error ex) {ex.printStackTrace();System.out.println("You are running out of memory.");}System.out.println("GO");javax.swing.JOptionPane.showMessageDialog(null, "Wait"); }}。
《Javscript实⽤教程》⽬录图书购买地址:京东:当当:天猫:注:本书提供课件,可向出版社索取。
⽬录Javascript实⽤教程 (1)⽬录 (2)第 1 部分 (12)◄ Javascript基础►. 12第 1 章 (13)◄ JavaScript 语法基础►. 131.1 基本概念和开发⼯具 (13)1.1.1 编程语⾔ (13)1.1.2 计算机语⾔ (13)1.1.3 编程语⾔ (13)1.1.4 翻译器 (14)1.1.5 编程语⾔和标记语⾔区别 (14)1.1.6 计算机基础 (14)1.1.7 浏览器 (16)1.1.8 ⽹页、⽹站和应⽤程序 (16)1.1.9 开发⼯具 (16)1.2 JavaScript 是什么 (18)1.2.1 JavaScript语⾔特点 (18)1.2.2 编译语⾔和脚本语⾔ (19)1.2.3 JavaScript应⽤场景 (19)1.2.4 JavaScript 与浏览器的关系 (20)1.2.5 JavaScript的组成 (20)1.3 初次体验JavaScript 代码 (21)1.3.1 JavaScript代码注意事项: (22)1.3.2 代码注释 (23)1.4 变量 (24)1.4.1 变量引⼊、声明和初始化 (24)1.4.2 变量在内存中的存储 (25)1.4.3 变量的命名规则和规范 (25)1.4 数据类型 (27)1.4.1 Number类型 (27)1.4.2 进制介绍(了解) (27)1.4.3 String类型 (30)1.4.4 Boolean类型 (32)1.4.5 Undefined和Null 321.4.6 数据类型转换 (32)1.4.8 获取变量的类型 (34)1.4.7 复杂数据类型 Object(对象) (35)1.5 运算符 (36)1.5.1 算术运算符 (36)1.5.2 ⼀元运算符 (36)1.5.3 逻辑运算符(布尔运算符) 371.5.4 关系运算符(⽐较运算符) 371.5.5 赋值运算符 (37)1.5.6 运算符的优先级 (37)第 2 章 (39)◄ JavaScript流程控制►. 392.1 顺序结构 (39)2.2 分⽀结构 (39)2.2.1 if语句 (39)2.2.2 三元运算符 (41)2.2.3 switch语句 (41)2.2.4 分⽀语句总结 (42)2.2.5 布尔类型的隐式转换 (43)2.3 循环结构 (43)2.3.1 while语句 (43)2.3.2 do...while语句 (44)2.3.3 for语句 (45)2.3.4 continue和break. 462.3 调试 (47)第 3 章 (48)◄数组、函数、作⽤域►. 483.1 数组 (48)3.1.1为什么要学习数组 (48)3.1.2 数组的概念 (48)3.1.3 数组的定义 (48)3.1.4 获取数组元素 (49)3.1.5 遍历数组 (50)3.1.6 数组中新增元素 (50)3.1.7 数组案例 (50)3.2 函数 (52)3.2.1 为什么要有函数 (52)3.2.2 什么是函数 (52)3.2.3 函数的定义 (53)3.2.4 函数的调⽤ (53)3.2.5 函数的参数 (54)3.2.6 函数的返回值 (55)3.2.7 arguments的使⽤ (56)3.2.8 匿名函数 (56)3.2.9 ⾃调⽤函数 (56)3.2.10 函数是⼀种数据类型 (57)3.3.1 全局变量和局部变量 (58)3.3.2 块级作⽤域 (59)3.3.3 词法作⽤域 (59)3.3.4 作⽤域链 (60)3.3.5 变量提升 (60)3.3.6 预解析 (61)第 4 章 (64)◄对象和内置对象►. 644.1 对象 (64)4.1.1 为什么要有对象 (64)4.1.2 什么是对象? (64)4.1.3 JavaScript中的对象 (65)4.1.4 对象创建⽅式 (65)4.1.5 属性和⽅法 (66)4.1.6 new关键字 (67)4.1.7 this详解 (67)4.1.8 对象操作 (68)4.1.8.1 遍历对象的属性 (68)4.1.8.2 删除对象的属性 (68)4.2 基本类型和复杂类型 (69)4.2.1 堆和栈 (69)4.2.2 值类型在内存中的存储 (69)4.2.3 引⽤类型在内存中的存储 (70)4.2.4 值类型作为函数的参数 (71)4.2.5 引⽤类型作为函数的参数 (72)4.3 内置对象 (73)4.3.1 Math对象 (73)4.3.2 Date对象 (74)4.3.3 Array对象 (76)4.3.4 基本包装类型 (79)4.3.5 String对象 (80)第 2 部分 (83)◄ Web API ►. 83Web API介绍 (83)API的概念 (83)Web API的概念 (83)JavaScript的组成 (83)第 5 章 (85)◄ BOM►. 855.1 BOM介绍 (85)5.1.1 BOM的概念 (85)5.1.2 BOM的顶级对象window.. 85 5.2 对话框 (87)5.2.1 alert() 875.2.2 prompt() 885.2 页⾯加载事件 (89)5.3 定时器 (89)5.4 location对象 (90)5.5 history对象 (93)5.6 navigator对象 (94)第 6 章 (97)◄ DOM和事件►. 976.1 DOM (97)6.1.1 DOM的概念 (97)6.1.2 模拟⽂档树结构 (98)6.2.3 DOM经常进⾏的操作 (99)6.2 事件 (101)6.2.1 事件的基本使⽤ (101)6.3 属性操作 (102)6.3.1 ⾮表单元素的属性 (102)6.3.2 innerText、textContent 1056.3.3 innerHTML和innerText的区别 (105)6.3.4 表单元素属性 (106)6.3.5 ⾃定义属性操作 (110)6.3.6 样式操作 (112)6.3.7 类名操作 (112)6.3.8 创建元素的三种⽅式 (114)6.4 节点操作 (116)6.4.1 节点的基本操作 (116)6.4.2 节点属性操作 (118)6.4.3 节点层级 (118)6.4.3.1 获取单个的⼦节点 (118)6.4.3.2 获取所有的⼦节点 (119)6.4.3.3 获取⽗节点 (119)6.5 事件详解 (121)6.5.1 注册/移除事件的三种⽅式 (121)6.5.2 事件冒泡 (123)6.5.3 事件的三个阶段 (125)6.5.4 事件对象的属性和⽅法 (127)6.5.4.1 事件句柄 (Event Handlers). 127 6.5.4.2 常⽤的⿏标和键盘属性 (128)6.5.4.3 event属性和⽅法总结 (129)6.5.4.4 案例 (130)6.6 偏移量 (132)6.6.1 offset系列:获取元素 (132)6.6.2 client系列可视区域 (134)6.6.3 滚动偏移:scroll系列 (135)6.7 综合案例 (136)6.7.1 轮播图 (136)6.7.2 固定导航栏 (142)◄ Javascript ⾼级►. 149第 7 章 (150)◄ JavaScript ⾯向对象编程►. 1507.1 ⾯向对象介绍 (150)7.2 创建对象的⽅式 (151)7.2.1 字⾯量的⽅式 (151)7.2.2 调⽤系统的构造函数 (152)7.2.3 ⾃定义构造函数⽅式 (152)7.2.4 ⼯⼚模式创建对象 (153)7.2.5 ⼯⼚模式和⾃定义构造函数创建对象的区别 (153)7.2.6 构造函数和对象的关系 (154)7.3 原型的引⼊ (155)7.4 ⾯向过程和⾯向对象 (156)7.5 构造函数、原型对象、实例对象之间的关系 (158)7.6 利⽤原型共享数据 (158)7.6.1 原型的简单语法 (158)7.6.2 原型中⽅法的使⽤ (159)7.6.3 内置对象的原型⽅法 (160)7.6.4 把局部变量变成全局变量 (161)7.7 原型及原型链 (162)7.7.1 原型指向可以改变 (162)7.7.2 实例对象属性和原型对象属性重名问题 (164)7.7.3 通过⼀个HTML的元素对象来查看原型链 (166)7.8 实现继承 (166)7.8.1 原型实现继承 (167)7.8.2 构造函数实现继承 (167)7.8.3 组合继承 (169)7.8.4 拷贝继承 (170)第 8 章 (172)◄函数进阶和其它►. 1728.1 函数的定义⽅式 (172)8.2 函数的调⽤⽅式 (173)8.2.1 函数内 this 指向的不同场景 (173)8.2.2 严格模式 (174)8.2.3 函数也是对象 (175)8.2.4 数组中函数的调⽤ (176)8.2.5 apply和call调⽤ (177)8.2.6 bind⽅法 (179)8.2.7 call、apply、bind的区别 (180)8.3 函数中⾃带的属性介绍 (180)8.4 函数作为参数使⽤ (181)8.3 函数作为返回值使⽤ (182)8.4 作⽤域和作⽤域链 (183)8.5 闭包 (184)8.8 浅拷贝和深拷贝 (188)8.9 递归案例 (191)8.9.1 遍历DOM树 (191)8.9.2 ⽣成菜单导航 (192)8.10 伪数组和数组 (194)8.11 JavaScript 垃圾回收机制 (196)8.11.1 可访问性(Reachability) (196)8.11.2 ⼀个简单⽰例 (196)8.11.3 两个引⽤ (197)8.11.4 相互引⽤的对象 (197)8.11.5 孤岛(Unreachable island) 199 8.11.6 内部算法 (200)第 9 章 (203)◄正则表达式►. 2039.1 正则表达式简介 (203)9.1.1 什么是正则表达式 (203)9.1.2 正则表达式的作⽤ (203)9.1.3 正则表达式的特点 (203)9.1.4 正则表达式的组成 (204)9.1.5 常⽤案例 (205)9.1.6 如何验证正则表达式的正确性 (206)9.1 JavaScript 中使⽤正则表达式 (206)9.1.1 创建正则对象 (206)9.1.2 正则匹配 (207)9.1.3 正则提取 (207)9.1.4 正则替换 (209)9.3 正则表达式使⽤案例 (210)9.3.1 密码强度验证 (210)9.3.2 表单验证 (214)第 10 章 (217)◄贪吃蛇案例►. 21710.1 ⽰例介绍 (217)10.2 实现步骤 (219)10.2.1 画地图和操作按钮 (219)10.2.2 封装⾷物对象 (220)10.2.3 封装⼩蛇对象 (222)10.2.4 封装游戏对象 (224)10.2.5 游戏调⽤ (227)第 4 部分 (228)◄ Javascript下⼀代标准►. 228第 11 章 (229)◄ ES6~ES10新特性介绍►. 22911.1 ES6新特性 (229)11.1.1 Arrows(箭头函数) (229)11.1.3 模板字符串 (230)11.1.4 函数的参数默认值 (230)11.1.5 延展操作符(Spread operator) 231 11.1.6 对象解构 (231)11.1.7 for...of 和 for...in. 23111.1.8 对象属性简写 (232)11.1.9 Promise. 23211.1.10 class(类) (235)11.1.11 Module (模块化) 23611.2 ES7新特性 (238)11.2.1 Array.prototype.includes() 23811.2.2 指数操作符**. 23811.3 ES8新特性 (238)11.3.1 async await 23911.3.2 Object.values/Object.entries. 241 11.3.3 padStart 和 padEnd. 24111.4 ES9新特性 (242)11.4.1 for await...of. 24211.4.2 Object Rest Spread. 24311.4.3 Promise.prototype.finally() 24511.4.4 新的正则表达式特性 (246)11.5 ES10新特性 (248)11.5.1 Array.prototype.flat() 24811.5.2 Array.prototype.flatMap() 24911.5.3 String.trimStart 和 String.trimEnd. 249 11.5.4 String.prototype.matchAll. 24911.5.5 修改 catch 绑定 (250)11.5.6 新的基本数据类型 BigInt. 25011.5.7 Object.fromEntries(). 25011.5.8 Symbol.prototype.description. 251 11.5.9 Function.prototype.toString() 251第 12 章 (252)◄ TypeScript简单介绍►. 25212.1 TypeScript简介 (252)12.1.1 安装TypeScript 25212.1.2 开始我们的第⼀个TypeScript程序 (253)12.1.3 类型注解 (255)12.1.4 接⼝ (255)12.1.5 类 (256)12.2 TypeScript基础类型 (257)12.2.1 元组 Tuple. 25712.2.2 枚举 (257)12.2.3 任意值any. 25812.2.4 空值 (259)12.2.5 Null 和 Undefined. 25912.2.7 类型断⾔ (259)参考⽂献 (261)。
第13章习题参考答案一、简答题1.什么是事件?事件处理包括哪些因素?答:Java对事件的处理采用授权的事件模型,也成为委托事件模型。
在授权事件模型中,事件是一个描述事件源状态改变的对象。
通过鼠标、键盘与GUI直接或间接交互都会产生事件,按回车键、单击按钮、在一个下拉列表中选择一个选项等操作。
程序有时需对发生的事件作出反应来实现特定的任务。
事件处理主要包括:事件、事件源和监听器(事件处理者)。
事件是由事件源产生,事件源可以是GUI组件、JavaBen或由生成事件能力的对象。
事件发生后,组件本身并不处理,需要交给监听器(另外一个类)来处理。
实际上监听器也可称为事件处理者。
监听器对象属于一个类的实例,这个类实现了一个特殊的接口,名为"监听器接口"。
监听器负责处理事件源发生的事件,监听器是一个对象,为了处理事件源发生的事件,监听器会自动调用一个方法来处理事件.对每个明确的事件的产生,都相应地定义一个明确的Java方法。
2.请具体说明Java的事件处理机制中涉及到哪些方面?答:Java对事件的处理采用授权的事件模型,即委托代理模型。
委托代理模型(Delegation model)的原理是:当事件产生时,该事件被送到产生该事件的组件去处理,而要能够处理这个事件,该组件必须注册(register)有与该事件有关的一个或多个被称为listeners监听器的类,这些类包含了相应的方法能接受事件并对事件进行处理,包括如下处理过程:(1)确定事件源图形界面的每个可能产生事件的组件称为事件源,不同事件源上发生的事件的种类不同。
(2)注册事件源如果希望事件源上发生的事件被程序处理,就要把事件源注册给能够处理该事件源上那种类型的事件监听器。
监听器是属于一个类的实例,这个类实现了一个特殊的接口,名为“监听器接口”。
(3)委托处理事件当事件源上发生监听者可以处理的事件时,事件源把这个事件作为实际参数传递给监听者中负责处理这类事件的方法,该方法根据事件对象中封装的信息来确定如何响应这个事件。
第十三讲网页中的动感元素度的2倍:512,左对齐。
预览才可看到生动的波纹效果。
5)插入背景音乐1)插入布局/绘制层/绘制一个层/光标置于层中,插入/媒体/插件:xzm.mid;2)选中插件标记,“参数”:autostart:true,loop:2,代码如下:<embedsrc="00.mid" width="32" height="32" autostart="true"loop="2"></embed>3)选择层,“属性”面板设置层的可见性为hidden(隐藏)5.扩展功能(使用第三方插件)Macromedia Extension Manager 就是功能扩展管理器。
功能扩展管理器可与Dreamweaver、Dreamweaver UltraDev、Fireworks 和Flash 并行运行;功能扩展管理器1.6 支持新版Dreamweaver、Fireworks 和Flash 以及已添加的许多新功能,可支持新的DW 产品套件内的轻松扩展。
课堂实践(1)打开“课堂实践”网站文件夹“09动感元素”中的网页文档“09.html”。
(2)分别在页面的上部和中部插入两个层,在两个层中插入flash动画。
疑难解析问题1:如何将Flash动画的背景颜色设置为透明?答:在网页文档中选中所插入的Flash动画,在Flash的“属性”面板中单击【参数】按钮,弹出“参数”对话框,在该对话框中,在“参数名”文本框输入“Wmode”,在“值”文本框中输入“transparent”,如图8-13所示。
然后单击【确定】按钮即可。
将Flash动画的背景颜色设置为透明,使页面的背景在Flash动画下衬托出来。
图8-13 “参数”对话框问题2:如何在网页中插入Flash视频?答:Dreamweaver 8能够直接在页面中插入Flash视频内容,而无需使用Flash创作工具。
疯狂JAVA讲义⽬录第1章 Java概述 11.1 Java语⾔的发展简史 21.2 Java的竞争对⼿及各⾃优势 41.2.1 C#简介和优势 41.2.2 Ruby简介和优势 41.2.3 Python的简介和优势 51.3 Java程序运⾏机制 51.3.1 ⾼级语⾔的运⾏机制 61.3.2 Java程序的运⾏机制和JVM 61.4 开发Java的准备 71.4.1 安装JDK 8学⽣提问:不是说JVM是运⾏Java程序的虚拟机吗?那JRE和JVM的关系是怎样的呢? 8学⽣提问:为什么不安装公共JRE系统呢? 91.4.2 设置PATH环境变量 10学⽣提问:为什么选择设置⽤户变量,⽤户变量和系统变量有什么区别呢? 111.5 第⼀个Java程序 121.5.1 编辑Java源代码 121.5.2 编译Java程序 13学⽣提问:当我们使⽤编译C程序时,不仅需要指定存放⽬标⽂件的位置,也需要指定⽬标⽂件的⽂件名,这⾥使⽤javac编译Java程序时怎么不需要指定⽬标⽂件的⽂件名呢? 131.5.3 运⾏Java程序 141.5.4 根据CLASSPATH环境变量定位类 151.6 Java程序的基本规则 161.6.1 Java程序的组织形式 161.6.2 Java源⽂件的命名规则 171.6.3 初学者容易犯的错误 181.7 垃圾回收机制 201.8 何时开始使⽤IDE⼯具 21学⽣提问:⽼师,我想学习Java编程,到底是学习Eclipse好呢,还是学习JBuilder好呢? 211.9 本章⼩结 22本章练习 22第2章理解⾯向对象 232.1 ⾯向对象 242.1.1 结构化程序设计简介 242.1.2 程序的三种基本结构 252.1.3 ⾯向对象程序设计简介 272.1.4 ⾯向对象的基本特征 282.2 UML(统⼀建模语⾔)介绍 292.2.1 ⽤例图 302.2.2 类图 312.2.3 组件图 332.2.4 部署图 332.2.5 顺序图 342.2.6 活动图 342.2.7 状态机图 362.3 Java的⾯向对象特征 362.3.1 ⼀切都是对象 372.3.2 类和对象 372.4 本章⼩结 37第3章数据类型和运算符 383.1 注释 393.1.1 单⾏注释和多⾏注释 393.1.2 ⽂档注释 40学⽣提问:API⽂档是什么? 40学⽣提问:为什么要掌握查看API⽂档的⽅法? 423.2 标识符和关键字 453.2.1 分隔符 453.2.2 标识符规则 473.2.3 Java关键字 473.3 数据类型分类 483.4 基本数据类型 483.4.1 整型 493.4.2 字符型 493.4.3 浮点型 513.4.4 布尔型 523.5 基本类型的类型转换 533.5.1 ⾃动类型转换 533.5.2 强制类型转化 543.5.3 表达式类型的⾃动提升 563.6 直接量 573.6.1 直接量的类型 573.6.2 直接量的赋值 583.7 运算符 583.7.1 算术运算符 583.7.2 赋值运算符 613.7.3 位运算符 623.7.4 扩展后的赋值运算符 643.7.5 ⽐较运算符 65学⽣提问:Java为什么要对这些数据进⾏缓存呢? 673.7.6 逻辑运算符 673.7.7 三⽬运算符 683.7.8 运算符的结合性和优先级 693.8 本章⼩结 70本章练习 70第4章流程控制和数组 714.1 顺序结构 724.2 分⽀结构 724.2.1 if条件语句 724.2.2 switch分⽀语句 764.3 循环结构 784.3.1 while循环语句 784.3.2 do while循环语句 794.3.3 for循环 804.3.4 嵌套循环 834.4 控制循环结构 844.4.1 使⽤break结束循环 844.4.2 使⽤continue结束本次循环 864.4.3 使⽤return结束⽅法 874.5 数组类型 874.5.1 理解数组:数组也是⼀种类型 88学⽣提问:int[]是⼀种类型吗?怎么使⽤这种类型呢? 884.5.2 定义数组 884.5.3 数组的初始化 89学⽣提问:能不能只分配内存空间,不赋初始值呢?894.5.4 使⽤数组 90学⽣提问:为什么要我记住这些异常信息? 914.5.5 JDK1.5提供了foreach循环 914.6 深⼊数组 934.6.1 内存中的数组 93学⽣提问:为什么有栈内存和堆内存之分? 934.6.2 基本类型数组的初始化 954.6.3 引⽤类型数组的初始化 964.6.4 没有多维数组 99学⽣提问:我是否可以让图4.13中灰⾊覆盖的数组元素再次指向另⼀个数组?这样不可以扩展成三维数组吗?甚⾄扩展到更多维的数组?1014.6.5 操作数组的⼯具类 1024.6.6 数组的应⽤举例 1034.7 本章⼩结 106本章练习 106第5章⾯向对象(上) 1075.1 类和对象 1085.1.1 定义类 108学⽣提问:构造器不是没有返回值吗?为什么不能⽤void修饰呢? 1105.1.2 对象的产⽣和使⽤ 1105.1.3 对象、引⽤和指针 1115.1.4 对象的this引⽤ 1125.2 ⽅法详解 1165.2.1 ⽅法的所属性 1165.2.2 ⽅法的参数传递机制 1165.2.3 形参长度可变的⽅法 1205.2.4 递归⽅法 1215.2.5 ⽅法重载 123学⽣提问:为什么⽅法的返回值类型不能⽤于区分重载的⽅法? 1245.3 成员变量和局部变量 1245.3.1 成员变量和局部变量 1255.3.2 成员变量的初始化和内存中的运⾏机制 1285.3.3 局部变量的初始化和内存中的运⾏机制 1305.3.4 变量的使⽤规则 1305.4 隐藏和封装 1325.4.1 理解封装 1325.4.2 使⽤访问控制符 1325.4.3 package和import 1355.4.4 Java的常⽤包 1405.5 深⼊构造器 1405.5.1 使⽤构造器执⾏初始化 141学⽣提问:构造器是创建Java对象的途径,是不是说构造器完全负责创建Java对象? 1415.5.2 构造器的重载 142学⽣提问:为什么要⽤this来调⽤另⼀个重载的构造器?我把另⼀个构造器⾥的代码复制、粘贴到这个构造器⾥不就可以了吗? 143 5.6 类的继承 1445.6.1 继承的特点 1445.6.2 重写⽗类的⽅法 1455.6.3 ⽗类实例的super引⽤ 146学⽣提问:我们只是创建了⼀个Ostrich对象时,哪来的Bird对象? 1475.6.4 调⽤⽗类构造器 148学⽣提问:为什么我创建Java对象时从未感觉到ng.Object的构造器被调⽤过? 1505.7 多态 1515.7.1 多态性 1515.7.2 引⽤变量的强制类型转换 1525.7.3 instanceof运算符 1545.8 继承与组合 1545.8.1 使⽤继承的注意点 1555.8.2 利⽤组合实现复⽤ 156学⽣提问:使⽤组合关系来实现复⽤时,需要创建两个Animal对象,是不是意味着使⽤组合关系时系统开销更⼤? 1595.9 初始化块 1595.9.1 使⽤初始化块 1605.9.2 初始化块和构造器 1615.9.3 静态初始化块 1625.10 本章⼩结 165本章练习 165第6章⾯向对象(下) 1666.1 基本数据类型的包装类 1676.2 处理对象 1706.2.1 打印对象和toString⽅法 1706.2.2 ==和equals⽐较运算符 1726.3 类成员 1756.3.1 理解类成员 1756.3.2 单例(Singleton)类 1766.4 final修饰符 1776.4.1 final变量 1776.4.2 final⽅法 1816.4.3 final类 1826.4.4 不可变类 1826.4.5 缓存实例的不可变类 1866.5 抽象类 1886.5.1 抽象⽅法和抽象类 1886.5.2 抽象类的作⽤ 1916.6 更彻底的抽象:接⼝ 1926.6.1 接⼝的概念 1926.6.2 接⼝的定义 1936.6.3 接⼝的继承 1956.6.4 使⽤接⼝ 1956.6.5 接⼝和抽象类 1976.6.6 ⾯向接⼝编程 1986.7 内部类 2026.7.1 ⾮静态内部类 202学⽣提问:⾮静态内部类对象和外部类对象的关系是怎样的? 2066.7.2 静态内部类 207学⽣提问:为什么静态内部类实例⽅法也不能访问外部类的实例属性呢? 207学⽣提问:接⼝⾥是否能定义内部接⼝? 2086.7.3 使⽤内部类 208学⽣提问:既然内部类是外部类的成员,是否可以为外部类定义⼦类,在⼦类中再定义⼀个内部类来重写其⽗类中的内部类? 211 6.7.4 局部内部类 2116.7.5 匿名内部类 2126.7.6 闭包(Closure)和回调 2156.8 枚举类 2176.8.1 ⼿动实现枚举类 2176.8.2 枚举类⼊门 2196.8.3 枚举类的属性、⽅法和构造器 2206.8.4 实现接⼝的枚举类 2236.8.5 包含抽象⽅法的枚举类 2246.9 对象与垃圾回收 2256.9.1 对象在内存中的状态 2266.9.2 强制垃圾回收 2276.9.3 finalize⽅法 2286.9.4 对象的软、弱和虚引⽤ 2306.10 修饰符的适⽤范围 2336.11使⽤JAR⽂件 2346.11.1 jar命令详解 2356.11.2 创建可执⾏的JAR包 2376.11.3 关于JAR包的技巧 2386.12 本章⼩结 239本章练习 239第7章 Java集合 2407.1 Java集合概述 2417.2 Collection和Iterator接⼝ 2437.2.1 使⽤Iterator接⼝遍历集合元素 2447.2.2 使⽤foreach循环遍历集合元素 2467.3 Set接⼝ 2477.3.1 HashSet类 247学⽣提问:hashCode⽅法对于HashSet的作⽤是什么? 2497.3.2 TreeSet类 2527.3.3 EnumSet类 2597.4 List接⼝ 2617.4.1 List接⼝和ListIterator接⼝ 2617.4.2 ArrayList和Vector实现类 2647.4.3 固定长度的List 2667.5 Queue接⼝ 2667.5.1 LinkedList实现类 2667.5.2 PriorityQueue实现类 2697.6 Map 2707.6.1 HashMap和Hashtable实现类 2717.6.2 SortedMap接⼝和TreeMap实现类 2767.6.3 WeakHashMap实现类 2797.6.4 IdentityHashMap实现类 2807.6.5 EnumMap实现类 2817.7 HashSet和HashMap的性能选项 2827.8 操作集合的⼯具类:Collections 2837.8.1 排序操作 2837.8.2 查找,替换操作 2877.8.3 同步控制 2887.8.4 设置不可变集合 2887.9 烦琐的接⼝:Enumeration 2897.10 本章⼩结 290本章练习 290第8章泛型 2918.1 泛型⼊门 2928.1.1 编译时不检查类型的异常 2928.1.2 ⼿动实现编译时检查类型 2938.1.3 使⽤泛型 2948.2 深⼊泛型 2948.2.1 定义泛型接⼝、类 2958.2.2 从泛型类派⽣⼦类 2968.2.3 并不存在泛型类 2988.3 类型通配符 2988.3.1 使⽤类型通配符 3008.3.2 设定类型通配符的上限 3008.3.3 设定类型形参的上限 3028.4 泛型⽅法 3038.4.1 定义泛型⽅法 3038.4.2 泛型⽅法和类型通配符的区别 3068.4.3 设定通配符的下限 3078.4.4 泛型⽅法与⽅法重载 3098.5 擦除和转换 3108.6泛型与数组 3118.7 本章⼩结 313第9章与运⾏环境交互 3149.1 与⽤户互动 3159.1.1 运⾏Java程序的参数 3159.1.2 使⽤Scanner获取键盘输⼊ 3169.1.3 使⽤BufferedReader获取键盘输⼊ 3189.2 系统相关 3199.2.1 System类 3199.2.2 Runtime类 3219.3 常⽤类 3229.3.1 Object类 3229.3.2 String、StringBuffer和StringBuilder类 3229.3.3 Math类 3279.3.4 Random类 3289.3.5 BigDecimal类 3309.4 处理⽇期的类 3339.4.1 Date类 3339.4.2 Calendar类 3349.4.3 TimeZone类 3379.5 正则表达式 3389.5.1 创建正则表达式 3389.5.2 使⽤正则表达式 3419.6 程序国际化 3459.6.1 Java国际化的思路 3469.6.2 Java⽀持的语⾔和国家 3469.6.3 完成程序国际化 3479.6.4 使⽤MessageFormat处理包含占位符的字符串 349 9.6.5 使⽤类⽂件代替资源⽂件 3509.6.6 使⽤NumberFormat格式化数字 3509.6.7 使⽤DateFormat格式化⽇期 3529.7 本章⼩结 355本章练习 355第10章异常处理 35610.1 异常概述 35710.2 异常处理机制 35810.2.1 使⽤try...catch捕获异常 35910.2.2 异常类的继承体系 36010.2.3 访问异常信息 36310.2.4 使⽤finally回收资源 36410.2.5 异常处理的嵌套 36710.3 Checked异常和Runtime异常体系 36710.3.1 使⽤throws声明抛出异常 36710.4 使⽤throw抛出异常 36910.4.1 抛出异常 36910.4.2 ⾃定义异常类 37110.4.3 catch和throw同时使⽤ 37110.4.4 异常链 37310.5 Java的异常跟踪栈 37410.6 异常处理规则 37610.6.1 不要过度使⽤异常 37710.6.2 不要使⽤过于庞⼤的try块 37810.6.3 避免使⽤Catch All语句 37810.6.4 不要忽略捕获到的异常 37910.7 本章⼩结 379本章练习 379第11章 AWT编程 38011.1 GUI(图形⽤户界⾯)和AWT 38111.2 AWT容器 38211.3 布局管理器 38511.3.1 FlowLayout布局管理器 38611.3.2 BorderLayout布局管理器 387学⽣提问:BorderLayout最多只能放置5个组件吗?那它还有什么作⽤? 38811.3.3 GridLayout布局管理器 38911.3.4 GridBagLayout布局管理器 39011.3.5 CardLayout布局管理器 39311.3.6 绝对定位 39511.3.7 BoxLayout布局管理器 396学⽣提问:图11.15和图11.16显⽰的所有按钮都紧挨在⼀起,如果希望像FlowLayout、GridLayout等布局管理器指定组件的间距该怎么办?39711.4 AWT 常⽤组件 39811.4.1 基本组件 39811.4.2 对话框 40011.5 事件处理 40311.5.1 Java事件模型的流程 40311.5.2 事件和事件监听器 40511.5.3 事件适配器 40911.5.4 事件监听器的实现形式 41111.6 AWT的菜单 41311.6.1 菜单条、菜单和菜单项 41411.6.2 右键菜单 416学⽣提问:为什么即使我没有给多⾏⽂本域编写右键菜单,但当我在多⾏⽂本域上单击右键时⼀样会弹出右键菜单? 41811.7 在AWT中绘图 41811.7.1 画图的实现原理 41811.7.2 使⽤Graphics类 41911.8 处理位图 42511.8.1 Image抽象类和BufferedImage实现类 42511.8.2 使⽤ImageIO输⼊/输出位图 42711.9 剪贴板 43211.9.1 数据传递的类和接⼝ 43211.9.2 传递⽂本 43311.9.3 使⽤系统剪贴板传递图像 43511.9.4 使⽤本地剪贴板来传递对象引⽤ 43911.9.5 通过系统剪贴板传递Java对象 44211.10 本章⼩结 445本章练习 445第12章 Swing编程 44612.1 Swing概述 44712.2 Swing基本组件的⽤法 44812.2.1 Swing组件层次 44812.2.2 AWT组件的Swing实现 449学⽣提问:为什么单击Swing多⾏⽂本域时不是弹出像AWT多⾏⽂本域中的右键菜单? 45512.2.3 使⽤JToolBar创建⼯具条 45812.2.4 使⽤JColorChooser和JFileChooser 46112.2.5 使⽤JOptionPane 46912.3 Swing中的特殊容器 47512.3.1 使⽤JSplitPane 47512.3.2 使⽤JTabbedPane 47712.3.3 使⽤JLayeredPane、JDesktopPane和JInternalFrame 48112.4 Swing拖放功能 49012.4.1 拖放⽬标 49112.4.2 拖放源 49412.4.3 简化的拖放操作 49512.5 Applet和JApplet 49712.5.1 Applet简介及其安全性 49812.5.2 开发Applet类 49812.5.3 使⽤HTML页⾯装载Applet 50012.5.4 appletviewer简介 50212.5.5 Applet的⽣命周期和动画机制 503学⽣提问:程序中重写paint⽅法时绘制了⼀个字符串,但图12.28上则绘制出了如此之多的字符串,这是为什么呢? 50512.5.6 使⽤Applet创建⾳乐播放器 50512.6 使⽤JProgressBar、ProgressMonitor和BoundedRangeModel创建进度条 50812.6.1 创建进度条 50812.6.2 创建进度对话框 51212.7 使⽤JSlider和BoundedRangeModel创建滑动条 51312.8 使⽤JSpinner和SpinnerModel创建微调控制器 51712.9 使⽤JList、JComboBox创建列表框 52012.9.1 简单列表框 52012.9.2 不强制存储列表项的ListModel和ComboBoxModel 52412.9.3 强制存储列表项的DefaultListModel和DefaultComboBoxModel 528学⽣提问:为什么JComboBox提供了添加、删除列表项⽬的⽅法?⽽JList没有提供添加、删除列表项的⽅法呢? 53012.9.4 使⽤ListCellRenderer改变列表项外观 53012.10 使⽤JTree和TreeModel创建树 53212.10.1 创建树 53312.10.2 拖动、编辑树节点 53612.10.3 监听节点事件 54012.10.4 使⽤TreeCellRendering改变节点外观 54212.11 使⽤JTable和TableModel创建表格 54912.11.1 创建JTable 549学⽣提问:我们指定的表格数据、表格列标题都是Object类型的数组,JTable如何显⽰这些Object对象?55012.11.2 TableModel和监听器 55512.11.3 TableColumnModel和监听器 56112.11.4 实现排序 56412.11.5 绘制单元格内容 56712.11.6 编辑单元格内容 57012.12 使⽤JFormattedTextField和JTextPane创建格式⽂本 57612.12.1 监听Document的改变 57612.12.2 使⽤JPasswordField 57812.12.3 使⽤JFormattedTextField 57912.12.4 使⽤JEditorPane 58812.12.5 使⽤JTextPane 58812.13 本章⼩结 595本章练习 595第13章 JDBC编程 59613.1 JDBC基础 59713.1.1 JDBC简介 59713.1.2 JDBC驱动程序类型 59813.2 SQL语法介绍 59913.2.1 安装数据库 59913.2.2 关系数据库基本概念和MySQL基本命令 60113.2.3 SQL语句基础 60313.2.4 DDL语句 60413.2.5 DML语句语法 61813.2.6 select语句和SQL函数 62013.2.7 分组和组函数 62713.2.8 多表连接查询和⼦查询 62913.3 JDBC的典型⽤法 63513.3.1 JDBC常⽤接⼝和类简介 63513.3.2 JDBC编程步骤 637学⽣提问:前⾯给出的仅是MySQL和Oracle两种数据库的驱动,我看不出驱动类字符串有什么规律啊。
JA V A学习记录第一讲//pulic:表示这个类是公共的,一个java文件中只能有一个public类//class :表示这是一个类//Hello:类名(公共类的类名必须和文件名一致)public class Hello{//一个主函数,相当于是程序的入口public static void main (String args[]){/* 多行注释*///System.out.println("hello");int a=10;// 定义一个变量,变量名位a,它的值为10// int为4个字节,long为8个字节int b=20;int result=a+b//输出结果system.out.println("结果是"+result)}}第二讲JA V A基本数据类型四大类型整数类型小数(浮点)类型基本数据类型布尔类型字符类型1.整数类型整数类型表示一个整数,常用的整数类型有:byte, short, int, long范围:byte 一个字节-128 – 127short 两个字节-32768 - 32767int 四个字节-2147483648 – 2147483647long 八个字节一个字节= 八个byte例:一个byte0 0 0 0 0 0 0 1 最高位为符号位0表示正数,1表示负数1 1 1 1 1 1 1 1 – 0 1 1 1 1 1 1 12.小数(浮点)类型常用类型有float, double3.布尔类型可以表示:真或者假,类型是boolean4.字符类型表示单个字符,字符类型是char,chai是两个字节,可以存放汉字。
多个字符称为字符串,在java中用String表示,String属于类。
.在java中,对char进行运算的时候,直接当做ascii码对应的整数对待。
(汉字则是unic码)定义变量int a初始化变量int a = 45给变量赋值int a ; a =45基本数据类型转换int a = 1.2 错误会损失精度double a = 4 正确数据类型可以自动从低精度向高精度转换。
Java韩顺平笔记第1讲内容介绍.项目演示.原理剖析1. 课程包括:java面向对象编程,java图形界面,java数据库编程,java文件i/o流,java网络编程,java的多线程2. Java历史:1990 sun 启动绿色计划 1992 创建 oak语言—> java1994 gosling 参加硅谷大会演示java功能震惊世界 1995 sun 正式发布java第一个版本,目前最新的是jdk7.03. java开发工具:记事本,jcreator,jbuilder,netbean,eclipse4. jdk包括:jre(java运行环境)java的工具:编译器javac.exe解释执行器java.exe java的类库:3600多个,常用的150多个5. 第一个程序://功能:显示―HelloWorld‖//public:表示类是公共的,一个文件中只有一个public类 //class:表示这个是一个类//HelloWorld:类名(公共类的类名,必须和文件名一样)public class HelloWorld {//一个主函数,程序的入口 public static void main (String args[]) {//执行语句System.out.println("helloWorld!"); } }6. Java源程序(.java文件)——>java字节码文件(.class文件)——>由解释执行器(java.exe)将字节码文件加载到java虚拟机(jvm)——>字节码文件(.class)就会在java虚拟机中执行l,average); } }第2讲变量.数据类型1. 在java里面int占4个字节,long占8个字节2. Java基本数据类型:整数:(byte一个字节:-128---127 int四个字节:-2147483648---+2147483647short两个字节:-32768---+32767 long八个字节:)小数(浮点):float double布尔:boolean字符:char(两个字节,可以存放汉字, char test1 ='中';)引申到字符串(类)3.在java中对char进行运算的时候,直接是当做ASCII码对应的整数4.数据不能从高精度到低精度的转换Byte<short<int<long<float<doublefloat a=3.4;是过不去的,在java中小数默认是double(双精度)的应该写成是float a=3.4f;不过可以强制转换:int a=(int)1.2; intb=(int)1.95. int a=1;int b=a+1.2; a先是往高精度转换,然后赋给b,就报错改成int a=1;double b=a+1.2; 或者int a=1;float b=a+1.2f; 就解决了第4讲流程控制1. switch case语句中,switch条件表达式的数据类型应该和后面case的类型一致2. switch case语句中,可用的数据类型主要是:byte short int char enum第5讲类与对象1. 面向对象编程-类与对象类名首字母大写类里面的元素叫类的成员变量/属性2. 类的定义package 包名;class 类名extends 父类implements接口名{成员变量;构造方法;成员方法;}3. 如何创建对象:先声明再创建Cat cat1;cat1=new Cat();一步到位Cat cat1 =new Cat();4. 引用传递类似于指针一样第8讲this 类变量1. this属于类的对象的而不是属于类的2. 5this不能在类的外部使用,只能在类定义时候使用!3. 可以用类名直接访问静态变量第9讲类方法封装1.类变量是该类的所有对象共享的对象,一改全改了2.定义语法:访问修饰符static 数据类型变量名3. public class Demo9{static int i=1;static{System.out.println("zhixingyicile");i++;}//会自动执行一次,也只有一次public Demo9(){System.out.println("ffffffff");i++;}public static void main(String args[]){Demo9 t1=new Demo9();System.out.println(Demo9.i);Demo9 t2=new Demo9();System.out.println(i);}}4.类方法(静态方法、静态函数):属于所有对象实例的5.Java中:类变量(static)原则上用类方法(static)去访问;类方法中不能访问非静态变量,就是非类变量,但是普通的成员方法可以访问静态变量(类变量)使用:类名.类方法名对象名.类方法名6.非类变量就是实例变量,属于每个对象自己的7.Java面向对象编程的三(四)大特征:封装、继承、多态(、抽象)8.抽象:把一类事物的共有的属性和行为提取出来,形成一个物理模板,此研究问题的方法就是抽象9.封装:把抽象出来的数据和对数据的操作封装在一起,数据被保护在内部,程序的其它部分只有通过被授权的操作(成员方法),才能对数据进行操作。