Presentation is loading. Please wait.

Presentation is loading. Please wait.

第2章 标识符和数据类型.

Similar presentations


Presentation on theme: "第2章 标识符和数据类型."— Presentation transcript:

1 第2章 标识符和数据类型

2 本章主要内容: Java的基本语法单位 1 Java编码体例 2 Java的基本数据类型 3 复合数据类型 4 类和对象的初步介绍 5

3 引言:Java程序的结构 package语句:可以没有,或可以有一个,但必须放在文件开始的地方 import语句:可以没有,或可以有多个,如果有import语句的话,必须放在所有类定义之前 public型的类定义:每个文件中最多有一个 类定义:每个文件中包含的类定义的个数没有限制 接口定义:每个文件中包含的接口定义个数没有限制

4 2.1.1 空白、注释及语句 1.空白 2.1 Java的基本语法单位 换行符及回车键、空格键、水平定位键(tab)都是空白。
程序中除了加入适当的空白外,还应使用缩进格式,使得同一层语句的起始列位置相同

5 一种不好的风格 class Point {int x,y;Point(int x1,int y1) {x=x1; y=y1; }
){this(0,0);} void moveto(int x1,int y1){ x=x1;y=y1; }}

6 提倡的程序风格 class Point { int x, y; // 点的x轴、y轴坐标
Point(int x1, int y1) { // 构造方法 x = x1; y = y1; } Point(){ // 构造方法 this( 0, 0); void moveto(int x1, int y1){ // 点移动到(x1, y1)

7 2. 注释 程序中适当地加入注释,会增加程序的可读性 程序中允许加空白的地方就可以写注释。注释不影响程序的执行结果,编译器将忽略注释
Java中的三种注释形式: // 在一行的注释 /* 一行或多行的注释 */ /** 文档注释 */

8 Java各语句间以分号“;”分隔。一个语句可写在连续的若干行内
3. 语句、分号和块 Java中的语句是最小的执行单位 Java各语句间以分号“;”分隔。一个语句可写在连续的若干行内 花括号“{”和“}”包含的一系列语句称为语句块,简称为块 语句块可以嵌套 即语句块中可以含有子语句块。在词法上,块被当作一个语句看待

9 2.1.2 Java关键字 abstract boolean break byte case catch char class const
continue do double else extends false finally cast default final float for future generic goto if implements import inner instanceof int interface long native new null operator outer package private protected public rest return short static super switch synchronized this throw throws transient true try var void volatile while

10 2.1.3 标识符 标识符是以字母、下划线(_)或美元符($)开头,由字母、数字、下划线(_)或美元符($)组成的字符串
标识符区分大小写,长度没有限制 标识符中不能含有其它符号,包括空格 标识符可用作变量名、方法名、接口名、类名等 注意:JAVA 源码使用的是Unicode码,而不是ASCII码。

11 标识符例 合法的标识符 非法标识符 Identifier username User_name _sys_var1 $change sizeof 2Sun // 以数字2开头 class // 是Java的关键字,有特殊含义 #myname // 含有其他符号#

12 Java中的一些命名约定 : 2.2 Java编码体制 类 类名应为名词,含有大小写,每个字的首字母大写
类 类名应为名词,含有大小写,每个字的首字母大写 接口 接口是一种特殊的类,接口名的命名约定与类名相同 方法 方法名应是动词,含有大小写,首字母小写,其余各字的首字母大写,尽量不要在方法名中使用下划线 常量 简单类型常量的名字应该全部为大写字母,字与字之间用下划线分隔,对象常量可使用混合大小写 变量 所有的实例变量、类变量和全局变量都使用混合大小写,首字符为小写,后面的字首用大写,作为字间的分隔符。变量名中不要使用下划线

13 2.3 Java的基本数据类型 数值类型 基本数据类型 字符类型:char 布尔类型:boolean 数据类型 类类型 复合数据类型
数组类型 接口类型:interface 字符类型:char 数值类型 浮点数类型:float,double 整数类型:byte,short,int,long

14 2.3.1 基本数据类型 逻辑类型—boolean 字符类型——char
有两个状态:表示成on/off 或 yes/no,其常量值用true/false表示 在计算机内部用一个字节(8位)来表示 不允许与数值类型之间进行转换 字符类型——char 表示单个字符,常量值用单引号‘ ’括起来 采用Unicode编码,其值用2字节(16位)无符号整数表示,范围为0—65535

15 2.3.1 基本数据类型 整型——byte, short, int 和 long
常量可用十进制、八进制、十六进制表示,以0开头为八进制,0x开头为十六进制,正常为十进制 整型常量是int型的,在数值后加“L”表示是long型 所有的整型量都是有符号数

16 2.3.1 基本数据类型 浮点型——float 和 double
单精度浮点数用float 表示,占4字节,表示范围为1.4e-45 ~3.4e+38 双精度浮点数用double 表示,占8字节, 表示范围为4.9e-324 ~1.8e+308 浮点类型都是有符号数 浮点常量都是double类型,除非在数值后加字母“ f ” 来说明它

17 2.3.2 类型转换 由低到高的转换可自动进行。各类型所占位数从短到长依次为:
byte short char int long float double 不同类型数据的转换规则 操作数1类型 操作数2类型 转换后的类型 byte或short int byte或short或int long byte或short或int或long float byte或short或int或long或 float double char

18 2.3.2 类型转换 当位数多的类型向位数少的类型进行转换时,需要用户明确指明,即进行强制类型转换
一般地,高级类型(即位数较多的数据类型)转为低级类型(即位数较少的数据类型)时,截断高位内容,因此可能会导致精度下降或数据溢出 int i = 3; byte b = (byte) i;

19 程序2-3为每种基本类型定义了一个变量,并为其赋值
2.3.3 变量、说明和赋值 程序2-2 变量的说明和赋值 程序2-3为每种基本类型定义了一个变量,并为其赋值

20 2.4 复合数据类型 早期的程序设计语言把变量看作是孤立的东西 int day, month, year;
如果我们在一个程序中需处理日期,则往往说明三个独立的整数分别代表日、月、年。如下所示: int day, month, year;

21 这种方法的不足: 2.4 复合数据类型 如果程序需要处理多个日期,则需要更多的说明。例如要保存两个生日,需如下说明:
因使用了多个变量而变得混乱,容易出错。同时,又占用了过多的命名空间。更重要的是每个值都是独立的变量 int myBirthDay,myBirthMonth,myBirthYear; int yourBirthday,yourBirthMonth,yourBirthYear;

22 有两种办法来解决这个问题: 2.4 复合数据类型 提供日期类型,并为这个类型定义相应的函数,通过调用这些函数就可以得到所需要的结果
定义复合数据类型。复合数据类型为我们提供了更强大的类型定义工具,设计程序时也更加灵活

23 2.4 复合数据类型 定义:用户定义的新类型为复合数据类型 在有些语言中,复合数据类型又称作结构类型或记录类型。复合数据类型由程序员在源程序中定义,一旦有了定义,该类型就象其他类型一样使用

24 2.4 复合数据类型 对于新定义的复合数据类型,因系统不知道它的具体内容,要由程序员指定其详细的存储结构,这里存储空间的大小不是以字节来衡量,也不是位,而是按已知的其他类型来考虑 Java是面向对象的程序设计语言,它为用户提供的复合数据类型就是我们在前面提到的复合数据类型,即类、接口和数组

25 2.5 类和对象的初步介绍 2.5.1 java中的面向对象技术 1. 为什么使用面向对象技术 面向过程的设计方式使用的众多变量名、函数名互不约束,令程序员不堪重负 面向过程方法设计的程序把处理的主体与处理的方法分开,因此各种成分错综复杂地放在一起,难以理解,易出错,并且难于调试

26 1.为什么使用面向对象技术 随着开发系统的不断扩大,面向过程的方法越来越不能满足使用者的要求 OOP技术使得程序结构简单,相互协作容易,更重要的是程序的重用性大大提高了 面向对象的方法学,就是使分析、设计和实现一个系统的方法尽可能地接近我们认识一个系统的方法 面向对象技术主要包含这样几个概念:对象、抽象数据类型、类、类型层次(子类)、继承性、多态性

27 1.为什么使用面向对象技术 面向对象的方法学包括以下三方面: 面向对象的分析(OOA, Object-Oriented Analysis) 面向对象的设计(OOD, Object-Oriented Design) 面向对象的程序设计(OOP, Object-Oriented Program)

28 2. 什么是OOP OOP技术把问题看成是相互作用的事物的集合,用属性来描述事物的性质,而它的操作定义为方法。
OOP将现实生活中的事物经过抽象,映射为程序中的对象。对象在程序中是通过一种抽象数据类型来描述的,这种抽象数据类型称为类(Class) OOP中采用了三大技术: 封装、继承和多态

29 类、公有、私有、保护成员、静态成员、构造函数、析构函数、虚函数、虚基类、this
3.Java的OOP能力 Java与C++ 的OOP能力比较 C++ 多重继承 Java 接口、包、final、super 类、公有、私有、保护成员、静态成员、构造函数、析构函数、虚函数、虚基类、this C++独特的 Java独特的 共有的部分

30 2.5.2 Java中的类定义 1. Java中类定义的一般格式为: 修饰符 class 类名 [extends 父类名]{
类型 成员变量1; 类型 成员变量2; ...... 修饰符 类型 成员方法1(参数列表){ 类型 局部变量; 方法体 } 修饰符 类型 成员方法2(参数列表){

31 例2-7 一辆轿车的类定义 Class Car{ int color_number; int door_number; int speed; void brake() {…} void speedUp() {…} void slowDown() {…} }

32 2. 类定义的几点说明 Java中的类定义与实现是放在一起保存的,整个 类必须在一个文件中,因此有时源文件会很大 Java源文件名必须根据文件中的公有类名来定义,并且要区分大小写 类定义中可以指明父类,也可以不指明。若没有指明从哪个类派生而来,则表明是从缺省的父类Object派生而来。 Object是Java中所有类的父类。Java中除Object之外的所有类均有一个且只有一个父类。Object是唯一没有父类的类 class定义的大括号之后没有分隔符 “;”

33 protected:被同一包及其子类访问 friendly:默认,被同一包的类访问
2.5.3 与OOP有关的关键字 1.限定访问权限的修饰符 public:被所有类访问 private:仅被类本身访问 protected:被同一包及其子类访问 friendly:默认,被同一包的类访问

34 2.存储方式修饰词 Static既可修饰数据,也可修饰方法,表明成员是静态的。 静态成员可被类的所有对象共享。 公有静态变量相当于全局变量

35 继承指子类共享超类的属性和方法。 与继承有关的关键字有: 3.与继承有关的关键字 final:表示不能再派生子类
abstract:表示被修饰成分是抽象的 抽象方法只有原型说明,方法体是空的 含抽象方法的类必须是抽象类 抽象类一定要派生子类

36 4.This 和super This 指代本类 Super指代父类

37 2.5.4 类定义示例 例2-12 定义平面中的一个二维点Point class Point{ int x,y;
Point(int x1,int y1){ x=x1; y=y1; } Point(){ this(0,0); void moveTo(int x1,int y1){

38 2.5.5 创建一个对象 1.对象引用 格式如下: 类名 变量名 如:Point p;
类名 变量名 如:Point p; 注意:申明变量时,只在内存中建立一个引用,并置初值为null,即不指向任何内存空间。 2.对象实例化 变量名=new 类名(参数列表) 如:p=new Point(1,1) 注意: 实例化的过程是为对象分配内存 可以把引用看作指针,它指向该实例的内存首地址 当对象作函数参数时,它传递的是对象引用

39 3.对象的使用 使用对象的格式如下: 例:在前例的基础上使用对象: p.x=10; p.y=20; p.moveTo(30,30);
对象引用.成员数据 对象引用.成员方法(参数列表) 例:在前例的基础上使用对象: p.x=10; p.y=20; p.moveTo(30,30);

40 Java把说明为class类型的变量看作是引用 因此,s,t指向同一个对象
2.5.6 引用变量的赋值 例2-15 引用变量的赋值 int x=7; int y=x; String s=“Hello”; String t=s; Java把说明为class类型的变量看作是引用 因此,s,t指向同一个对象

41 2.5.7 自动初始化 当执行new时,系统自动初始化成员变量,数值赋0,布尔变量赋false,对象变量赋null。 方法内的变量不能进行初始化,需要显式地进行赋值。

42 作业:2.3, 2.4, 2.5, 2.7,2.9


Download ppt "第2章 标识符和数据类型."

Similar presentations


Ads by Google