《Java与面向对象程序设计实验教程全套电子课件完整版ppt整本书电子教案最全教学教程整套课件.ppt》由会员分享,可在线阅读,更多相关《Java与面向对象程序设计实验教程全套电子课件完整版ppt整本书电子教案最全教学教程整套课件.ppt(542页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、面向对象的程序设计第第7章章线程线程面向对象的程序设计对外经济贸易大学 雷擎content7.1多线程基础多线程基础7.2线程的生命周期线程的生命周期7.3生产者与消费者问题生产者与消费者问题实验:多线程实验:多线程面向对象的程序设计对外经济贸易大学 雷擎7.1多线程基础多线程基础o7.1.1线程的概念线程的概念o7.1.2Thread类和类和Runnable接口接口o7.1.3在程序中实现多线程在程序中实现多线程面向对象的程序设计对外经济贸易大学 雷擎7.1.1线程的概念线程的概念o线程和进程都是指正在执行的程序代码,是线程和进程都是指正在执行的程序代码,是与计算机中的并发执行相关的概念。与
2、计算机中的并发执行相关的概念。o通过操作系统的调度,多个进程和线程可以通过操作系统的调度,多个进程和线程可以同时、独立的执行。同时、独立的执行。面向对象的程序设计对外经济贸易大学 雷擎o线程与进程的区别线程与进程的区别:n多个进程的内部数据和状态都是完全独立的多个进程的内部数据和状态都是完全独立的,而而多线程是共享一块内存空间和一组系统资源多线程是共享一块内存空间和一组系统资源,有有可能互相影响可能互相影响.n线程本身的数据通常只有寄存器数据,以及一线程本身的数据通常只有寄存器数据,以及一个程序执行时使用的堆栈,所以线程的切换比个程序执行时使用的堆栈,所以线程的切换比进程切换的负担要小。进程切
3、换的负担要小。o多线程是多线程是Java的内嵌特性,的内嵌特性,Java虚拟机虚拟机允许应用程序并发地运行多个执行线程。允许应用程序并发地运行多个执行线程。线程与进程的区别线程与进程的区别面向对象的程序设计对外经济贸易大学 雷擎7.1.2Thread类和类和Runnable接接oJava中实现多线程有两种途径:继承中实现多线程有两种途径:继承Thread类或者实现类或者实现Runnable接口。接口。Thread类实现类实现Runnable接口。接口。面向对象的程序设计对外经济贸易大学 雷擎创建线程的方式创建线程的方式1.继承类继承类Threadpublicclassmythreadexten
4、dsThread2.实现实现Runnable接口接口publicclassmythreadextendsSuperClassimplementsRunnable上述两种方法中都可用类上述两种方法中都可用类Thread产生线程的对象产生线程的对象Threadnewthread;面向对象的程序设计对外经济贸易大学 雷擎定义一个定义一个Thread类的子类类的子类o步骤:步骤:n1.定义定义一个一个Thread类的子类,类的子类,并并overriderun()方法,在这个方法里是你希望这个线程运行方法,在这个方法里是你希望这个线程运行的代码的代码n2.创建一个这个新类的对象创建一个这个新类的对象n3
5、.调用调用Thread对象的对象的start()方法来启动线方法来启动线程程面向对象的程序设计对外经济贸易大学 雷擎实现实现Runnable接口接口o步骤:步骤:n1.定义一个类,实现定义一个类,实现Runnalbe接口,并接口,并overriderun()方法,在这个方法里是你希方法,在这个方法里是你希望这个线程运行的代码望这个线程运行的代码n2.创建一个这个新类的对象创建一个这个新类的对象n3.创建一个创建一个Thread类的对象,用刚才的类的对象,用刚才的Runnable对象作为构造函数参数对象作为构造函数参数n4.调用调用Thread对象的对象的start()方法来启动线方法来启动线程
6、程面向对象的程序设计对外经济贸易大学 雷擎7.1.3在程序中实现多线程在程序中实现多线程o一个龟兔赛跑的例子,使用线程模拟了龟兔一个龟兔赛跑的例子,使用线程模拟了龟兔在在1000米赛跑过程。米赛跑过程。面向对象的程序设计对外经济贸易大学 雷擎1.定义一个定义一个Thread类的子类类的子类classRunnerextendsThreadStringname;doubledistance;Randomrand=newRandom();publicRunner(Stringname)this.name=name;面向对象的程序设计对外经济贸易大学 雷擎publicvoidrun()distance
7、=0.0;for(inti=0;i10;i+)distance+=100.0;intsleepTime=rand.nextInt(2000);System.out.println(name+跑了跑了+distance+米米t休息休息+sleepTime+毫秒毫秒);tryThread.sleep(sleepTime);catch(InterruptedExceptioninte)System.out.println(name+跑到了终点跑到了终点);面向对象的程序设计对外经济贸易大学 雷擎使用定义好的使用定义好的Runner线程线程importjava.util.Random;publiccl
8、assDemoThreadSimplepublicstaticvoidmain(Stringargs)/创建并命名每个线程创建并命名每个线程Runnerrabbit=newRunner(rabbit);Runnertortoise=newRunner(“tortoise”);rabbit.setPriority(Thread.NORM_PRIORITY);tortoise.setPriority(Thread.NORM_PRIORITY+5);rabbit.start();/启动线程启动线程1tortoise.start();/启动线程启动线程1面向对象的程序设计对外经济贸易大学 雷擎2.实现
9、实现Runnable接口接口classJumpBeanimplementsRunnableprivateintsleepTime;publicJumpBean()/构造方法构造方法sleepTime=(int)(Math.random()*6000);/获得随机休息毫秒数获得随机休息毫秒数面向对象的程序设计对外经济贸易大学 雷擎数组元素初始化的例子数组元素初始化的例子intaI;aI=newint10;StringaS;aS=newString3;CircleaC;aC=newCircle5;intk=0;for(k=0;k10;k+)aIk=k*k;aS0=aaa;aS1=newString
10、(bbb);aS3=newString(ccc);for(k=0;k5;k+)aCk=newCircle();面向对象的程序设计对外经济贸易大学 雷擎publicvoidrun()trySystem.out.println(Thread.currentThread().getName()+goingtosleepfor+sleepTime);/区别区别:因为不是继承因为不是继承Thread类,因而必须先调用类,因而必须先调用currentThread方法方法Thread.sleep(sleepTime);/线程休眠线程休眠catch(InterruptedExceptionexception)
11、System.out.println(Thread.currentThread().getName()+finished);/运行结束,给出提示信息运行结束,给出提示信息面向对象的程序设计对外经济贸易大学 雷擎构造并发执行的线程构造并发执行的线程publicclassDemoRunnableSimplepublicstaticvoidmain(Stringargs)/创建创建3个实现个实现Runnable接口类的对象接口类的对象JumpBeanthread1=newJumpBean();JumpBeanthread2=newJumpBean();JumpBeanthread3=newJumpB
12、ean();System.out.println(Startingthreads);/分别以三个对象为参数创建三个新线程,第二个参数为新线程命名并启动之分别以三个对象为参数创建三个新线程,第二个参数为新线程命名并启动之newThread(thread1,jumpbeanOne).start();newThread(thread2,jumpbeanTwo).start();newThread(thread3,jumpbeanThree).start();System.out.println(Threadsstarted,mainendsn);面向对象的程序设计对外经济贸易大学 雷擎publicc
13、lassMyArraypublicstaticvoidmain(Stringargs)intmyArray;/声明数组声明数组myArray=newint10;/创建数组创建数组System.out.println(IndexttValue);for(inti=0;imyArray.length;i+)System.out.println(i+tt+myArrayi);/证明数组元素默认初始化为证明数组元素默认初始化为0/myArray10=100;/将产生数组越界异常将产生数组越界异常数组引用例子数组引用例子面向对象的程序设计对外经济贸易大学 雷擎3.线程的优先权线程的优先权oJava的线程
14、调度的优先级为的线程调度的优先级为1-10的整数,的整数,优先级随数的大小增减。优先级随数的大小增减。Thread类设置了类设置了特定的级别:特定的级别:nMIN-PRIORITYnNOM_PRIORITYnMAX-PRIORITYo某一时刻只有一个线程在执行某一时刻只有一个线程在执行,调度策略为调度策略为固定优先级调度固定优先级调度.nnewthread.setPriority(Thread.MIN_PRIORITY)面向对象的程序设计对外经济贸易大学 雷擎7.2线程的生命周期线程的生命周期o线程的生命周期是线程从产生到终止的全过线程的生命周期是线程从产生到终止的全过程,一个线程在任何时刻都
15、处于某种线程状程,一个线程在任何时刻都处于某种线程状态。态。o一个线程的生命周期由线程类、新线程一个线程的生命周期由线程类、新线程(NewThread)、就绪状态()、就绪状态(Ready)、)、运行状态(运行状态(Running)、阻塞状态)、阻塞状态(Blocked)、等待状态()、等待状态(Waiting)和)和定时等待状态(定时等待状态(TimedWaiting)和终止)和终止状态(状态(Terminated)。)。面向对象的程序设计对外经济贸易大学 雷擎面向对象的程序设计对外经济贸易大学 雷擎7.3生产者与消费者问题生产者与消费者问题o生产者与消费者问题是从操作系统中的许多生产者与消
16、费者问题是从操作系统中的许多实际同步问题中抽象出来的具有代表性的问实际同步问题中抽象出来的具有代表性的问题,反映了操作系统中典型的同步例子。题,反映了操作系统中典型的同步例子。o生产者生产消息,放入消息缓冲区;消费者生产者生产消息,放入消息缓冲区;消费者从消息缓冲区中获取消息,使用消息。从消息缓冲区中获取消息,使用消息。面向对象的程序设计对外经济贸易大学 雷擎同步关系同步关系o生产者线程与消费者线程之间存在的同步关生产者线程与消费者线程之间存在的同步关系如下:系如下:n同一时刻只能有一个生产者或者一个消费者访同一时刻只能有一个生产者或者一个消费者访问消息缓冲区。问消息缓冲区。n当消息缓冲区为空
17、时,消费者等待生产者生产当消息缓冲区为空时,消费者等待生产者生产消息;当消息缓冲区满时,生产者等待消费者消息;当消息缓冲区满时,生产者等待消费者消费消息。消费消息。面向对象的程序设计对外经济贸易大学 雷擎关键问题关键问题o生产者与消费者问题实现中的关键问题有:生产者与消费者问题实现中的关键问题有:n缓冲区采用数组实现的循环队列:缓冲区空的缓冲区采用数组实现的循环队列:缓冲区空的条件为条件为rear=front,缓冲区为满的条件为,缓冲区为满的条件为(rear+1)%size=front;n随机数对象随机数对象Randomrand=newRandom()用于产生线程等待的随机毫秒数;用于产生线程
18、等待的随机毫秒数;n线程的退出:处于运行状态的线程通过置线程的退出:处于运行状态的线程通过置toStop标志为标志为true使线程从使线程从run()方法返回;方法返回;处于等待状态的线程由于无法自己醒过来,需处于等待状态的线程由于无法自己醒过来,需要置要置toStop标志为标志为true,主程序唤醒它们之,主程序唤醒它们之后才能检测到后才能检测到toStop标志。标志。面向对象的程序设计对外经济贸易大学 雷擎面向对象的程序设计对外经济贸易大学 雷擎小结小结7.1多线程基础多线程基础7.2线程的生命周期线程的生命周期7.3生产者与消费者问题生产者与消费者问题面向对象的程序设计对外经济贸易大学
19、雷擎知识点提示:知识点提示:o理解理解n线程的概念线程的概念n线程和进程的区别线程和进程的区别nJava多线程实现的机制多线程实现的机制n消费者和生产者的原理消费者和生产者的原理o掌握掌握n利用利用Thread和和Runnable实现多线程程序实现多线程程序面向对象的程序设计对外经济贸易大学 雷擎实验:多线程实验:多线程o实验实验11:多线程:多线程面向对象的程序设计EndofChapter7面向对象的程序设计第第1章章Java概述概述面向对象的程序设计对外经济贸易大学 雷擎content1.1Java语言的发展和特点语言的发展和特点1.2Java虚拟机及虚拟机及java的跨平台原理的跨平台原
20、理1.3Java开发环境开发环境1.4第一个应用程序第一个应用程序1.5Java开发工具介绍开发工具介绍面向对象的程序设计对外经济贸易大学 雷擎1.1Java语言的发展语言的发展o计算机语言的发展历史计算机语言的发展历史oJava语言的发展语言的发展oJava语言的特点语言的特点面向对象的程序设计对外经济贸易大学 雷擎计算机语言的发展历史计算机语言的发展历史语言语言o什么是语言什么是语言?n语言是人与人交流的工具语言是人与人交流的工具(媒介媒介)o什么是计算机语言什么是计算机语言?n人与计算机交流的工具人与计算机交流的工具n程序员之间交流的工具程序员之间交流的工具面向对象的程序设计对外经济贸易
21、大学 雷擎计算机语言分类计算机语言分类o机器语言机器语言130004277414005934191200274027o汇编语言汇编语言LOADbADDaSTOREco高级程序设计语言高级程序设计语言c=a+bn编译编译n解释解释机器的表示方式、机器的处理流程人的表示方式、机器的处理流程人的表示方式、人的处理流程面向对象的程序设计对外经济贸易大学 雷擎高级语言发展历史高级语言发展历史o第一阶段:以第一阶段:以FORTRAN,COBOL等为代等为代表,主要用于工程或商业计算;表,主要用于工程或商业计算;(50s)o第二阶段:以第二阶段:以Pascal,C,Ada等为代表,等为代表,支持结构化程序设
22、计的思想;支持结构化程序设计的思想;(60s-70s)o第三阶段:以第三阶段:以Smalltalk,C+,Java等等为代表,支持为代表,支持面向对象的程序设计思想面向对象的程序设计思想;(80s-)面向对象的程序设计对外经济贸易大学 雷擎java的产生的产生面向对象的程序设计对外经济贸易大学 雷擎Java的产生的产生oBirthday:May23,1995o1991:Set-Topbox:JamesGoslingo1994:OAKandFirstPersono1995:javaandHotJavaInternetplay面向对象的程序设计对外经济贸易大学 雷擎Java发展回顾发展回顾o199
23、5年年5月月23日日Sun正式发布正式发布Java和和HotJava浏览器。浏览器。o1995年年9月月Sun宣布将提供宣布将提供Java开发工具。开发工具。o1995年年Netscape、Oracle公司、公司、Borland公司、公司、SGI公司、公司、Adobe公司、公司、IBM公司、公司、AT&T公司、公司、Intel公司获得公司获得Java许可证。许可证。o1995年年12月月Sun和和Netscape发布发布JavaScript,Sun、Netscape和和SGI宣布缔结软件联盟,以开发宣布缔结软件联盟,以开发Java和和Internet三三维和多媒体交互性工具。维和多媒体交互性工
24、具。o1996年年1月月Sun宣布成立新的业务部门宣布成立新的业务部门JavaSoft部,推出部,推出Java开发工具包开发工具包JDK(JavaDevelopmentKit)1.0o1996年年2月月Sun发布发布Java芯片系列,包括芯片系列,包括picoJava,microJava和和UltraJava。Sun推出推出Java数据库联接数据库联接JDBC数据库数据库API。o1997年年3月月Sun推出推出JDK1.1.1。3月月17日日Sun向国际标准化组织向国际标准化组织的第一联合技术委员会的第一联合技术委员会(JTC-1)申请成为申请成为Java的公开有效规范的公开有效规范(PAS
25、)的提案者。的提案者。面向对象的程序设计对外经济贸易大学 雷擎Java语言的特点语言的特点o简单简单o面向对象面向对象o分布式分布式o执行解释与平台无关执行解释与平台无关o可靠性与安全性可靠性与安全性o可移植性可移植性o结构中立性结构中立性o支持多线程支持多线程o动态性动态性面向对象的程序设计对外经济贸易大学 雷擎Java类库类库o组成组成Java程序的最小单位是类,类封装了程序的最小单位是类,类封装了数据与处理数据的方法。数据与处理数据的方法。o对于大多数常用的功能,有大量已经编译好、对于大多数常用的功能,有大量已经编译好、经过测试的类,这些类的集合就是经过测试的类,这些类的集合就是Java
26、类类库。库。oJava类库主要是随编译器一起提供,也有类库主要是随编译器一起提供,也有些类库是由独立软件开发商提供的。些类库是由独立软件开发商提供的。面向对象的程序设计对外经济贸易大学 雷擎1.2Java虚拟机及跨平台原理虚拟机及跨平台原理oJava虚拟机虚拟机oJava的跨平台原理的跨平台原理面向对象的程序设计对外经济贸易大学 雷擎JVM虚拟机虚拟机Windows下c语言编程过程C源程序(扩展名为.c)Windows可执行文件(扩展名.exe)Windows操作系统C编译程序执行java语言编程过程java源程序(扩展名为.java)Java字节码文件(扩展名.class)java编译程序W
27、indows下的java字节码解释程序linux下的java字节码解释程序能直接解释java字节码的cpuJVM虚拟机执行Windows操作系统执行Linux操作系统执行面向对象的程序设计对外经济贸易大学 雷擎Java程序编译执行的过程程序编译执行的过程面向对象的程序设计对外经济贸易大学 雷擎一次编写,各处运行一次编写,各处运行面向对象的程序设计对外经济贸易大学 雷擎1.3Java开发环境开发环境oJDK的安装与介绍的安装与介绍opath和和classpath的设置的设置面向对象的程序设计对外经济贸易大学 雷擎正确认识正确认识javaoJava是一种计算机高级编程语言是一种计算机高级编程语言o
28、Java技术内涵技术内涵n编程语言编程语言n开发平台开发平台n运行环境运行环境面向对象的程序设计对外经济贸易大学 雷擎Java开发平台开发平台Java2 SDK(Software Development Kit)nStandardEdition(J2SE)nEnterpriseEdition(J2EE)nMobileEdition(J2ME)面向对象的程序设计对外经济贸易大学 雷擎Java的基本环境的基本环境o开发环境开发环境nJDK,包括各种编译、类库管理等工具,以及,包括各种编译、类库管理等工具,以及帮助文档帮助文档o运行环境运行环境nJRE,主要是,主要是Java虚拟机,虚拟机,Java
29、的基本的基本API类库等类库等面向对象的程序设计对外经济贸易大学 雷擎Java的开发环境搭建的开发环境搭建o什么是什么是JDK(JavaDevelopmentKit)?)?n开发工具,开发工具,javac及基础核心类及基础核心类n运行环境,运行环境,java及基础核心类及基础核心类o下载网址:下载网址:http:/oJDK的版本的版本1.6oJDK的安装及目录结构的安装及目录结构o开发环境的设置开发环境的设置面向对象的程序设计对外经济贸易大学 雷擎JDK的的bin目录中的命令目录中的命令oJavac:Java编译器,用来将编译器,用来将java程序编译成程序编译成Bytecode。oJava:
30、Java解释器,执行已经转换成解释器,执行已经转换成Bytecode的的java应用程序。应用程序。oJdb:Java调试器,调试器,用来调试用来调试java程序。程序。oJavap:反编译,将类文件还原回方法和变量。:反编译,将类文件还原回方法和变量。oJavadoc:文档生成器:文档生成器,创建创建HTML文件。文件。oAppletviewer:Applet解释器解释器,用来解释已经用来解释已经转换成转换成Bytecode的的java小应用程序。小应用程序。面向对象的程序设计对外经济贸易大学 雷擎安装安装JDK后产生的目录后产生的目录obin目录:目录:Java开发工具,包括开发工具,包括
31、Java编译编译器、解释器等器、解释器等odemo目录:一些实例程序目录:一些实例程序olib目录:目录:Java开发类库开发类库ojre目录:目录:Java运行环境,包括运行环境,包括Java虚虚拟机、运行类库等拟机、运行类库等o面向对象的程序设计对外经济贸易大学 雷擎环境变量介绍环境变量介绍o什么是环境变量?什么是环境变量?o察看环境变量的两种方式察看环境变量的两种方式o设置系统环境变量设置系统环境变量oPath环境变量的作用环境变量的作用o%path%的意义的意义o如何解决使用如何解决使用java命令中的问题?命令中的问题?面向对象的程序设计对外经济贸易大学 雷擎1.4第一个应用程序第一
32、个应用程序o创建创建Java源文件源文件o编译编译Java源文件源文件o执行执行Java程序程序oJava的基本程序结构的基本程序结构面向对象的程序设计对外经济贸易大学 雷擎例程例程HelloWorld.java/*The HelloWorld class implements an*application that simply prints Hello World!*to standard output.*/publicclassHelloWorldpublicstaticvoidmain(Stringargs)System.out.println(“HelloWorld!”);面向对象的
33、程序设计对外经济贸易大学 雷擎编译和执行编译和执行o1.编译源文件编译源文件:nJavacHelloWorld.javao2.编译结果编译结果nJava二进制可执行程序,二进制可执行程序,*.classo3.由解释器对字节码解释执行由解释器对字节码解释执行n执行包含执行包含main方法的方法的java类类ojavaHelloWorld面向对象的程序设计对外经济贸易大学 雷擎解读解读HelloWorld!程序!程序o“HelloWorld!”应用程序三个组成部分:应用程序三个组成部分:n源代码注释源代码注释nHelloWorld类定义类定义nmain主方法主方法面向对象的程序设计对外经济贸易大学
34、 雷擎源代码注释源代码注释o/*text*/n多行注释,多行注释,javadoc识别,可生成解释文件识别,可生成解释文件o/*text*/n多行注释多行注释o/textn单行注释单行注释/*The HelloWorld class*implements an application that *simply prints Hello World!*to standard output.*/面向对象的程序设计对外经济贸易大学 雷擎HelloWorldApp类定义类定义oclassn类定义关键字,有类定义关键字,有public修饰称为修饰称为“主类主类”n每个每个java文件至少有一个类定义文件至
35、少有一个类定义opublicn类的访问权限类的访问权限oHelloWorldAppn类名称类名称n文件名称必须与其一致,文件名称必须与其一致,HelloWorldApp.javapublic class HelloWorld面向对象的程序设计对外经济贸易大学 雷擎main主方法主方法o是程序执行的入口是程序执行的入口o相当于相当于C/C+的的main主函数主函数public class HelloWorldpublic static void main(String args)System.out.println(“Hello World!”);面向对象的程序设计对外经济贸易大学 雷擎Java
36、程序的基本结构程序的基本结构oJava中的中的所有可执行程序代码所有可执行程序代码都必须存都必须存在于在于类类中中面向对象的程序设计对外经济贸易大学 雷擎Java程序的基本结构程序的基本结构importjava包包;publicclass类名类名publicstaticvoidmain(Stringargs)程序语句程序语句相当于C语言中的include相当于C语言中的main主类应包含这个入口方法文件名要与主类名完全相同面向对象的程序设计对外经济贸易大学 雷擎Java程序的基本结构程序的基本结构import语句语句;包引用(可选)包引用(可选)publicclass类名类名主类定义(可选)主
37、类定义(可选)publicstaticvoidmain(Stringargs)面向对象的程序设计对外经济贸易大学 雷擎例程例程HelloWorld.javaimportjava.lang.*;publicclassHelloWorldpublicstaticvoidmain(Stringargs)System.out.println(“HelloWorld!”);面向对象的程序设计对外经济贸易大学 雷擎Java程序的基本结构程序的基本结构o基本概念基本概念n源文件名同包含源文件名同包含main方法的主类名必须相同方法的主类名必须相同n源文件扩展名必须是源文件扩展名必须是.javan文件名大小写
38、敏感文件名大小写敏感Java源程序,源程序,*.javanJava程序包,程序包,*.jar(目录结构目录结构)面向对象的程序设计对外经济贸易大学 雷擎HelloWorld例程例程oJava程序的分类:程序的分类:nApplication程序程序o类似于类似于C或其他高级编程语言编写的程序或其他高级编程语言编写的程序o需要显式使用需要显式使用java引擎启动引擎启动nApplet程序,小程序程序,小程序o嵌入嵌入Web网页的小程序网页的小程序o通过浏览器激活通过浏览器激活面向对象的程序设计对外经济贸易大学 雷擎HelloWorld例程例程HelloWorldApplet.javaimportj
39、ava.awt.*;importjava.applet.*;publicclassHelloWorldAppletextendsAppletpublicvoidpaint(Graphicsg)g.drawString(HelloWorld!,20,20);面向对象的程序设计对外经济贸易大学 雷擎HelloWorld例程例程Applet嵌入网页嵌入网页面向对象的程序设计对外经济贸易大学 雷擎1.5Java开发工具介绍开发工具介绍oEclipseoJBuilderonetBeansoJcreator面向对象的程序设计对外经济贸易大学 雷擎实验实验1:体验:体验Java编程的过程编程的过程oJava
40、的源程序文件的源程序文件.javao用用javac编译源程序编译源程序o用用java解释执行编译后的解释执行编译后的.class文件文件面向对象的程序设计对外经济贸易大学 雷擎知识点提示:知识点提示:oJava语言的发展和特点(了解)语言的发展和特点(了解)oJava虚拟机及虚拟机及Java的跨平台原理(理解)的跨平台原理(理解)oJava开发环境的搭建(掌握)开发环境的搭建(掌握)oHelloWorld!的编写编译执行的编写编译执行(掌握)(掌握)oJava程序的基本结构(了解)程序的基本结构(了解)面向对象的程序设计Endofchapter1面向对象的程序设计第第2章章Java语言基础语言
41、基础面向对象的程序设计对外经济贸易大学 雷擎content2.1数据类型数据类型2.2运算符运算符2.3程序流程控制程序流程控制2.4注释注释实验:基本数据类型和语法实验:基本数据类型和语法面向对象的程序设计对外经济贸易大学 雷擎2.1数据类型数据类型o2.1.1基本数据类型基本数据类型o2.1.2包装类包装类o2.1.3数据类型转换数据类型转换o2.1.4变量变量o2.1.5常量常量面向对象的程序设计对外经济贸易大学 雷擎2.1.1基本数据类型基本数据类型o基本数据类型基本数据类型n整数类型:整数类型:byte,short,int,longn实数类型:实数类型:float,doublen字符
42、类型:字符类型:charn布尔类型:布尔类型:booleano复合数据类型复合数据类型n数组数组n类类(class)n接口接口(interface)面向对象的程序设计对外经济贸易大学 雷擎2.1.1基本数据类型基本数据类型o整型整型nbyte:8bits默认值默认值0nshort:16bits默认值默认值0nint:32bits默认值默认值0nlong:64bits默认值默认值0o浮点数浮点数nfloat:32bits默认值默认值0.0Fndouble:64bits默认值默认值0.0D(0.0)面向对象的程序设计对外经济贸易大学 雷擎整型数据类型整型数据类型obyte,short,int,lo
43、ngn数的范围依次增大数的范围依次增大8-16-32-64bitsn默认变量初始值为默认变量初始值为0n整型常量的形式(默认整型常量的形式(默认int类型)类型)o十进制,如十进制,如123,-2,0o八进制,以八进制,以0开头,如开头,如0124o十六进制,以十六进制,以0 x或或0X开头,如开头,如0 x125,0X126olong类型常量,在数字后加类型常量,在数字后加L或或l,如,如127L,128l面向对象的程序设计对外经济贸易大学 雷擎实数数据类型实数数据类型ofloat,doublen描述精度依次增加描述精度依次增加32-64bitsn默认的变量初始值:默认的变量初始值:0.0n
44、实型常量的形式(默认实型常量的形式(默认double类型)类型)o十进制,由数字和十进制,由数字和小数点小数点构成,如构成,如0.126o科学计数法,如科学计数法,如123e3,123E3ofloat类型常量,在数字后加类型常量,在数字后加F或或f,如,如0.12F,2.13f面向对象的程序设计对外经济贸易大学 雷擎2.1.1基本数据类型基本数据类型o字符型字符型nchar:16bits默认值默认值u0000n采用采用16位位Unicode字符字符o布尔型布尔型nboolean:8bits默认值默认值falsen不能与整型进行混合计算不能与整型进行混合计算面向对象的程序设计对外经济贸易大学 雷
45、擎2.1.1基本数据类型基本数据类型o与与C,C+相比,相比,Javan不支持指针类型不支持指针类型n不支持结构体类型、联合体类型和枚举类型不支持结构体类型、联合体类型和枚举类型n没有没有sizeof操作符操作符面向对象的程序设计对外经济贸易大学 雷擎2.1.2包装类包装类oJava提供了与基本数据类型相对应的包装提供了与基本数据类型相对应的包装类(类(Wrapperclass),具有很直观的方),具有很直观的方法。法。n例如:都有例如:都有doubleValue()方法方法o包装类包装类nByte、Short、Boolean、Character、Integer、Double、Float、Lo
46、ng面向对象的程序设计对外经济贸易大学 雷擎2.1.3数据类型转换数据类型转换o基本数据类型之间可以相互转换,两种转换基本数据类型之间可以相互转换,两种转换方式:自动转换、强制转换方式:自动转换、强制转换o自动转换自动转换n目标数据类型和源类型数据是兼容的目标数据类型和源类型数据是兼容的n目标数据类型的范围比源类型的大目标数据类型的范围比源类型的大n优先关系:优先关系:byteshortcharintlongfloatdouble面向对象的程序设计对外经济贸易大学 雷擎2.1.3数据类型转换数据类型转换o自动转换举例:自动转换举例:byteb;shorts=b;inti=b;longl=b;C
47、harc=c;i=c;System.out.println(“output”+i);面向对象的程序设计对外经济贸易大学 雷擎2.1.3数据类型转换数据类型转换o强制转换强制转换n大范围的类型转换为小范围的类型大范围的类型转换为小范围的类型n特殊转换特殊转换n简单类型变量和包装类之间相互转换简单类型变量和包装类之间相互转换面向对象的程序设计对外经济贸易大学 雷擎2.1.3数据类型转换数据类型转换o强制转换方法强制转换方法1(target-type)value例:例:inti;byteb=(byte)i;shorts=99;charc=(char)s;System.out.println(“out
48、put:”+c);面向对象的程序设计对外经济贸易大学 雷擎2.1.3数据类型转换数据类型转换o强制转换方法强制转换方法2利用包装类构造方法创建新变量,如利用包装类构造方法创建新变量,如:Boolean(Strings);Integer(Strings);Float(Strings);Double(Strings);例:例:Double(“123”)把字符串把字符串”123”转换为数转换为数值值123.0面向对象的程序设计对外经济贸易大学 雷擎2.1.3数据类型转换数据类型转换o强制转换方法强制转换方法3利用包装类创建新变量,利用利用包装类创建新变量,利用xxValue()转换。转换。其中其中x
49、x代表不同的基本数据类型。代表不同的基本数据类型。例:把例:把float型转换为型转换为double型型floatf=100.00f;FloatfW=newFloat(f);doubled=fW.doubleValue();inti=fW.intValue();面向对象的程序设计对外经济贸易大学 雷擎2.1.4变量变量o变量语法变量语法Typeidentifier=value,identifier=value;o变量声明规则变量声明规则n变量名必须是一个有效标识符。变量名必须是一个有效标识符。n每个变量都有类型,例如每个变量都有类型,例如int类型或类型或Object类型类型,变量还有作用域。
50、变量还有作用域。n同一个有效范围内,声明的变量不能重名。同一个有效范围内,声明的变量不能重名。面向对象的程序设计对外经济贸易大学 雷擎2.1.4变量变量oJava标识符标识符(identifiers)规定规定n以大小写英文字母、数字、下划线以大小写英文字母、数字、下划线“_”和美元和美元符号符号“$”开始的一个字符序列。开始的一个字符序列。n除开始的第一个字符外,后面可跟字母、下划除开始的第一个字符外,后面可跟字母、下划线、美圆符和数字。线、美圆符和数字。n标识符区分大小写标识符区分大小写n没有长度限制没有长度限制n不能与保留字不能与保留字(reservedword)或关键字或关键字(keyw