1、Java语言程序设计,教师:段鹏飞,课程简介,课程名称:Java语言程序设计学时:32/16次 (1-16周)+8学时实验考核方式:闭卷考试成绩:平时成绩30%+考试成绩70%教师:段鹏飞联系方式:Tel 15972100809 Email 课程网站:http:/ 基础知识Java基本结构面向对象基本理论类和对象初始化和访问控制继承与多态第二部分 技术专题异常IO线程与多线程GUI,课程安排,参考教材,翁恺 编著. Java语言程序设计教程(第二版).浙江大学出版社,2013年1月第2版英 巴恩斯(Barnes D.J) 著;翁恺 译. 实用Java教程:基于BlueJ的对象优先方法(第3版)
2、.人民邮电出版社,2009年1月(美)梁勇 著,李娜 译. Java语言程序设计:基础篇(原书第8版). 机械工业出版社, 2011.,教学方法,课堂教学推荐教材、讲义、参考书作业、上机实验网络资源、论坛学习小组亲自动手练习!,7,8,学习目标,Java的主要语法结构使用Java进行面向对象程序设计的基本原则和方法具备对小型软件系统的质量进行评估的能力能够用Java独立完成一个小型的软件系统,Java语言概述,什么是Java?Java的发展Java程序介绍Java程序运行环境,什么是Java?,编程语言(Programming Language)运行平台(Platform),名字起源,Java
3、是印度尼西亚爪哇岛的英文名称,因盛产咖啡而闻名。Java语言中的许多库类名称,多与咖啡有关,如JavaBeans(咖啡豆)、NetBeans(网络豆)以及ObjectBeans (对象豆)等等。SUN和JAVA的标识也正是一杯正冒着热气的咖啡。,印度橡树,1991.4 Sun开发新的语言,James Gosling取名时看到窗口橡树,即命名为Oak。后改名为Java。,名字起源,Java语言概述,什么是Java?Java的发展Java的特点Java程序运行环境,Java的历史,诞生 Java之父 - James Gosling 嵌入式设备发展 2009年4月,Oracle以74亿美元收购Sun
4、公司JDK1.5更名Java Platform 5.0最新版本2014年3月19日, Oracle发布Java 8.0的正式版2014年11月甲骨文公司发布了Java 9.0的新特性,15,Java的发展,Java运行平台(Platform),Java平台的发展Java Development Kit1.0.21.1.1 1.1.6 1.1.7 1.1.81.2.1Java 2 SDK1.2.21.3.0 1.3.11.4.0 1.4.1 1.4.2. 1.8.0Java平台的三个版本(1999.6): J2SE/J2EE/J2MEhttp:/ Standard EditionJ2EE: En
5、terprise EditionJ2ME: Mirco Edition,20,Java运行平台(Platform),J2SE Platform (Java 2 Standard Edition)Java Runtime Environment (JRE) Java虚拟机、库函数、运行Java应用程序和Applet所必须文件Java 2 SDK (Development Kit)JRE的超集,包含编译器和调试器等用于程序开发的文件Java虚拟机、Java应用编程接口和系统平台的关系,Java平台体系,Java 2 Plantform Enterprise Edition(J2EE):用于开发企业
6、服务器端应用程序。Java 2 Plantform Standard Edition(J2SE):用于开发一般台式计算机应用程序。Java 2 Plantform Micro Edition(J2ME):用于开发嵌入式、信息家电产品应用程序。,Java语言概述,什么是Java?Java的发展Java的特点Java程序运行环境,编程语言排名,编程语言排名,C vs C+,程序设计语言分类,汇编语言运行效率高编程难度大编译型语言编译形成目标代码连接器进行连接形成可执行文件:exe文件存放的是x86机器语言指令解释性语言运行效率低跨平台优势脚本语言bat批处理文件JavaScript扮演越来越重要的
7、角色,27,JavaScript、Python,编译运行的过程,28,Java语言的特点,跨平台Cross Platform/可移植PortableJava VM数据类型的统一Unicode是16位编码标准运行效率慢的原因快的原因趋势是追求开发效率而不是追求执行效率,29,Java语言的特点(续),稳定没有指针垃圾回收机制数组有下标检查简单与C+比较比较纯粹的OOP动态JVM初始化对象,不需要的就不加载,30,Java编程语言的特点,强类型编译和解释自动无用内存回收功能面向对象与平台无关安全性分布式计算多线程,Java编程语言的特点,无用内存自动回收机制,Java编程语言的特点,int max
8、SoFar=0,price=1; /最大值maxSoFar的初值为0 /price是输入的值while(price0) /循环输入price的值if (pricemaxSoFar) /输入的值price大于最大值maxSoFarmaxSoFar=price; /则maxSoFar的值为price的值String input=JoptionPane.showInputDialog(Enter the next price); /继续输入priceprice=Double.parseDouble(input); /把字符串input转换成整数priceSystem.out.println(“The
9、 maximum is ”+maxSoFar); /打印最大值maxSoFar,面向过程编程,Java编程语言的特点,Max max=new Max( ); /max是类Max的一个对象while(price0) max.updateMax(price); /对象max调用updateMax方法,更新最大值price=max.getPrice( ); /对象max调用getPrice获得下一个price的值System.out.println(The maximum is +max.getMax( ); /对象max调用getMax方法获得最大值,并打印出来,面向对象编程,Java编程语言的特
10、点,与平台无关Java编译器产生的字节码(bytecode)可运行在异种网络环境中(不同的硬件系统和不同的操作系统)Java程序在不同的平台中行为一致,不存在数据类型的不一致等现象,Java编程语言的特点,安全性取消了指针的不安全性,增强了程序的健壮性内存管理简单,“new”构造对象,对象释放(automatic garbage collection)可靠的语言: compile-time checking和run-time checking网络环境的应用不会产生恶意行为,为Java程序构造一个个(Sandbox,具有安全策略的限制),提高了安全性,为什么选择Java?,简单易学 (Get s
11、tarted quickly) 写较少的代码 (Write less code)写更好的代码 (Write better code): garbage collection (防止内存泄漏),面向对象、JavaBeans构件机制、其他API复用代码,减少bugs开发程序更快 (Develop programs more quickly) 避免平台依赖性 (Avoid platform dependencies with 100% Pure Java)编写一次,随处运行 (Write once, run anywhere) machine-independent bytecodes发布软件更容易
12、 (Distribute software more easily): 指对软件的更新,利用动态加载功能,一处改动,自动更新,不用重新编译整个程序,Java语言概述,什么是Java?Java的发展Java的特点Java程序运行环境,Java程序运行环境,获得 JDK 7 下载地址 安装 jdk-7u79-windows-i586.exe,Java环境变量设置,右击【我的电脑】-【属性】-【高级】-【环境变量】,如图:,Java环境变量设置,选择【新建系统变量】-弹出“新建系统变量”对话框,在“变量名”文本框输入“JAVA_HOME”,在“变量值”文本框输入JDK的安装路径,单击“确定”按钮,J
13、ava环境变量设置,在“系统变量”选项区域中查看PATH变量,如果不存在,则新建变量 PATH,否则选中该变量,单击“编辑”按钮,在“变量值”文本框的起始位置添加“%JAVA_HOME%bin;” ,单击确定按钮,Java环境变量设置,在“系统变量”选项区域中查看CLASSPATH 变量,如果不存在,则新建变量CLASSPATH,否则选中该变量,单击“编辑”按钮,在“变量值”文本框的起始位置添加“.;%JAVA_HOME%libdt.jar;%JAVA_HOME%libtools.jar;”,Java程序运行环境,检查Java运行环境设置C:javaUsage: java -options c
14、lass args. (to execute a class)or java -jar -options jarfile args. (to execute a jar file)C:javacUsage: javac C:java version,Java虚拟机,Java虚拟机是针对不同的软硬件平台做专门的实现。,第一个Java程序,HelloWorldmain方法pubic static修饰符,参数String args 最低要求记事本+javac+java 集成开发环境IDEEclipse,Netbeans,MyEclipse建立Java开发环境,47,JVM执行步骤,Step1:编辑源
15、代码Step2:JAVA编译器将其编译为class文件(JVM规范的字节码)Step3:JAVA解释器负责将class文件解释运行(解释器有两个功能:执行字节码、对底层硬件平台做适合调用)加载代码:由class loader完成校验代码:由bytecode verifier完成执行代码:由runtime interpreter完成,JJava程序开发过程,图1.5 Java程序的开发过程,Java程序结构,package语句 /0或1条,必须放在文件开始import语句 /0或多条,必须放在所有类定义之前public classDefinition /0或1个。文件名必须与该类的类名完全相同c
16、lassDefinition /类定义,个数不限interfaceDefinition /接口定义,个数不限,Java程序结构示例,package javawork.helloworld; /*把编译生成的所有.class文件放到包 javawork.helloworld中*/import java.awt.*; /告诉编译器本程序中用到系统的AWT包import javawork.newcentury; /*告诉编译器本程序中用到用户自定义的包javawork.newcentury*/public class HelloWorldApp. /*公共类HelloWorldApp的定义, 名字与
17、文件名相同*/class TheFirstClass. /第一个普通类TheFirstClass的定义class TheSecondClass. /第二个普通类TheSecondClass的定义. /其它普通类的定义interface TheFirstInterface. /第一个接口TheFirstInterface的定义. /其它接口定义,Java编程规范,包名全小写,一般为名词,如:java.awt.event;类名首字母大写,每个单词的首字母大写,如:class HelloWorldApp;接口名同类名,如:interface Collection;方法名一般为动词,小写字母开头,每个
18、单词的首字母都要大写,如:balanceAccount,isButtonPressed;变量名全小写,一般为名词,如:length;常量名基本类型的常量名为全大写,如:int YEAR, int WEEK_OF_MONTH;对象常量大小写混合。,简单的Java应用程序,Java源程序文件扩展名为“.java”Java字节码程序文件扩展名为“.class”/* Exam1_1 class实现一个应用* 将特定的字符串显示到标准输出*/public class Property public static void main(String args) System.out.println(“Hel
19、lo World.); ,Java Application的编译,Java编译器命令:javac命令行中输入:javac Property.java源文件名为Property.java,注意:文件名必须与公共类名相同;由javac编译器编译源程序,产生字节码文件(.class文件)。本例中产生Property.class文件。,Java Application的执行,Java执行命令:java命令行中输入:java Property该命令将启动Java虚拟机,由Java解释器解释执行。,注意事项,源文件的命名规则如果.java文件包含一个public类,它必须按该类名命名。一个源文件中最多只能
20、有一个public类,其他类的个数不限。,Java注释,注解方式(Comments)/* */文档注解/* */ 程序内的任意位置/对本行注解/* * Exam1_1 class实现一个应用 * 将特定的字符串显示到标注输出 */ public class Exam1_1 public static void main(String args) System.out.println(“This is a Java Application Program.); ,Java注释,文档注释:当程序员编完程序以后,可以通过JDK提供的javadoc命令,生成所编程序的API文档,而该文档中的内容主要就
21、是从文档注释中提取的。该API文档以HTML文件的形式出现,与java帮助文档的风格与形式完全一致。凡是在“/*”和“*/”之间的内容都是文档注释。如:DocTest.java文件。,Java注释,/* 这是一个文档注释的例子,主要介绍下面这个类 */public class DocTest/* 变量注释,下面这个变量主要是充当整数计数 */public int i;/* 方法注释,下面这个方法的主要功能是计数 */public void count( ) ,文档注释的生成,在命令行输入:javadoc DocTest.java,生成了介绍类DocTest的index.html文件,学习要求:,多练习、多编写程序。“熟能生巧”,通过实践真正体验到程序设计中的乐趣和成功的喜悦,增强学习的信心。,谢谢,