Java程序的设计的项目化教程教学资源模块1—Java基础_第1页
Java程序的设计的项目化教程教学资源模块1—Java基础_第2页
Java程序的设计的项目化教程教学资源模块1—Java基础_第3页
Java程序的设计的项目化教程教学资源模块1—Java基础_第4页
Java程序的设计的项目化教程教学资源模块1—Java基础_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 java程序设计模块1java基础 主讲教师:成奋华模块模块1java基础基础 1.1 java环境环境njava是1995年由sun microsystems公司推出的完全面向对象的编程语言n充分吸取了c+语言的优点,采用了程序员所熟悉的c和c+语言的许多语法n去掉了c语言中指针、内存申请和释放等影响程序键壮性的部分n跨平台:解释执行而不是编译执行的运行环境1 1关于关于javajavajava2有以下几个版本:n(1)j2me(java2 micro edition) 针对嵌入式技术。n(2) j2se(java2 standard edition) 针对桌面计算机开发。n(3) j2e

2、e(java2 enterprise edition) 针对企业级的应用解决方案(主要有jdbc、corba、ejb、jsp、javaservlets以及对xml的支持)。2 2javajava程序的特点程序的特点 n简单性 面向对象n分布性 鲁棒性n安全性 体系结构中立n可移植性 解释执行n高性能 多线程n动态性 3 javajava编程环境编程环境njdk是整个java的核心,包括了java运行环境(java runtime environment),许多java工具和java基础的类库 njavac:java语言编译器,生成java字节码,.class文件。njava:java字节码解释

3、器。njavadoc:类帮助文档生成器。njar:打包工具。njavap:java字节码分解程序,本程序返回java程序的成员属性及方法等信息。njava applet viewer:小应用程序浏览器工具,用于测试并运行applet小程序。njava debugger api:java调试工具。 3 javajava编程环境编程环境njava程序的编辑可以使用任何一种文本编辑器,例如:记事本、word等,只要把编辑好的文件保存为.java文件。n集成开发环境:jbuilder和jcreator pron当要用到某些自己定义的类时,必须指明它们存放目录,这就需要设置环境变量参数classpath

4、和path。n在“我的电脑”上单击右键,选择“属性”|“高级 ” | “ 环 境 变 量 ” , 在 系 统 变 量 中 编 辑classpath和path4 4javajava应用程序和应用程序和javajava小程序小程序 java应用程序java applicationjava小程序java applet基于窗口的应用程序(图形用户界面)控制台应用程序(基于字符界面)在支持java的平台上通过解释器java.exe独立运行程序可在任何操作系统下执行驻留在本地机器的硬盘上需要执行时把它从硬盘上装载到内存并执行嵌入在html编写的web页面中由游览器内含的java解释器解释运行 将远程服务器

5、上的applet下载到本地机器上后再运行hyper text mark language超文本标记语言 1.2 java语言基础 项目2 判断一个数是否是回文数1分隔符分隔符 n注释n非执行语句n提高程序的可读性njava程序有两类注释:n实现注释(implementation comments):注释代码或者实现细节n行注释:/注释内容n多行注释:/* 注释内容 */n文档注释(document comments):描述java的类、接口、构造器,方法,以及字段(field) n/*注释内容 */ 一个注释对应一个类、接口或成员 1.2 java语言基础项目2 判断一个数是否是回文数1分隔符

6、分隔符n空白符n空格符、回车符、换行符和制表符等n多个空白符与一个空白符的作用相同n普通分隔符:具有确定的语法含义n花括号“”,用于复合语句和数组的初始化以及定义类、方法等;n分号“;”,用于语句结束;n逗号“,”,用于在变量说明时分隔各个变量和方法中各个参数;n冒号“:”,用于分隔标号和语句。项目2 判断一个数是否是回文数2关键字和标识符关键字和标识符abstractbooleanbreakbytecasecatchcharclassconst *continuedefaultdodoubleelseextendsfalsefinalfinallyfloatforgoto *ifimplem

