haihongyuan.com
海量文库 文档专家
全站搜索:
您现在的位置:首页 > 小学教育 > 小学英语小学英语

lesson2

发布时间:2013-10-13 08:04:01  

Java面向对象程序设计

第2章 Java程序语言基础

1

本章主要内容
? ? ? ? ?

熟悉Java程序的组织形式 理解类、对象与成员的概念 掌握对象的创建与引用 熟悉访问修饰符和方法修饰符的使用 掌握Java支持的数据类型与操作符

2

演示标识符

Java程序的组织形式
?

基本要素

变量名和方法名的命名规范: 第一个单词小写,后面单词首 – 保留字:也叫关键字,有特定意义和用途,不能随 字母大写。

意使用。
?

class、 interface、 void、int、double、protected、 public、 private、 static、final、abstract、extends、 implements、if、for、while、switch等。



标识符:以字母、下划线或美元符($)开头,由字母、 数字、下划线或美元符($)组成,区分大小写。可用 作变量名、方法名、接口名、类名等。
?

注意:尽量使用有意义的英文单词进行命名,并遵守 相应命名规范。
3

演示生成API文档

Java程序的组织形式
?

基本要素(续)
– –

单行注释
? ?

System.out.println(“Hello!Welcome!”); //行末注释 /* public void run ( ) { …… }*/

多行注释



文档注释
?

可以使用javadoc工具生成HTML API文档 /** * 方法的功能说明 * @param 参数 * @throws 异常 */
4

演示编译含有多个类的源文件

Java程序的组织形式
? ?

程序结构以“类”为基础,定义一个类时要使 用“class”关键字。 一个源文件中可包含多个类,但只能有一个是 公共类,并且该公共类的名称要与文件名同名。
例如:源程序A.java文件中含有如下代码: public class A { } 类名的命名规范: class B { } 首字母大写 class C { } 编译后,生成3个字节码文件:A.class,B.class,C.class
5

演示创建与导入包

Java程序的组织形式
? ?

演示环境变量classpath

包的概念


包允许将类组合成较小的单元(类似文件夹)。 有助于避免命名冲突。在使用类时,类的名称很难 决定,有时在命名时不得以需要与其他类名同名。 包机制能够在一定程度上设置其内部的类、属性和 方法的对外可见度。

包的作用
– –

? ?

包的创建:package 包名; 包的导入:import 包名.类名;

注意包名的命名规范: 全部小写,域名定义。

6

类与对象
?

万事万物皆对象。


面向对象的编程(OOP)思想实质是使用计算机 语言实现对事物的描述,尽可能反映出现实世界事 物的本来面目。

?

?

类是对一类的事物描述,是抽象的、概念上的 定义;对象是实际存在的该类事物的每个个体, 也称实例。 程序一般是依赖创建类的实例来驱动运行的。

7

类成员
?

类定义两方面内容:
– –

类中封装的数据,叫做属性或者成员变量; 类中封装的操作数据的行为,

叫做方法或者成员方 法。

?

在实际问题中,对实体类的抽象是最关键的一 步,它决定了该系统是否能真实反映实际业务 活动。

8

类成员
?

【例2.3】创建一个计数器类,封装计数数据及 其各种操作方法。

