java learning

40
1 http://www.dstang.com 唐大仕 北京大 Java程序设计 •••••••••••••••••••••••••••••••••••••• 欢迎学习Java程序设计 大仕老师

Upload: ycc

Post on 09-Dec-2015

227 views

Category:

Documents


3 download

DESCRIPTION

java learning

TRANSCRIPT

Page 1: java learning

1 http://www.dstang.com 唐大仕 北京大学

Java程序设计

••••••••••••••••••••••••••••••••••••••

欢迎学习Java程序设计

大仕老师

Page 2: java learning

2 http://www.dstang.com 唐大仕 北京大学

Java程序设计 第1章 � JAVA语言与面向对象的程序设计 � 

• 1.1 Java语言简介 � 

• 1.2 面向对象程序设计 � 

Page 3: java learning

3 http://www.dstang.com 唐大仕 北京大学

Java程序设计

••••••••••••••••••••••••••••••••••••••

Java语言简介

Page 4: java learning

认识Java

Page 5: java learning

5 http://www.dstang.com 唐大仕 北京大学

Java程序设计

••••••••••••••••••••••••••••••••••••••

Java历史与发展

Page 6: java learning

6 http://www.dstang.com 唐大仕 北京大学

Java程序设计

数据来源:IEEE Spectrum

Java是最热门的语言之一 � 

6

Page 7: java learning

7 http://www.dstang.com 唐大仕 北京大学

Java程序设计

0.1 �  � Java的发展历程 � 

•  Internet发展中的两次飞跃: p www p Java

•  Java的出现 � p 1990年 � SUN "Green"--开发家用电器软件 � p 1994年 � Oka语言 p 1995年, Java语言

•  SUN公布第一版编译器JDK1.0 •  Sun:Stanford University Network

Page 8: java learning

8 http://www.dstang.com 唐大仕 北京大学

Java程序设计

James Gosling � 

http://v.ku6.com/show/LHIGi57FCDngubSA.html

Page 9: java learning

9 http://www.dstang.com 唐大仕 北京大学

Java程序设计

官方网站 �  �  � java.sun.com � 

9

Page 10: java learning

10 http://www.dstang.com 唐大仕 北京大学

Java程序设计

Java三大平台 � 

•  Java分为三大平台

p Java SE 标准版(J2SE,Java 2 Platform Standard Edition)

p Java EE 企业版(J2EE,Java 2 Platform, Enterprise Edition)

p Java ME 微型版(J2ME,Java 2 Platform Micro Edition)

•  Java的开发工具包 �  � JDK (Java Development Kit) � 

10

Page 11: java learning

11 http://www.dstang.com 唐大仕 北京大学

Java程序设计

Java发展历程 � 

11

初创  JDK  1.0

1995

Java2  JDK  1.2

1998

改进  JDK  1.3

2000

稳定  JDK  1.4

2002

语法增加  JDK  1.5

2004

广泛  JDK  1.6

2006

改进  JDK  1.7

2011

前进大步  JDK  1.8

2014

Oracle并购Sun  

2010

Page 12: java learning

12 http://www.dstang.com 唐大仕 北京大学

Java程序设计

Java主要改进(可参见教材附录) � 

•  JDK1.4 p assert、logging、Java2D、NIO、正则表达式

•  Java 5 p 泛型、增强的foreach、自动装箱拆箱、枚举、可变长参数、静态引入、注记、printf、

StringBuilder

•  Java 6 p Compiler API(动态编译)、脚本语言支持、WebService支持

•  Java 7 p 常量等的写法、带资源的try、重抛异常

p http://docs.oracle.com/javase/7/docs/technotes/guides/language/enhancements.html

p http://www.oracle.com/technetwork/java/javase/jdk7-relnotes-418459.html � 

Page 13: java learning

13 http://www.dstang.com 唐大仕 北京大学

Java程序设计

Java的推动力:JCP与JSR � 

• http://jcp.org •  Welcome to jcp.org, home of the Java Community ProcessSM  (JCPSM) Program. The

JCP is the mechanism for developing standard technical specifications for Java technology. Anyone can register for the site and participate in reviewing and providing feedback for the

Java Specification Requests (JSRs), and anyone can sign up to become a JCP Member and then participate on the Expert Group of a JSR or even submit their own JSR Proposals.  � 