7、entsimportinstanceofintinterfacelongnativenewnullpackageprivateprotectedpublicreturnshortstaticsuperswitchsynchronizedthisthrowthrowstransient truetryvoidvolatilewhilen关键字:又称保留字,是java语言本身使用的标识符,有特定的语法含义 项目2 判断一个数是否是回文数2关键字和标识符关键字和标识符n标识符n以字母、下划线“_”、美元符“$”开始n后面跟字母、下划线、美元符和数字n区分大小写 n关键字不能用来做标识符,n见名知意n

8、约定n类名nstudent stringbuffer urln方法名ngetstudentname( )项目2 判断一个数是否是回文数3. 数据类型数据类型n简单数据类型n整数类型:byte,short,int,longn实数类型:float,doublen字符类型:charn布尔类型:booleann复合数据类型包括:n数组n类:classn接口:interface精度越精度越来越高来越高项目2 判断一个数是否是回文数4 运算符和表达式运算符和表达式n运算符 算术运算符:+ - + - * / % 关系运算符: = = != 逻辑运算符:! & | 位运算符: & | 赋值运

9、算符:= += -= *= /= %= &= |= = = = 条件运算符:?: 分量运算符: . 下标运算符: 实例运算符: instanceof 方法调用运算符: () 内存分配运算符: new 强制类型运算符:(类型) 项目2 判断一个数是否是回文数4 运算符和表达式运算符和表达式n表达式n由操作数和运算符按一定的语法形式组成的符号序列。n表达式的值:运算后产生的确定的值。n表达式的类型:表达式的值的类型。n常量或变量是最简单的表达式,其值即该常量或变量的值。n表达式的运算按照运算符的优先级顺序从高到低进行。n不同的类型的数据进行混合运算时:java会将不同的类型的数据转换成相同

10、的类型,再进行运算 项目2 判断一个数是否是回文数4 运算符和表达式运算符和表达式自动类型转换自动类型转换 强制类型转换强制类型转换 占用内存较少占用内存较少 短数据类型短数据类型 (低精度)(低精度)占用内存较多占用内存较多 长数据类型长数据类型 (高精度)(高精度)int i=10;char j=(char)i;int i=10;long j=10,k=i+j;javajava的方法的方法 项目2 判断一个数是否是回文数4 运算符和表达式运算符和表达式n数字转换成字符串 double.tostring(double)float.tostring(float) long.tostring(l

11、ong) integer.tostring(integer) short.tostring(short) byte.tostring(byte)n字符转换成数字double.parsedouble(string) float.parsefloat(string) long.parselong(string) integer.parseinteger(string) short.parseshort(string) byte.parsebyte(string) 项目2 判断一个数是否是回文数5 语句语句n方法调用语句 n表达式 a=b+c;n复合语句:用括起来的多条语句 if(ab) a=1;b

12、=0;n流程控制语句:选择结构语句和循环控制结构语句 npackage语句和import语句 npackage声明包语句n必须作为java中的第一条可执行语句npackage 包名;n如果源程序中省略了package语句,源程序所定义命名的类被隐含地认为是无名包的一部分,即源程序中定义命名的类在同一包中 njava包是由.class文件组成的一个集合 项目2 判断一个数是否是回文数5 语句语句nimport语句引入包n实现了在编译单元中使用外部类和接口的机制nimport语句只指明要用到的类所在的位置,以便能在用到时可以加载n必须写在package语句和源程序其它语句之间njava包含了130

13、多个包,如:njava.lang:java语言核心包,包含所有的基本语言类,这个包由编译器自动引入。njava.applet:包含所有实现小程序的类。njava.awt:包含抽象窗口工具集中的图形、文本、窗口gui类。njava.io:包含所有的输入输出类。:包含所有实现网络功能的类。njava.util:包含有用的数据类型类。项目2 判断一个数是否是回文数6 6选择控制语句选择控制语句n(1)if-else语句 if(条件表达式) 语句组1; else 语句组2; (2)switch语句nswitch(表达式)case 值1:语句1; break;case 值2:语句2;break;case

