java课程2010内容串讲a.ppt
《java课程2010内容串讲a.ppt》由会员分享,可在线阅读,更多相关《java课程2010内容串讲a.ppt(47页珍藏版)》请在三一文库上搜索。
1、1,Chapter01 计算机系统概述,熟悉java编译的过程: 源文件(文件名.java) 目标文件(文件名.class) 通过JVM/解释器 运行 了解: 运行java程序的基本过程(在Eclipse环境下) Types of Errors: Syntax, Run-Time, Logic error. 能否举出实际例子?(了解) 文件名.class为后缀名的文件是什么?在什么阶段产生的?是可直接运行的二进制可执行文件吗? (此处是byte code, 而只有.com和.exe是在PC上可直接运行的二进制可执行文件,需要另外单独转换) 如果一个系统想运行Java程序,必须安装JDK吗? S
2、yntax Rules for Identifiers (见下页或原先课件),2,Chapter02 数据与表达式,原型/基本/原生类型: (变量分为原型类型和类类型) 原型类型强调: 小写开头 (习惯. 又例如: 变量Can11是否合法?) 包装类: 大写 (规定) 自己写的类: 大写(习惯) 例如: Boolean类型和boolean类型的区别, Int的写法和int类型的区别 Java中的简单数据类型一般是指原型类型 赋值语句与表达式: 赋值的含义, 原型类型赋值与类类型变量赋值的区别 标识符的命名规则: 1.字母和下划线_开头, 含字母,数字,下划线; 2.不能用关键字; 3.$可以开
3、头或在标识符内,但慎用. 4.符号”-”可以吗? 5。eclipse是保留字吗? Java区分大小写: 例如: Return是关键字吗? 可做变量吗?,3,原型类型讨论: 原型类型占用的内存字节数量, 其变量的取值范围? 例如: byte、char和short类型各占用多少内存? 取值范围? 专用赋值运算符:a +=b;a +=b-;含义? 简单输入与输出: 语句System.out.println(eggsPerBasket + “ eggs per basket.”)中“+”号的含义? System.out.println( “ a=“ + a ); System.out.println(
4、 a+b+ “ a=“); System.out.println( “ a=“ + a + b); 数字常量: 八进制、十六进制、e记数法的正确写法 赋值兼容性问题: 隐式转换规则: 类型强转: int i=2.0 有问题, 必须添加强转指令(int) int a=a;合法。 Long a =1000; 是否合法?(掌握自动包装的概念),4,算术运算符: + - * / % + - 等等 表达式内部生成值类型一般先转为较复杂类型 例如: int x=12, y=5 则 x/y=?, (x+10)/y=? 例如: int x; double y; x+y结果的类型? 括号和运算符优先级规则 (见
5、附录D) String类字符串变量, 连接(+)操作和其他String方法 常用的String方法:length(), toLowCase(), substring(),replace(),charAt(), toCharArray()等等. a.toLowCase( ).substring(1,4)的含义? (了解) 键盘和屏幕 I/O-println和print 转义字符的含义与使用: System.out.println( “ this is an apple“ ); System.out.println( “ this is at apple“ ); System.out.printl
6、n( “ this is a apple“ );,5,字符串对象的两种生成形式 String name1= new String(“James Gosling”); String name1= “James Gosling”; 问题: 如何比较两个字符串的长度?是用什么方法? 是.Length()方法还是 .equals()方法? 问题: String name= new String100; 执行后各元素的内容是什么? 掌握String类型变量执行方法后的内容不变性。 了解基本类库和标准类库中各种包(见下页解释)的导入方法。(import 语句的用途) 知道包装类的各种方法的用法及转换方法。
7、 自动包装的概念:Int x=180; 了解随机数生成器对象的创建和使用。 了解Math类的各种方法的基本用法。 了解格式化输出的类的基本用法。,Chapter03 使用类和对象,6,Chapter04 定义类与方法(编写类),类与方法:类中的变量有两种: 实例变量: 跟着对象走, 不同对象有不同副本(要引用实例变量的话,必须标明是哪个对象的) 实例变量在创建对象时由java初始化. 举例:int型实例变量x在创建对象时被java初始化为0. 静态变量: 跟着类走, 只有一个副本 静态变量: 其值也是由java初始化(定义时). 方法: 分类: 有返回值方法(用return语句返回) 注意:
8、一般不能出现返回值和方法头不一致的情况 和无返回值 (方法头: void, 或称为空方法) 调用方法: 静态方法: 通过类名 ( 例如: Math.sqrt(33); ) 非静态方法: 通过对象名,int mm(int l) return 99.99,只可以隐式转换,7,方法中的参数:(形参不能用public、static等修饰) 原型类型-传值 对象-传址 调用方法时形参和实参类型不匹配时, java可以进行自动类型转换. (转换顺序是java默认的规则) 方法中声明的变量-局部变量 局部变量-只在方法体内有效, java不自动给予初始化,使用时必须由程序员来进行初始化. 块中声明的变量也是
9、局部变量 信息隐藏和封装-修饰符: this, public, private this: 表示当前的对象 问题: 在main方法中是否可以有this.n出现? (假设n为静态变量) (N) public: 对实例变量和方法的使用没有限制(可以在类的定义体外使用) private: 对实例变量类定义体之外不能直接引用该变量. 对方法类定义体之外不能调用该方法,只能修饰实例变量,8,protected修饰符的基本属性是什么? (掌握) 比如对属性的使用范围的限制!子类是否可用?其他的类能否使用?(该修饰符的作用介于public和private之间) 对象和引用: 类类型变量和原型变量的比较: 原
10、型变量包含该变量的“值” 对象(类类型变量)只能存放该对象在内存中的首地址 类类型变量在方法中作为参数: 类类型变量作为参数出现时也是“传值”, 而因为对象存储的是内存块首地址, 所以其最终传递了“传址”. (实参把“首地址”传给了形参) 注意类类型变量中=和=的使用 信息隐藏和封装的基本思想是什么? 什么样的做法算是信息隐藏, 封装? (例如通过方法来访问实例变量, 各种修饰符的采用等等),9,Chapter05 条件和循环语句,条件运算符的含义:y=(num1num2) ? num1:num2); 分支语句 if .else 布尔表达式: 注意=号的含义, 以及各种比较符号(=等) Jav
11、a复合布尔表达式逻辑运算符号 (|, &等) 若score为double类型,则if(score = 90)结果? 字符串比较: equals方法 (比较两串的字典顺序) 多分支if else及switch语句(break语句在这里的含义, 缺省该语句的情况怎么办? 例如:循环内部含switch语句,而switch内有的缺省有的不缺省,每次循环执行switch时都不走同一路线,怎么办?) Switch语句的控制表达式的内容要求 (什么类型? 4种) 循环语句 while, do-while, for break, continue, exit等语句的含义与用法 例: 在多重循环中执行break
12、结果是什么?是跳出所有循环的层次吗? 又例:执行continue的结果是跳出本次循环而重新开始吗? 在循环语句中执行return的结果是什么? 注意while()语句括号中的值为布尔变量, 为true或false. 例如: int x=10; while(x+). -结果?,10,continue 的基本意思:结束本次循环,跳到哪里? break 的基本意思:跳出循环体(单重?多重的情况呢) return 的基本意思:跳出所有循环,返回上级方法或系统。 布尔表达式及布尔变量 常用符号及运算优先级规则(见附录D) 布尔表达式的基本含义(到底用来干什么? ) 讨论: 例如: int a=10,b=
13、10,c=10; if(a+b)|(ac)System.out.println(“kkkkkk”); 结果? (答案: 能够打印”kkkkkk”) 问题1: 假设执行System.out.println(x/9);之后, x有变化否? 问题2: 假设执行System.out.println(x+/9); 之后, x有变化否? 迭代器的概念:仅做参考,11,本章复习题目: 基本概念题(如上页-可做选择题目) 使用上述控制流语句等编写程序: 写出循环体的执行结果。 问题:使用循环嵌套:编写程序-实现矩阵的乘法。(使用几重循环?) 问题:找出一个数据区域中满足某种条件的数据。(熟练使用/, %等算术
14、运算符) 进行计算 数制的提取和运算(例如:寻找1000到1800之间的个位与十位之和为某个固定值的所有的数) 问题:如何计算得到其个位和十位等各个数位的值? 数列的阶乘 例如: 1/n!-根据精度要求求出n的值 综合一点的计算题目: 例如: 1+1/2!-1/4!+1/6!+(-1)n+1*1/(2n)! (涉及方法(带参数)的调用等) 自己找题目练习,也可参考当时课堂练习,12,Chapter06 面向对象设计,方法的调用: 类名/对象名.方法名 this.方法名 (当要调用的方法在同一个类中时, this可以省略) 静态方法 修饰符: static 静态方法可以不需要任何类型的对象而直接
15、调用(类名.方法名) 静态方法不能调用类中的实例变量 (即使是在main方法中也不行, 要调用的话必须创建对象, 并指明是哪个对象的实例变量) (问题: 在main方法中是否可以有this.n出现? (假设n为静态实例变量) ) 静态方法不能调用类中的非静态方法, 除非创建对象 静态方法可以调用静态方法 (同类方法可以互相调用) 非静态方法可以调用静态方法 (java的合理规定) 。,13,静态变量 修饰符: static 静态变量只有一个副本, 即使所在的类已经创建多个对象也是如此. (静态变量在定义时即由java自动赋予初始值,在方法中可以直接使用之) 静态方法可以调用静态变量。 回顾:M
16、ath类, Integer类及其他包装类的基本意义 Math类的标准数学方法(图5.9) 包装类的基本含义和用途 重载 在同一个类中拥有一个以上相同名称的方法定义, 称为方法名称重载 当方法名称被调用时, java根据参数的数量、类型、次序来判定应该使用哪个定义 方法调用时的参数可以进行自动类型转换(转换原则是隐式的由低到高原则),但要慎用,因为有时会引起混乱. 无法根据返回值的类型来实现重载!(什么意思? 搞明白!),14,构造函数及编写时的约定: 构造函数是在 (利用new) 创建对象时所调用的一种方法, 一般用来初始化对象中的实例变量 程序员没有编写任何构造函数(没有显式定义), jav
17、a将自动提供默认的构造函数 程序员一旦自己编写构造函数, java不再自动提供任何默认的构造函数 程序员一旦自己编写构造函数, 则必须自己写出一个默认的构造函数, 否则一旦使用默认函数时java将报错 . 构造函数中可以使用/调用该类定义中的其他方法. 使用new 语句创建对象时,自动调用构造函数(若构造函数有println语句,则在屏幕上会有输出内容) 用new语句创建一个子类对象时,怎样创建父类对象?(答:首先创建父类对象,要不显式的写出来,要不自动首先创建) 构造方法的作用域标识符必须是public吗? 构造方法的形参个数有限制吗?,15,包(了解) 使用import语句指明要引用的源程
18、序的路径,而不是要引用该包的全部源程序. 同一个包中的各个类,其类名可以相同吗? (了解),16,Packages (包的概念) (了解),起因: 目前编写程序时, 一个类一个文件, 以后的大程序可能有很多文件(类), 放在同一个文件夹里面查找很麻烦,也可能用到别人写的文件(类)集合, 于是有重名的问题等等 举例: 自己的文件放在 d:/work/software/test01文件夹中, 别人的放在 d:/work/software/test02文件夹中. 要是使用别人的文件或类, 需要: 在对方的类中声明 package test02 在自己的类的声明 import test02.* 或im
19、port test02.文件名 类路径基目录: d:/work/software (基本的目录层次) 当前目录: 是包的名称. 包: 是分组到同一个目录中的许多类的集合,17,了解接口的含义 了解Comparable接口, Iterator接口。 了解枚举类型,18,Chapter07 数 组,创建数组格式: Base_Type Array_Name = new Base_TypeLength; 数组下标从0开始 数组的可选的初始化方法(可以声明时用花括号, 也可以用程序) 可选的数组初始化方法: Object oob=new int 8,9,10; int a=(int)oob; float
20、 s=new int10; X(错误性质:让编译器自动将一个整型数组转换成为一个浮点型数组,而java编译器无此能力) 数组对象的实例变量-length的使用: for(i=0;im.length;i+) 数组在类与方法中的应用 数组可以当实例变量 数组元素当方法参数 数组名当方法参数 方法可以返回数组名,19,main方法的参数(命令行式的参数传递)(了解) 方法main采用String类型的数组作为参数: public static void main(String args) 举例: 命令行: Java TestProgram Josephine Student 则args数组的赋值?
21、注意: 数组作为对象, 使用=和=时如同对一般对象 多维数组的基本定义方法 (会定义) 掌握:循环语句处理数组的基本技巧 使用循环语句处理数组很合适: 一重for循环可以处理一维数组, 二重for循环可处理二维数组 例如:二维数组元素的有条件填充、读取和处理变换等,20,数组的排序(sort array of numbers in the ascending or descending order ) -掌握 掌握:课件中的方法(一个方法内解决): public void seletionSort( int a ) 了解:本书中带接口的较通用的写法。 数组的查找(search method)
22、-掌握 掌握:课件中的方法(一个方法内解决): public int binarySearch(int number,int searchValue) 其他教材和参考书的解法。 递归式的解法。 基本了解:本书中带接口的较通用的写法。,21,Chapter08 继 承,继承的概念: 继承允许我们先定义一个很通用的类(基类), 然后通过添加细节定义出较专用的类(派生类) 派生类对基类的继承性(包括实例变量和方法). 派生类的添加性(也包括实例变量和方法). 继承实际上经常性的包含了方法的覆盖,覆盖解决了子类和父类之间的重名问题。 派生类的构造函数 Use super to invoke a con
23、structor in parent class 一般用来初始化哪里的实例变量? 合理的派生类构造函数应该怎样初始化各个实例变量? 怎么样初始化基类的实例变量, 怎么样初始化派生类自己的实例变量? Use super to invoke a common method in base class(使用super可调用基类的一个普通方法,或者一个被派生类覆盖的方法) Use this to invoke a constructor within the class 问题:派生类继承父类的构造函数吗?(No !),22,掌握:super的使用问题: 如果在子类构造方法中使用super关键字,必须放
24、在开始之处吗? 创建子类的对象时,是首先运行完子类自身的构造方法吗? 子类不使用super关键字调用父类的构造方法时会是什么情况呢?,23,覆盖: 在派生类中, 若一个方法定义与基类中已有的某个方法拥有同样的名称, 参数数目及类型, 则称为覆盖 覆盖的过程:创建派生类对象后, 调用被覆盖的方法时, 调用的是派生类自己的方法 例如:原教材图7.13(画字符图形的程序) Triangle top = new Triangle(indent, topWidth); Box base = new Box(indent + (topWidth/2) - (bottomWidth/2), bottomHe
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 课程 2010 内容 串讲
链接地址:https://www.31doc.com/p-2201882.html