Page 14: java learning

14 http://www.dstang.com 唐大仕 北京大学

Java程序设计

JSR335 � 

•  JSR 335

p Lambda Expressions for the Java Programming Language

• 这是Java8最重要的新特性

Page 15: java learning

Java的特点

Java的特点、优势

及与其他语言的比较

Page 16: java learning

16 http://www.dstang.com 唐大仕 北京大学

Java程序设计

••••••••••••••••••••••••••••••••••••••

Java语言的特点

Page 17: java learning

17 http://www.dstang.com 唐大仕 北京大学

Java程序设计

What � Is � Java � 

•  Java首先是一种编程语言 � p 它是一种面向对象的编程语言(OOP) � 

p 它的语法结构与C和C++语言极为相似 � 

p Java所用的语法十分简单 � 

Page 18: java learning

18 http://www.dstang.com 唐大仕 北京大学

Java程序设计

JAVA的特点 � 

• 简单易学 � 

• 面向对象 � 

• 平台无关性 � 

• 安全稳定 � 

• 支持多线程 � 

Page 19: java learning

19 http://www.dstang.com 唐大仕 北京大学

Java程序设计

丰富的类库 � 

•  Java提供了大量的类以满足网络化、多线程、面向对象系统的需要 � p 语言包(package) p 实用程序包 � p I/O包 � p 网络包 � p 图形用户界面包 � p And More……

Page 20: java learning

20 http://www.dstang.com 唐大仕 北京大学

Java程序设计

What � Can � Java � Do � 

• 面向对象的应用开发 �  � • 各类网络应用程序的开发 � • 计算过程的可视化 � • 动态画面/交互操作 � 

•  Internet的系统管理 � 

• 数据库操作 � • And more ……

• 示例 � file:///D:/Program%20Files/Java/jdk1.6/demo/jfc/Java2D/Java2Demo.html

Page 21: java learning

21 http://www.dstang.com 唐大仕 北京大学

Java程序设计

Java是C++-- � • 无直接指针操作 � • 自动内存管理 � • 数据类型长度固定 � • 不用头文件 � • 不包含结构和联合 � • 不支持宏 • 不用多重继承 • 无类外全局变量 • 无GOTO

Page 22: java learning

Java 运行机制

Page 23: java learning

23 http://www.dstang.com 唐大仕 北京大学

Java程序设计

••••••••••••••••••••••••••••••••••••••

Java运行机制

Page 24: java learning

24 http://www.dstang.com 唐大仕 北京大学

Java程序设计

Java三种核心机制 � 

•  Java 虚拟机(Java Virtual Machine)

• 代码安全性检测(Code Security)

• 垃圾收集机制(Garbage collection)

Page 25: java learning

25 http://www.dstang.com 唐大仕 北京大学

Java程序设计

Java程序的编译与运行 � 

编译  javac

运行  java

源程序 字节码  

(bytecode)   平台无关

平台

Page 26: java learning

26 http://www.dstang.com 唐大仕 北京大学

Java程序设计

Java虚拟机(Java � Virtual � Machine) � 

• 在一台计算机上由软件或硬件模拟的计算机。

•  Java虚拟机(JVM)读取并处理经编译过的字节码class文件 � 。

p Java虚拟机规范定义了: � •  �  �  �  � 指令集 � •  �  �  �  � 寄存器集 � •  �  �  �  � 类文件结构 � •  �  �  �  � 堆栈 � •  �  �  �  � 垃圾收集堆 � •  �  �  �  � 内存区域 � 

Page 27: java learning

27 http://www.dstang.com 唐大仕 北京大学

Java程序设计

Java运行环境(JRE) � 

•  JRE (The Java Runtime Environment) � 

•  �  �  �  �  �  �  � JRE = JVM + API(Lib )

•  JRE运行程序时的三项主要功能: � p 加载代码:由class loader 完成; � 

p 校验代码:由bytecode verifier 完成; � p 执行代码:由 � runtime interpreter完成。

• 理解 p 为何Java是跨平台的

p 为何Java是安全的 � 

Page 28: java learning

28 http://www.dstang.com 唐大仕 北京大学

Java程序设计

Java自动垃圾回收技术 � 

• 垃圾回收(garbage collection)

• 在C/C++ 等语言中,由程序员负责回收无用内存 � 