14、 值n:语句n;break;default:语句;nswitch语句nswitch提供了一个多路分支n是一个特殊的if- -else if结构n只允许比较一个元素nswitch中表达式类型只能是:char,byte,int,shortncase后面的值应该是常量,各case子句中的值应是不相同的。n每一个case结尾的break:使解释器退出switch语句体n如果没有break语句,switch语句会从表达式求出的值相同的case标签开始执行,直到switch语句体结束为止n一般使用break语句,但return与throw也有相同的功能。项目2 判断一个数是否是回文数6选择控制语句选择控制

15、语句项目项目3 3 求素数求素数1.1.循环控制语句循环控制语句 nfor语句nfor(表达式1;表达式2;表达式3) 循环体 n先执行表达式1进行初始化操作,然后计算机表达式2的值,表达式2的值必须是逻辑值,为真执行循环体,再计算表达式3的值,然后再判断表达式2的值,如此循环反复,直至表达式2的值为假跳出循环。n表达式1、表达式2和表达式3都可以省略,但里面的两个分号不能省略。nfor语句一般用于循环次数确定的情况。项目项目3 3 求素数求素数1.1.循环控制语句循环控制语句nwhile语句nwhile(条件表达式) 循环体 n先判断条件是否为真,如果为真就进入循环,如果为假可能一次循环也不

16、执行 ndo-while语句 do 循环体 while(条件表达式);n先执行循环体语句再进行判断,所以至少要执行一次循环项目项目3 3 求素数求素数2 2breakbreak、continuecontinue和和returnreturnnbreak语句可用于switch多路分支语句和循环语句中,其作用是跳出switch或强行结束循环。ncontinue语句只能用于循环语句中,其作用是结束本轮循环开始下一轮循环。nreturn语句:return 表达式;nreturn结束方法的调用,并返回一个确定的值n在一个方法中可以有多个return语句,但每次调用只可能有一个return语句被执行。n嵌套

17、调用:在一个方法的调用中,该方法的实现部分又调用了另外的方法。n递归调用:在一个方法中如果有调用该方法自身的情况时称为递归调用。n将一个复杂的问题化简成解决方法相同但稍微简单的问题,即所谓“递”。n问题化到最简时,再逆向回代,求出结果,即所谓“归”。n递归设计两个要素:1确定递归步骤,将要求解的原问题分解为一个或多个与原问题性质相同但规模较小解决方法与原问题相同的子问题,使子问题越来越简单,越来越接近终止条件,以保证经过有限次递归步骤后子问题能达到递归出口。2确定递归出口,找出一个或多个无须分须再分解、可直接示解的最小子问题(递归终止条件)。项目项目4 4 随机生成学生数据并显示最低学生信息随

18、机生成学生数据并显示最低学生信息1 1数组定义与使用数组定义与使用n数组是java语言中的一种复合数据类型n是通过下标定位的同类型数据的集合n一个数组中每个元素的数据类型相同n基本类型n对象类型n数组类型n数组要经过声明、分配内存及赋值后才能使用 (1) 数组声明语法:n数组元素类型 数组名;n数组元素类型 数组名;n数组元素类型 数组名;n数组元素类型 数组名;(2) 数组分配内存n数组名=new 数组元素类型数组元素个数;(3)数组元素初始化n数组元素的类型是基本类型:可略n数组元素的类型是对象类型:必须调用类的构造方法来初始化 (4)数组元素的引用:下标n下标从0开始,一个长度为n的数组

