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