•  Java语言自动垃圾回收

p 系统级线程跟踪存储空间的分配情况

p 在JVM的空闲时,检查并释放那些可被释放的存储器空间 � 

p 程序员无须也无法精确控制和干预该回收过程 �  �  � 

Page 29: java learning

29 http://www.dstang.com 唐大仕 北京大学

Java程序设计

JDK(Java开发工具包) � 

                                                   

                                                                                

JDK=JRE+Tools JRE=JVM+API

Page 30: java learning

30 http://www.dstang.com 唐大仕 北京大学

Java程序设计

JDK下载 � •  要开发Java程序,要下载JDK

p http://java.sun.com

p 可以只下载 � JavaSE, 也可以下与NetBeans绑定的版本

•  注意:如果只运行Java程序,则下载JRE p http://java.com

•  JDK提供的工具 �  �  � java编译器 � javac.exe

java执行器 � java.exe

�  � 文档生成器 � javadoc.exe

java打包器 � jar.exe

java调试器 � jdb.exe

Page 31: java learning

31 http://www.dstang.com 唐大仕 北京大学

Java程序设计

更多Java技术 � 

Page 32: java learning

32 http://www.dstang.com 唐大仕 北京大学

Java程序设计

1.2 � 面向对象程序设计 � 

• 介绍面向对象的软件开发和面向对象程序设计中的基本方法和基本概念.

Page 33: java learning

33 http://www.dstang.com 唐大仕 北京大学

Java程序设计

••••••••••••••••••••••••••••••••••••••

面向对象程序设计

Page 34: java learning

34 http://www.dstang.com 唐大仕 北京大学

Java程序设计

对象(object) � 

• 对象具有两方面的含义: � p 在现实世界中: � 

•  是客观世界中的一个实体 � 

p 在计算机世界中: � •  是一个可标识的存储区域 � 

Page 35: java learning

35 http://www.dstang.com 唐大仕 北京大学

Java程序设计

类(class) � 

• 类:具有共同属性和行为的对象集合

p 属性: � 变量(字段 � field)

p 行为: � 函数(方法 � method) � 

• 类与对象的关系 � p 类是对象的抽象(模板) � 

p 对象是类的实例

•  注:类和对象有时都统称“对象”,为了明确起见,后者称为“对象实例” � 

对象

类class Person{ int age; String name; void sayHello(){…} } Person p = new Person()

Page 36: java learning

36 http://www.dstang.com 唐大仕 北京大学

Java程序设计 面向对象的三大特征 � 

✔ 封装性 � 

✔ 继承性 � 

✔ 多态性 � 

Page 37: java learning

37 http://www.dstang.com 唐大仕 北京大学

Java程序设计

 模块化:将属性和行为封装在类中,程序定义很多类。 � 

�  信息隐蔽:将类的细节部分隐藏起来

  用户只通过受保护的接口访问某个类。 � 

封装 � 

class Person{ private int age; public int getAge(){ return age; } public void setAge(int a){ age=a;} String name; void sayHello(){…} }

Page 38: java learning

38 http://www.dstang.com 唐大仕 北京大学

Java程序设计 继承(inheritance) � 

• 继承性

p 父类和子类之间共享数据和方法 � 

• 继承的好处

p 更好地进行抽象与分类 � 

p 增强代码的重用率 � 

p 提高可维护性 �  ⼦子类

⽗父类

class Person{ int age; String name; void sayHello(){…} } class Student extends Person{ String school; double score; void meetTeacher(){ … } }

Page 39: java learning

39 http://www.dstang.com 唐大仕 北京大学

Java程序设计

多态性(polymorphism) � 

• 多态

p 不同的对象收到同一个消息(调用方法)可产生完全不同的效果

p 实现的细节则由接收对象自行决定

p 例 �  �  � foo( Person p ){ p.sayHello(); }

p  foo( new Student() );

p  foo( new Teacher() ); � 

Page 40: java learning

40 http://www.dstang.com 唐大仕 北京大学

Java程序设计

面向对象设计思想的要点 � 

• 认为客观世界由各种对象组成 � 

• 程序的分析和设计都围绕着

p 有哪些对象类

p 每个类有哪些属性、哪些方法

p 类之间的关系(继承、关联等)

p 对象之间发送消息(调用方法)