19、,其下标范围是0n-1n下标必须是整形的值,短整型、字节型和字符型的值也可以作为数组的下标n越界检查 int score ;char a ; score=new int2;a=new char23;score =1,2;a =1,2,3,4,5,6;项目项目4 4 随机生成学生数据并显示最低学生信息随机生成学生数据并显示最低学生信息2 2mathmath类类nmath类是一个最终类,它包含了常用的科学计算方法,这些方法都是静态方法(类方法),可以通过类名直接调用。nstatic final double cos(double a):余弦函数nstatic final double sin(do

20、uble a):正弦函数nstatic final double exp(double a):以e为底的指数nstatic final double log(double a):以e为底的对数函数nstatic final double sqrt(double a):平方根函数nstatic final double random():随机函数,返回0.0至1.0之间的值123mm-1s每隔n个出列每隔n个出列如此循环,直到最后剩下1个大王项目5 约瑟夫问题图解项目项目5 5 约瑟夫问题约瑟夫问题1 1stringstring类类nstring类用于表示java中的字符串常量n字符串一旦被创建

21、,其值就不能再被改变n用双引号引起来的一系列字符 n构造方法常用的有:nstring ():新建一个空字符串对象,字符串长度为0。nstring (string original):用一个已经存在的字符串常量创建一个新string对象,该对象内容与给出的字符串一致。nstring (char value):用指定字符数组value来创建一个字符串对象,字符串对象中的内容为字符数组中的内容。nstring (stringbuffer buffer):利用一个已经存在的stringbuffer对象来创建一个新的string对象。 访问字符串方法nint length():获得当前字符串中的字符个数

22、。nchar charat(int index):获取字符串指定index位置上的字符。nstring substring(int beginindex):获得从指定处开始到最后的子串。nstring substring(int beginindex,int endindex):获得指定范围内的子串。nvoid getchars(int srcbegin,int srcend,char dst,int dstbegin):将一个字符串从srcbegin到srcend位置子串复制到数组dst中。nint indexof(int ch):查找给定的字符ch在字符串中第一次出现的位置。如果找不到返回

23、-1。nint lastindexof(int ch):查找给定的字符ch在字符串中最后一次出现的位置。如果找不到返回-1。nint indexof(string str):查找给定的字符串str在字符串中第一次出现的位置。如果找不到返回-1。nint lastindexof(string str):查找给定的字符串str在字符串中最后一次出现的位置。如果找不到返回-1。项目项目5 5 约瑟夫问题约瑟夫问题1 1stringstring类类n修改字符串方法nstring contact(string str):将当前字符串对象与给定的字符串str连接起来。nstring replace(cha

24、r oldchar,char newchar):把字符串出现的所有oldchar字符全部用newchar替换。nstring touppercase():将字符串内的所有字符改为大写。nstring tolowercase():将字符串内的所有字符改为小写。其它方法nboolean equals(string s):将当前字符串与指定的s进行比较,如果长度和内容完全一致就返回true,否则返回false。nboolean equalsignorecase(string s):将当前字符串与指定的s忽略大小写比较。nint compareto(string str):将当前字符串与指定的str按

25、字典顺序比较大小,相等返回0,如果该字符串按字典顺序小于参数字符串把返回值小于0,否则大于0。nint comparetoignorecase (string str):将当前字符串与指定的str按字典顺序忽略大小写进行比较。与运算符与运算符“=”的比较不同的比较不同“=”比较两个对象是否引用同一个实比较两个对象是否引用同一个实例例equals()和和equalsignorecase()比较两个比较两个字符串对应的每个字符值是否相同字符串对应的每个字符值是否相同 项目项目5 5 约瑟夫问题约瑟夫问题1 1stringstring类类项目项目5 5 约瑟夫问题约瑟夫问题2 2stringbuff

26、erstringbuffer类类(1)构造方法nstringbuffer():创建一个不包含字符且初始容量为16个字符的stringbuffer对象。nstringbuffer(int capacity):创建一个不包含字符且初始容量为capacity的stringbuffer对象。nstringbuffer(string str):创建一个stringbuffer对象,该对象包含str字符串。(2)访问字符串方法nint length():返回stringbuffer对象当前的字符个数。nint capacity():不需要另外分配内存的情况下,stringbuffer对象可以存储的字符个数

