JAVA程序设计 (01) JAVA Programming 湖南大学软件学院 主讲:荣辉桂(讲师) Email ronghg@163.com
第一章 Java的类 1.1 有关面向对象的概念 1.2 Java语言的特点 1.3 Java的开发环境 1.4 第一个Java程序 1.10 对象的构造函数
Java语言的诞生 Java诞生于1995年,是Sun公司组织开发的一编程语 言,主要贡献者是James Gosling。1990年Sun公司成立了由James Gosling领导的开发小组,开始致力于开发一种可移植的、跨平台的语言,该语言能生成正确运行于各种操作系统、各种CPU芯片上的代码。他们的钻研和努力促成了Java语言的诞生。Java的发展得利于Internet和Web的出现,Internet上有各种不同的计算机,它们可能使用完全不同的操作系统和CPU芯片,但仍希望运行相同的程序,Java的出现标志着真正的分布式系统的到来。
学习Java的必要性 Java不仅可以用来开发大型的桌面应用程序,而且特别适合于Internet的应用开发。目前,Java语言不仅是一门正在被广泛使用的编程语言,而且已成为软件设计开发者应当掌握的一门基础语言。Java语言是面向对象编程,并涉及到网络、多线程等重要的基础知识,而且很多新的技术领域都涉及到了Java语言,因此,学习和掌握Java已成为共识,国内外许多大学已将Java语言列入了本科教学计划,IT行业对Java人才的需求正在不断的增长,一些软件公司对其开发人员周期地进行Java的基础培训工作。在IT行业发达的北美洲,有将近60%的软件开发人员在使用Java完成他们的工作,Evans Data公司在2002年做的一项调查中发现,在北美洲,Java的使用率已经接近 C/C++。
Java 的特点 1.平台无关性 Java语言和其他语言相比,最大的优势就是能够在所有的计算机上运行,这也是Java风靡全球的主要原因。 2.面向对象 面向对象编程是一种先进的编程思想,更加容易解决复杂的 问题。 3.分布式 java函数库提供了用http和ftp协议传送和接收信息的方法。这的程序员使用java语言和相关技术可以十分方便地构建分布式应用系统。 4.安全性 Java 舍弃了C++指针对存储器地址直接操作,并且对程序提供了安全管理器,防止非法访问。 5.健壮性 Java致力于检查程序在编译和运行时的错误
Java 与 C/C++之关系 如果你学习过C++语言,你会感觉Java很眼熟,因为Java中许多基本语句的语法和C++一样,像常用的循环语句、控制语句等和C++几乎一样,但不要误解为Java是C++的增强版,Java和C++是两种完全不同的语言,他们各有各的优势,将会长期并存下去,Java语言和C++语言已成为软件开发者应当掌握的语言。
用C++ and Java写的例子 class Customer{ char customerID[10]; char name[20]; int age; public: Customer() { strcpy(customerID,”CID001”); strcpy(name,”Carol”); age=29; } void displayDetails() { cout<<” Customer ID is ” <<customerID; cout<<” Customer Name is ”<<name; cout<<”Customer age is ”<<age; }; void main() { Customer custObj; custObj.displayDetails();
public class Customer { // Declaring data members private String customerID; private String customerName; private int customerAge; //Initializing variables public Customer() { customerID="CID001"; customerName="Carol"; customerAge=29; } public void displayDetails() { System.out.println("Customer ID is "+customerID); System.out.println("Customer name is “ +customerName); System.out.println("Customer age is"+customerAge); public static void main(String args[]) { Customer custObj=new Customer(); custObj.displayDetails();
Java 运行平台 三种平台简介 目前Java运行平台主要分为下列3个版本: (1)J2SE:(Java 2 Platform Standard Edition)称为Java标准版或Java 标准平台。J2SE 提供了标准的SDK开发平台,以前称JDK开发平台。 (2)J2EE: (Java 2 Platform Enterprise Edition)称为Java企业版或Java企业平台。是一组针对传统桌面应用的API和运行环境。 (3)J2ME: (Java 2 Platform micro Edition)称为Java微型版或Java小型平台。它定义一组针对嵌入式设备和消费电子设备的API和运行环境 学习Java必须从J2SE开始,因此,本书基于J2SE来学习Java。
1.1 有关面向对象的概念 面向对象程序设计围绕的几个主要概念: 抽象数据类型、类、类型层次(子类),继承性、多态性。 面向对象程序设计:一种新的思维方法,更接近人类处理现实世界问题的自然表示方法。 假设你面对现实世界的一个对象,你不会把它的属性和处理方法分开,程序设计也是一样 面向对象的语言有:C++,smalltalk,VB,Java等
1.1 有关面向对象的概念 数据抽象类型 class Car { int color_number; int door_number; int speed; void brake() { … } void speedUp() {…}; void slowDown() { … } } 现实生活中的对象 计算机中 的对象的原型
1.1 有关面向对象的概念 什么是类? 类是描述对象的“基本原型”,它定义一种对象所能拥有的数据和能完成的操作,在面向对象的程序设计中,类是程序的基本单元。 程序中的对象 是类的一个实例,是一个软件单元,它由一组结构化的数据和在其上的一组操作构成。 variables methods
1.1 有关面向对象的概念 变量:即指对象的所知道的状态 方法:指对象的功能单元。 什么是消息? 软件对象通过相互间传递消息来相互作用和通信 一个消息由三部分组成: 1. 接受消息的对象 2. 要完成方法的名字 3. 方法需要的参数 对象B 对象 A message
1.1 有关面向对象的概念 一个例子 在程序中操作对象是类的一个实例:即对象 创建一个对象 Hello obj=new Hello(); class Hello { } 一个例子 在程序中操作对象是类的一个实例:即对象 创建一个对象 Hello obj=new Hello(); 调用方法 obj.showString(“Hello World!”) private String s; public void showString () { System.out.println(s);} public void changeString(String str) { s=str;}
1.1 有关面向对象的概念 什么是封装? 封装把对象的所有组成部分组合在一起,封装定义程序如何引用对象的数据,封装实际 上使用方法将类的数据隐藏起来,控制用户对类的修改和访问数据的程度。 公有数据 数据 私有数据 方法 方法 对象A 对象B
1.1 有关面向对象的概念 什么是子类? 子类是作为另一个类的扩充或修正所定义的一个类. bicycle (super class) sub class Mountain bikes Tandem bikes Racing bikes
1.1 有关面向对象的概念 什么是继承? 继承是子类利用父类中定义的方法和变量就像它们属于子类本身一样. class Car { int color_number; int door_number; int speed; push_break() { … } add_oil() { … } } class Trash_Car extends Car { double amount; fill_trash() { … } }
1.1 有关面向对象的概念 什么是方法的覆盖? 在子类中重新定义父类中已有的方法。 class Car { int color_number; int door_number; int speed; push_break() { speed=0; } add_oil() { … } } class Trash_Car extends Car { double amount; fill_trash() { … } push_break() { speed=speed-10; } }
1.1 有关面向对象的概念 什么是方法的重载(多态性)? 在同一个类中至少有两个方法用同一个名字,但有不同的参数。 void show(int int_num) 123 1.23 void show(double double_num) 类 123,1.23 void show(nit nit_ um, float float_um)
1.2 Java语言的特点 Java是什么? Java有那些特性? (1) 面向对象 封装性、多态性、继承性、动态链接 “C++”--“复杂性和奇异性”+“安全性和可移植性” Java有那些特性? (1) 面向对象 封装性、多态性、继承性、动态链接 (2) 操作平台无关性 严格的语言定义:“没有依据机器的不同而不同” 或“由编译器决定”等字眼,最后的目标码都是一致的,初值都是确定的
1.2 Java语言的特点 两种工作模式的比较 pentium pentium pentium pentium 编译器 Java编译器 二进制 Java编译器 Java解释器 二进制 Powerpc Powerpc Powerpc Powerpc 源 程 序 源 程 序 中间码 pentium pentium pentium pentium SPARC SPARC SPARC SPARC
1.2 Java语言的特点 . 调入包含,继承所用到的所有类, 内存分配确定,编程真正可执行的机器码 不存在伪造的指针 不违反访问权限 编译,没有绝对地址 调入包含,继承所用到的所有类, 内存分配确定,编程真正可执行的机器码 Java源程序 (.java文件) Java编译器 Java Bytecode (.class文件) 系统执行平台 Bytecode 解释器 Bytecode 载入器 字节码校验器 不存在伪造的指针 不违反访问权限 不非法访问对象 不导致操作栈溢
1.2 Java语言的特点 Java虚拟机 JRE是Java实时运行环境(Java Runtime Environment)的简称。也就是通常说的java虚拟机。不同的操作平台,JRE不同。它类似一个小巧而高效的CPU. byte-code代码是与平台无关的 是虚拟机的机器指令. Java字节代码运行的两种方式: interpreter(解释方式) Just-in-time(即时编译):用代码 生成器将字节代码转换成本机 的机器代码,然后可以以较高速 度执行. Java interpreter Just-in-time compiler Runtime System Operating System Hardware
1.2 Java语言的特点 (3) 安全问题 Java是在网络环境下使用的语言 一个安全的网络至少要防止以下几种破坏的可能性: 毁灭系统资源 消耗系统资源 挖掘系统或个人机密 骚扰正常工作的进行
1.2 Java语言的特点 Bytecode检查 限定对象的 存取权限 系统堆栈溢出 参数类型一致 语言定义 public protected private final 取消指针; 自动回收 垃圾 Java源程序 (.java文件) Java编译器 Java Bytecode (.class文件) Bytecode 载入器 Bytecode 解释器 系统执行平台 程序执行系统 WWW浏览器 限制Java小应用程序 的不正当使用
1.2 Java语言的特点 (4) 多线程 Java提供现成的类Thread,只要继承这个类就可以编写多线程的程序。 (5) Java与C及C++的区别 不再有#include 和#define 等于处理功能 不再有structure,union及typedef 不再有函数、不再有指针、不再有多重继承 不再有goto 不再有操作符重载(Operatior Overloading) 取消自动类型转换,要求强制转换
1.3 Java的开发环境 Java开发环境工具集 JDK JDK中有Java编译器和bytecode解释器Appletviewer是小应用程序的bytecode解释器 JDK的安装 直接执行j2sdk-1_4_2-windows-i586.exe
1.3 Java的开发环境 产生如下目录结构 java\bin的目录下包含义下主要文件: javac: Java编译器, 用来将java程序编译成 Bytecode java: Java解释器,执行已经转换成Bytecode的 java应用程序. jdb: Java调试器, 用来调试java程序 javap: 反编译,将类文件还原回方法和变量. javadoc:文档生成器,创建HTML文件 appletviwer : Java解释器, 用来解释已经转换成 Bytecode的java小应用程序.
1.3 Java的开发环境 \java\lib子目录 库函数,其中classese.zip不要解开. 直接配置环境变量。 系统环境Path 值的设置 Path路径中加入 c:\j2sdk1.4.2\bin 系统环境ClassPath 值的设置(.; j2sdk1.4.2\lib; j2sdk1.4.2\jre\lib )
1.3 Java的开发环境 C:\ java lib bin classes.zip javac appletviewer 用户类文件 所在目录 myclasses 当前目录
1.3 Java的开发环境 从网络上直接下载JDK(Java Developer Kit),并利用命令行方式操作javac(编译器), java (解释器) 常用辅助工具:Jcreator、FreeJava、Eclipse Java集成开发环境(IDE) Visual J++、Visual Cafe、Jbuilder IDE中,编辑、编译、运行Java程序过程: 1.进入环境,创建一个project 2.加入java文件 3. 编辑java文件 4. 编译java文件 5. Build一个project文件 6. 运行java程序
下课了。。。 追求 休息一会儿。。。