public class Accumulator{ private int data; //private表示封装data属性,防止外界修改 public void add( ){ //计数器计数 data ++; pubic static void main(String[] args) { } Accumulator acc = new Accumulator( ); public void reset( ){ //计数器清0 acc.reset( ); data = 0; acc.add( ); } acc.add( ); public int getData( ){ //返回计数器结果 System.out.println(acc.getData( )); return data; } } } 9

信息的封装
? ?

封装是对对象的一种保护机制,使得它的属性 或方法不被外部的程序直接访问。 直接操作类内部定义的属性,会导致数据的错 误、混乱或安全性问题。例如:
public class Student{ public int age; public static void main(String[] args){ Student stu = new Student(); stu.age = 1000; //不合理的设置 } }
10

信息的封装
?

通过将数据封装、声明为私有的(private),再 提供一个或多个公开的(public)方法实现对该 属性的操作,以实现下述目的:



– –

隐藏一个类的实现细节; 防止对封装数据的未经授权的访问。使用者只能通 过事先定制好的方法来访问数据,可以方便地加入 控制逻辑,限制对属性的不合理操作; 有利于保证数据的完整性; 便于修改,增强代码的可维护性;

11

信息的封装
public class Student{ private int age; public int getAge(){ return age; } public void setAge(int vAge) { public void setAge(int vAge) { age = vAge; if(vAge > 200 || vAge < 0) { } System.out.println(“请输入正确的年龄"); } else { age = vAge; } } }
12

对象的初始化与构造方法
?

构造方法是类中特殊的方法,该方法的作用是 在对象实例化过程中,帮助完成对象的初始化 工作。例如: MyClass mc = new MyClass( );


new关键字表示创建对象,同时调用构造方法 MyClass( )。

?

构造方法是在类中定义的,并在对象被创建时 所调用的方法,该方法的名称与类名相同,不 需要指定返回值,也不需要使用return返回。
13

对象的初始化与构造方法
?

【例2.9】使用new关键字实例化对象。 public class MyClass {

public class MyClass//编译器自动提供的默认的无参构造方法 { private int i = 100;MyClass( ) { public void show( ) { } System.out.println(i); … } } public static void main(String[ ] args){ MyClass mc = new MyClass( ); mc.show( ); } }
14

无参与有参构造方法
? 【例2.10】调用无参与有参的构造方法。 public class Constructor { Constructor( ) { System.out.println(“无参构造方法被调用!"); } Constructor(int n) { System.out.println("int参数的构造方法被调用!"); } public static void

main(String[ ] args) { Constructor(String message) { ConstructorPara cp1 = new ConstructorPara( ); System.out.println("String参数的构造方法被调用!"); ConstructorPara cp2 = new ConstructorPara(12); } ConstructorPara cp3 = new ConstructorPara("Hello"); } }
15

方法重载
? ? ? ? ?

发生在同一个类中 方法名称相同 参数列表不同 返回类型可以相同或不同 构造方法或成员方法均可发生重载【例2.4】

16

引用与对象
?

MyClass mc = new MyClass( ); 这条语句实际上完成了三件事情:
– –



(1)声明了一个引用mc,该引用的类型为MyClass, 将只能引用MyClass以及其子类的对象。 (2)利用MyClass( )构造方法创建了一个MyClass对 象。 (3)把创建的对象赋给mc引用。
0x1001

栈 内 存

0x1001 mc= null

this.i

this.show()

堆 内 存
17

引用与对象——this关键字
?

【例2.14】不同对象对引用的赋值。

public class Reference { private String name; public Reference(String n) { { name) name = n; = name; name; this.name } public ) { public void showName( static void main(String[ ] args) { Reference System.out.println(name); r1 = new Reference("r1"); Reference r2 = new Reference("r2"); } r1.showName( ); } r1 = r2; r1.showName( ); }
18

引用相等与对象相等的判断
?

【例 2.16】String对象相等的判断
public class StringEquals { public static void main(String[ ] args){ String s1 = "Hello world"; String s2 = "Hello world"; String s3 = new String("Hello world"); System.out.println(s1 == s2); System.out.println(s1 == s3); System.out.println(s1.equals(s3)); } }
19

访问修饰符
? ?

?

访问修饰符的作用是说明被声明的内容(类、 属性、方法)的访问权限。 通过访问修饰符把类中将被其他类调用的内容 开放出来,而把不希望别人调用的内容隐藏起 来。 4种访问修饰符:


public,private,protected,无修饰符

20

演示访问修饰符

访问修饰符
类型
同一个类中 同一个包中的类 不同包的子类

private
可访问 不可访问 不可访问

无修饰符 protected public
可访问 可访问 不可访问 不可访问 可访问 可访问 可访问 可访问 可访问 可访问

不同包并且非子类 不可访问

不可访问 可访问

21

方法修饰符
?

方法修饰符为方法设置访问权限,包括:
– –



static final abstract

22

演示static修饰符

方法修饰符 —— static
? ?

?

关键字static可以用于修饰变量、方法、代码 块。 使用static修饰的成员变量和方法,称为静态 成员,也称为类成员。静态成员存储于类的存 储区,属于整个类,不属于一个具体的类对象, 被所有该类的对象共享。因此在不同的类对象 中访问静态成员,访问的是同一个。 成员声明为static后,无需创建该类的任何对 象,直接通过类名称来调用就可以访问。

23

方法修饰符 —— static
?

【例2.7】用static修饰变量、方法、代码块的综合应 用。
public class StaticSample{ pubic static void main(String[] args) { static int x = 3; StaticSample.display( ); static int y; } static void display( ){ System.out.println("x = " + x); System.out.println("y = " + y); } static{ System.out.println("static block"); y = x + 2; } } 24

方法修饰符 —— static
?

【例2.11】static成员变量的初始化。 class ClassStatic { public static int i = staticInitMethod( ); public static int staticInitMethod( ){ System.out.println("static成员变量被初始化"); return 12; pubic static void main(String[] args) { } System.out.println("访问static成员变量i"); } int a = ClassStatic.i; } System.out.println("创建对象");
ClassStatic si = new ClassStatic( ); }
25

方法修饰符 —— final
? ? ? ?

用final修饰的类不能被继承。。 用final修饰的变量,值不能被修改,即为常 量。 用final修饰的方法不能被重写。 如果对象已申明为final,对该对象的引用则 不能更改,但它的属性值可以更改。
常量的命名规范: 所有字母均大写。

26

方法修饰符 —— final
?

【例2.8】用final修饰常量PI,实现计算圆的面积。 public class Circle { private final double PI = 3.14; private double radius; public void setRadius(double radius) { this.radius = radius; } public double area( ){ return PI * this.radius * this.radius; } }
27

基本数据类型
? ? ?

一个变量的数据类型决定了变量所能容纳的数 值和操作符。 Java是一种强类型语言,意味着每一个变量都 有一种类型且每一种类型都是经过严格定义的。 C与Java基本数据类型的对比

28

演示基本数据类型

基本数据类型

29

演示数据类型转换

数据类型转换
? ?

不同类型的数据进行混合运算时,首先需要转 换为同一类型然后运算。 自动类型转换:也称放大转换。


条件:两种类型兼容,目标类型大于源类型,布尔 型与其他类型不兼容。 条件:源类型大于其目标类型,如float值赋给int 类型变量值,此时需要显式类型转换,即
double d = 12.1 ? int i = (int)d;
?
30

?

强制类型转换:也称缩小转换。


演示包装类JDK1.5新特性

包装类
?

为了能将基本类型 视为对象来处理, 并能连接相关的方 法,Java为每个基 本数据类型都提供 了包装类。 java.lang包中提供 了每个基本数据类 型对应的包装类。

基本数据类型
boolean byte char

包装类
Boolean Byte Character

short int
long float double

Short Integer
Long Float Double
31

包装类
?

【例2.18】实现基本数据类型和包装类之间的转换。 public class Convert { public static void main(String[ ] args) { int myInt = 12; Integer myInteger = new Integer (myInt); System.out.println(myInteger.intValue( )); } }

32


演示操作符

操作符
运算符 描述 示例 +, -, *, /,% ,++, --,+= 算术运算符使用数字操作数。这些运算 算术运算符 符主要用于数学计算

关系运算符用于测试两个操作数之间的 关系运算符 关系。使用关系运算符的表达式的结果 为 boolean 型
逻辑运算符 逻辑运算符用于 boolean 操作数

==, >=, <= ,!=<,>
&, |, ^,&&,||,! ?:

条件运算符 条件运算符很独特,因为它是用三个操 作数组成表达式的三元运算符。它可以 替代某种类型的 if-else 语句
赋值运算符 赋值运算符为一个等号 =,它将值赋给 变量

=, *=, /=, +=, -=
33

操作符优先级
?

【例2.19】在复杂运算中,体现操作符的运算优先级。 public class OperatorTest { public static void main(String[ ] args) { int a = 1, b = 2, c = 3; boolean result; result = ( a == 1 ) && ( b != ++a * c ); System.out.println("the result is: " + result); } }

34

变量作用域
?

变量可以在代码块中声明,代码块用来定义作 用域,代码块以左大括号开始,以右大括号结 束。

class ScopeVar { public static void main(String [ ] args) { int num = 10; if ( num == 10) { //num 在内层作用域中可用 int num1 = num * num; System.out.println(“num 和 num1 的值为" + num + " " + num1); } //错误!num1 未知 num1 = 10; System.out.println(“num 的值为" + num); } }
35

本节小结
? ? ? ?

?
? ? ? ? ? ? ?

?

Java 程序结构以“类”为单位。 “包”机制能够避免命名冲突,以及保护类内部成员。 类包括成员属性和成员方法的两方面描述。 通过封装实现对类内部数据的保护。 对象初始化与构造方法的使用。 方法重载的概念。 对象及引用的概念。 访问修饰符的作用。 static关键字修饰静态成员,可以直接用类名称调用,且只能调 用其它静态成员。 final关键字用来表示常量。 Java数据类型与C语言的区别,数据类型转换及包装类的使用。 Java操作符的使用。 变量作用域的概念。
36


网站首页网站地图 站长统计
All rights reserved Powered by 海文库
copyright ©right 2010-2011。
文档资料库内容来自网络,如有侵犯请联系客服。zhit326@126.com