27、。nvoid ensurecapacity(int mincapacity):允许指定stringbuffer对象的最小容量。nvoid setlength(int newlength):允许指定stringbuffer对象可以增加或减少的容量。nchar charat(int index):返回stringbuffer对象中指定位置index上的字符。(3)修改字符串方法nvoid setcharat(int index,char ch):将stringbuffer对象中指定位置index上的字符设置为ch。nstringbuffer append(string str):在已有字符串末尾添

28、加字符串str。nstringbuffer insert(int offset,string str):在指定位置处插入str。 1.3 1.3 面向对象面向对象javajava njava是一种纯面向对象的程序设计语言,类和对象是它的核心和本质n类实际上是定义了一种新数据类型n对象是类的实例化 n属性:类的共同特征、特性n值:属性的值n方法:对象的动作,用于操作属性的值人类人类属性:姓名、属性:姓名、性别性别、职业职业方法:吃饭方法:吃饭李白李白男男诗人诗人章子怡章子怡女女演员演员奥巴马奥巴马男男美国总统美国总统项目项目6 职员类职员类employee1 面向对象的三大特征面向对象的三大特征

29、(1)继承(inheritance)n指新的类可以获得已有类(称为基类或父类)的属性和行为,称新类为已有类的派生类(或子类)。n有助于解决软件的可重用性问题n程序结构清晰n降低了编码和维护的工作量(2)封装(encapsulation)n信息隐蔽技术n利用抽象数据类型将数据和基于数据的操作封装在一起n将对象的使用者和设计者分开n使用者不必知道行为实现的细节,只须使用设计者的提供的消息来访问对象。n封装的定义:n清楚的边界,所有对象的内部信息被限定在这个边界内;n接口即对象向外界提供的方法,外界可以通过这些方法与对象进行交互;n受保护的内部实现,即软件对象功能的实现细节不能从类外访问。njava

30、语言通过类来实现封装(3)多态(polymorphism)n一棵继承树中的类中可以有多个同名但不同方法体以及不同形参的方法。n静态多态(编译时多态) :在编译阶段,具体调用哪个被重载的方法编译器会根据参数的不同来表态确实调用相应的方法。n方法重载n动态多态(运行时多态) :由于派生类继承了基类所有的属性(私有的除外),所以派生类对象可以作为基类对象使用。程序中凡是使用基类对象中的地方,都可以用派生类对象来代替。一个对象可以通过引用派生类的实例来调用派生类的方法。n方法重写(1)定义语法n修饰符 class 类名 extends 父类名implements 接口名列表声明成员变量;声明成员方法;

31、n一般类只有两种访问权限npublic(公共):可以在不同的包中引用n默认(友好):只能在同一个包中引用n内部类:一个类可以定义在另一个类的内部n内部类可以有private 和protected权限。public(公共)private(私有)protected(保护)abstract(抽象)final(最终类)npublic、protected、privatenfinal(方法不能重写)nstatic(静态)nnative (集成其它语言代码)nsynchronizedn(同步,控制多个线程并发访问)public、protected、privatefinal(常量)、static(静态)tra

32、nsient(暂时,用于对象存档)volatile(易变,用于并发线程共享) (2)类成员的访问权限npublic:在所有包内可见nprotected:在同一个包内及其子类(不同包)n缺省:在同包内可见nprivate protected:在本类及基子类可见nprivate:仅在本类内可见(3)对象的定义及使用n对象的定义包括声明、实例化和初始化n类名 对象名=new 类名(参数列表);n通过运算符“.”可以实现对成员变量的访问和成员方法的调用。n对象名.变量名;n对象名.方法名;n注意:如果成员变量和成员方法使用static修饰,它们成为静态成员也称类成员。n静态成员存储于类的存储区,属于整

33、个类而不属于一个具体的类对象。n同一个类的所有对象所访问的静态成员都是同一个n静态方法只能处理静态变量。调用静态成员语法是:n类名.静态变量名;n类名.静态方法; null null 、thisthis与与super super njava系统默认,每个类都缺省地具有null 、this与super三个属性,在任意类中都可以不加说明而直接使用它们。nnull表示“空”,代表一个什么也没有的“空”值。在声明一个对象但尚未为其开辟内存单元时可以指定这个对象为null。nthis表示当前对象本身,代表了当前对象的一个引用。n对象的引用:对象的另一个名字n通过引用可以顺利地访问到对象,包括访问、修改对

34、象的属性、调用对象的方法。nsuper表示的是当前对象的直接基类,是当前对象的直接基类的引用。super的使用有三种情况:n访问基类被隐藏的成员变量:super .variable;n调用基类中被重写的方法: super.method(paramlist);n调用基类的构造函数:super(paramlist);n注意:super和this不能用于静态方法中 nmain()方法中,不能使用super和this 项目项目7 7 一个简单的实现继承的程序一个简单的实现继承的程序1 1构造方法构造方法n构造方法的作用是为类的成员属性赋初值n构造方法名与类名相同;n构造方法不返回任何值,也没有返回类型

35、,即使是void也不行;n每一个类可以显式定义零个或多个构造方法,如果没有显式定义构造方法,java会自动提供一个无参构造方法,为类的成员属性赋数据类型默认值;n 构造方法在创建对象时自动执行,一般不能显式地直接调用。 n构造方法的继承遵循如下的原则:构造方法的继承遵循如下的原则:n若父类是无参数的构造方法,则子类无条件地继承该构造方法。n 若子类无自己的构造方法,则它将继承父类的无参构造方法作为自己的构造方法:n若子类有自己的构造方法,则在创建子类对象时,它将先执行继承自父类的无参构造方法,然后再执行自己的构造方法。n若父类是有参数的构造方法,子类可以通过在自己的构造方法中使用super关键

36、字来调用它,但这个调用语句必须是子类构造方法的第1个可执行语句。 项目项目7 一个简单的实现继承的程序一个简单的实现继承的程序1构造方法构造方法项目项目7 一个简单的实现继承的程序一个简单的实现继承的程序2 2继承继承n子类不能继承父类中访问权限为private的成员属性和方法。 n在java语言中只允许单继承,n每一个类只能有一个父类n一个类允许同时拥有多个子类n父类:是所有子类的公共成员属性和公共成员方法的集合n子类:是父类的特殊化,是对公共成员属性和成员方法的功能、内涵方面的扩展和延伸。n单继承形成了一棵继承树 n类的继承具有传递性,即子类继承父类的所有非私有成员,也继承父类的父类类直至

37、祖先的所有非私有成员。 车汽车机动车非机动车交通工具 有轮子带动力驱动的车不带动力驱动的车两轮非机动车三轮非机动车能洒水的汽车带灭火工具的汽车带医疗工具的汽车继承举例 图解父亲的玉super.父类成员继承继承class a int i=1,j=2;class b extends a int j=3; 打印i;/父亲的i 打印j;/儿子的j 打印super.j;/父亲的j项目8 队列图解在队头出队列在队尾进队列项目项目8 一个数字队列实现程序一个数字队列实现程序1. 接口接口n是若干完成某一特定功能的没有方法体的方法(抽象方法)和常量的集合n只指定类必须做什么,而不是如何做n了解对象的交互界面,而无须了解对象所对应的类;n指明多个类需要实现的方法;n实现不相关类的相同行为,而无须考虑这些类之间的关系。n接口的定义:接口声明和接口体。publicinterface 接口名 extends 父接口名nextends:一个接口可有多个父接口,用逗号隔开,而一个类只有一个直接父类。n接口体包括常量的定义和方法的声明。n接口的实现nimplements:一个类实现某个接口n在类体中可以使用接口中定义的常量n必须实现接口中定义的所有方法n一个类可以实现多个接口,在implements子句中用逗号隔开n接口类型的使用n引用类型n任何实现该接口的类

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论