地 啊 第1章 JAVA语言简介 孙焘.

Slides:



Advertisements
Similar presentations
网络应用程序设计 2014 JavaBean. JavaBean 及其属性 JavaBean 就是一种 Java 的组件技术 JavaBean 是 Java 类 JavaBean 通过约定的方法名实现属性功能 简单属性 void setXxx(Type value) Type getXxx() boolean.
Advertisements

主要内容 Java 的常用包 Java 的常用包 “ == ” 和 “ equals ” 的用法 “ == ” 和 “ equals ” 的用法 基本数据类型与引用类型 基本数据类型与引用类型 String 和 StringBuffer String 和 StringBuffer 对象的克隆( clone.
Java 程序分类 Java Application :是完整程序,需要独立的解 释器解释运行;以 “.java” 为后缀的文件,以 main() 方法作为程序入口,由 java 编译器编译生 成字节码,由 Java 解释器加载执行字节码。 Java Applet 没有 main() 方法作为程序入口,是嵌在.
第一章 Java 程序设计技术 概述  什么是 Java 语言  一个简单的 Java 程序  程序的编译和运行  常见错误  使用 Java 核心 API 文档.
程序设计语言基础 软件工程系 秦晓燕. 课程目标 了解面向对象程序设计的思想,以及软件 开发流程。 学习 Java 语言的基本概念和编程方法,基 本掌握 Java 类库的使用。 能够利用所学的方法开发简单的小型应用 程序.
Java 程序设计 案例教程 北京大学出版社 第 01 章. Java 程序设计案例教程 第 01 章 Java 语言与面向对象程序设计 Java 语言的历史 Java 语言的特点 Java 程序的分类 Java 环境配置 Eclipse 的安装 Java 程序的调试 教学目标.
Java 程序设计(第二版) 普通高等教育 “ 十一五 ” 国家级规划教材 辛运帷等 编著 徐小平 主讲.
第三讲 Java与面向对象技术 1、面向对象的概念 2、Java中的类、方法和变量 3、Java名字空间及访问规则
第四章 类、对象和接口.
1.1 有关面向对象的概念 变量:即指对象的所知道的状态 方法:指对象的功能单元。 什么是消息? 软件对象通过相互间传递消息来相互作用和通信
3.2 Java的类 Java 类库的概念 语言规则——程序的书写规范 Java语言 类库——已有的有特定功能的Java程序模块
JAVA 编 程 技 术 主编 贾振华 2010年1月.
第一章 Java的类 信息管理教研室 孙士兵.
《 Java开发环境配置》 主讲人:耿力.
Java程序设计教程 第一讲 Java概述.
四資二甲 第三週作業 物件導向程式設計.
Tool Command Language --11级ACM班 金天行.
面向对象的程序设计(一).
第二章 JAVA语言基础.
Ch07 介面與多重繼承 物件導向程式設計(II).
第14章 c++中的代码重用.
C++中的声音处理 在传统Turbo C环境中,如果想用C语言控制电脑发声,可以用Sound函数。在VC6.6环境中如果想控制电脑发声则采用Beep函数。原型为: Beep(频率,持续时间) , 单位毫秒 暂停程序执行使用Sleep函数 Sleep(持续时间), 单位毫秒 引用这两个函数时,必须包含头文件
全国计算机等级考试 二级基础知识 第二章 程序设计基础.
第10讲 Java面向对象编程基础(4) 教学目标 主要内容.
JAVA程序设计 (03) JAVA Programming
第5章 Java中类、对象、接口 及包的概念 5.1 类的基本概念 5.2 类的继承概念 5.3 抽象类和接口 5.4 包.
第九章 字符串.
2.1 基本資料型別 2.2 變數 2.3 運算式與運算子 2.4 輸出與輸入資料 2.5 資料型別轉換 2.6 實例
第5章 面向对象程序设计 本章要点 5.1 面向对象程序设计概述 5.2 Java语言的面向对象程序设计 5.3 方法的使用和对象数组
Ch13 集合與泛型 物件導向程式設計(2).
程式設計實作.
CH09 套件 物件導向程式設計(II).
管理信息结构SMI.
Java程序设计 第9章 继承和多态.
辅导课程六.
中国矿大计算机学院杨东平 第5章 接口和包 中国矿大计算机学院杨东平
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
3.1 数据类型 3.2 标识符与关键字 3.3 常量 3.4 变量 3.5 运算符与表达式 3.6 一个编程实例
2019/1/16 Java语言程序设计-类与对象 教师:段鹏飞.
Ch02-基礎語法.
C/C++/Java 哪些值不是头等程序对象
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
JAVA 编 程 技 术 主编 贾振华 2010年1月.
《JAVA程序设计》 语音答疑 辅导老师:高旻.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
C语言程序设计 主讲教师:陆幼利.
第三课 标识符、关键字、数据类型.
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
$9 泛型基础.
C#面向对象程序设计 $6 深入理解类.
姚金宇 MIT SCHEME 使用说明 姚金宇
第二章 Java基本语法 讲师:复凡.
<编程达人入门课程> 本节内容 内存的使用 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
本节内容 类成员的访问控制 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第二章 Java语法基础.
Review 1~3.
C++语言程序设计 C++语言程序设计 第八章 继承 C++语言程序设计.
辅导课程十五.
第二章 Java基本语法 讲师:复凡.
方法進階及物件導向基礎 Lecturer: 楊昌樺.
Python 环境搭建 基于Anaconda和VSCode.
基于列存储的RDF数据管理 朱敏
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
JAVA 程式設計與資料結構 第三章 物件的設計.
第2章 Java语言基础.
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
第二章 Java基础语法 北京传智播客教育
第二章 简单数据类型 §2.1 数据类型概述 §2.2 变量和常量 §2.3 简单数据类型 §2.4 简单数据类型的相互转换
Summary
Presentation transcript:

地 啊 第1章 JAVA语言简介 孙焘

重点: Java的体系结构 1 Java语言的特点 2 Java语法简介 3 Java面向对象机制 4 常用类的使用 5

1.1 Java简介 Java是由Sun Microsystems公司于1995年5月推出的Java程序设计语言(以下简称Java语言)和Java平台的总称。 Java平台由Java虚拟机(Java Virtual Machine)和Java 应用编程接口(Application Programming Interface、简称API)构成。 1.1.1 Java分为三个体系: (1)J2SE(Java2 Standard Edition),经常用于一些桌面系统的开发。 (2)J2EE(Java 2 Platform,Enterprise Edition),经常用于大型网站的架设。 (3)J2ME(Java 2 Micro Edition),经常用于手机程序的开发。

1.1 Java简介 1.1.2 java语言的特点 (1)Java语言是简单的。 (2)Java语言是一个面向对象的。 (1)JDK:Java开发工具包 (Java  Development Kit ) 的缩写 (2)JRE:Java运行环境 (Java  Runtime Enviroment) 缩写 (3).java文件:Java源程序文件 (4).class文件:Java源程序编译后的文件

1.1 Java简介 1.1.4 Java与C/C++语言的区别 (1)Java在虚拟机上运行。 (2)Java是完全面向对象的。 (4)用Package来分解Java命名空间。 (5)异常是Java的重要特性。 (6)字符串不再是字符数组。 (7)Java没有指针。 (8)Java使用垃圾回收。 (9) Java以一些预定义的类为基础。

1.1 Java语言简介 1.1.5 两种工作模式的比较 编译器 Java编译器 Java解释器 二进制 Powerpc Powerpc 源 程 序 源 程 序 中间码 pentium pentium pentium pentium SPARC SPARC SPARC SPARC

1.2 Java开发环境的搭建 1.下载JDK包 目前最高版本为 jdk-6u1-windows-i586-p.exe 2.安装,假设默认安装路径为: C:\Program Files\Java\jdk1.6.0_01 3.添加环境变量:右键我的电脑->属性->高级-> 环境变量,在系统变量中添加变量名:JAVA_HOME 变量值为:C:\Program Files\Java\jdk1.6.0_01 (注:变量值依本地装JDK的安装位置而定) 同理添加变量名:CLASSPATH 值为:.;%JAVA_HOME%\lib(注意前面的店) 4.在已经存在的变量名path中追加变量值: %JAVA_HOME%\bin;%QTDIR%\bin;(注意前面要有;隔 开)

1.3 Java的语法简介 按照前面的方法搭建好开发环境后,计算机就可以编写运行Java程序了。 1.3.1 测试第一个Java程序 在记事本中输入如下代码:并保存为HelloWorldApp.java class HelloWorldApp { public static void main(String args[]) { System.out.println(“Hi, ”+args[0]); } 编辑存盘:主类名(含有main方法)和文件名要一致性 HelloWorldApp.java 在开始菜单中点击运行,输入cmd打开cmd终端,切换到java源程序所在目录: 编译程序 : javac HelloWorldApp.java 运行程序 : java HelloWorldApp “myjava” 运行结果 : Hi, myjava

1.3 Java的语法简介 1.3.2 Java的类型和类型转换 Java的基本数据类型有以下四种: (1)整数类型:byte(8bits)、short(16bits)、 int(32bits)、long(64bits); (2)浮点类型:单精度(32bits float)、双精度 (64bits double); (3)布尔类型:boolean,取值:ture、false; (4)字符类型:char-unicode字符(16bits); 与C语言不同,Java对这些基本类型进行了类的包装,对 应的类类型包括:Integer、Float、Boolean、Character、 Double、Short、Byte、Long等。

1.3 Java的语法简介 与C语言不同,Java对这些基本类型进行了类的包装,对 应的类类型包括:Integer、Float、Boolean、Character、 Double、Short、Byte、Long等。 和C/C++中的类似,Java的byte 、short、int、long、 float、double、char等基本类型可以通过强制转换实现从 低精度转高精度,而高精度转低精度则会有精度损失。 然后是基本类型和类类型间的转换。分为两种: (1)正向转换:通过类包装器来new出一个新的类类型的变 量 Integer a= new Integer(2); (2)反向转换:通过类包装器来转换 int b=a.intValue();

1.3 Java的语法简介 实际应用中,或许这些类型和String类型之间的转换才是最常用和最重要的。 以int类型为例转化为String: int i = Integer.parseInt(“123”); int i = Integer.valueOf(“123”).intValue(); 注: 字串转成 Double, Float, Long 的方法大同小异. String转化为其他类型 1. String s = String.valueOf(i); //个人比较推荐这种方式,可以针对各种类型 2. String s = Integer.toString(i); 3. String s = "" + i; //这个是隐式转换 注: Double, Float, Long 转成字串的方法大同小异。 String转化为char 因为char是一个字母,所以要这样转化 char ch = "123".charAt(0);

1.3 Java的语法简介 程序:保留字,标识符(类名、域名、方法名、符号常量、局部变 量,标号、…),操作符、界定符,字面常量。 声明一个变量 int data=10; Boolean isAlived; Java中的操作符:与C基本一致 Java中不再有指针了 在Java中”引用“是指向一个对象在内存中的位置,在本质上是 一种带有很强的完整性和安全性的限制的指针. 当你声明某个类,接口或数组类型的一个变量时,那个变量的值 总是某个对象的引用或者是null引用. 指针就是简单的地址而已,引用除了表示地址而外,还象被引用 的数据对象的缩影,还提供其他信息. 指针可以有++,--运算,引用不可以运算.

1.3 Java的语法简介 s1 s1=“a string”; s2 s2=s1; class Mydate { int year; 例: String s1;String s2; s1 10001 a string s1=“a string”; s2 10001 s2=s1; class Mydate { int year; int month; int day; } today 10008 Mydate today=new MyDate()

1.3 Java的语法简介 1.3.3 Java中的内存分配 能够动态取得的内存有两种: (1)一种是对象实体. (2)一种数组. Java用new申请内存,不需要自己释放不用的内存. 在Java中,定义数组时不必给出数组的大小,因为Java的 数组是动态分配的。 数组变量实际上是一个引用变量,因此要实例化才能使用。 例:int Array[]; Array=new int[8];

1.3 Java的语法简介 for(int i=0;i<arrayString.length;i++) 例:String arrayOfString[]=new String[10];每个数组 元素包含一个对字符串对象的引用,此时值分配了包含字符 串引用的空间,并没有对字符串本身分配内存,此时不能访 问。 对 字 符 串 的 引 用 arrayOfString[0] arrayOfString[1] arrayOfString[8] arrayOfString[9] arrayOfString 对数组的引用 for(int i=0;i<arrayString.length;i++) arrayOfString[i]=new String(“Hello”+i)

1.4 Java的面向对象机制 1.4.1 面向对象简介 Java是一种面向对象的程序设计语言(Object Oriented Programming:OOP),面向对象的程序设计语言中有 类和对象的概念,如下举例说明。 例:定义学生类和对象 public class Student { public String number; //学号 public String name; //姓名 }

1.4 Java的面向对象机制 类是对一类“事物”的属性与行为的抽象。 对象是类的实例,或者说是类的具体个体。比如,张三是 类Student的一个对象。类Student可能存在无数个对象, 但只是个概念,没有实在性。 在Java语言中,使用new来创建一个对象。例如: Student zhangsan = new Student();    //创建对象: “zhangsan”。

1.4 Java的面向对象机制 1.4.2 继承与接口 (1)类的继承(Inheritance)是面向对象程序设计中的 一个重要特色。 类继承也称为类派生,是指一个类可以继承其它类的所有 内容,包括变量和方法。被继承的类称为父类或者超类 (Superclass),继承后产生的类成为子类或者派生类 (Subclass)。 断派生新类的过程是一个描述现实世界的层次关系的过程。 为此,首先要建立一个简单的类,以其为基础,派生出不 同层次的子类。

1.4 Java的面向对象机制 Java的所有类都是直接或间接由Object继承过来,换言之, Object是Java所有类的父类。 Java中除了使用this关键字,还有一个关键字super。 super指的是父类,在类的继承中有重要的作用,super的 常用方法如下: (1)使用super访问父类的变量或者方法。 (2)使用父类的构造方法 何时选择继承性? 一个很好的经验: “B是一个A吗?” 如果是则让B做A的子类.

1.4 Java的面向对象机制 类的严格定义及修饰字 方法和变量的定义及修饰字 public, abstract, final或者没有 [类的修饰字] class 类名称 [extends 父类名称] { …. } 方法和变量的定义及修饰字 public、protected、private [变量修饰字] 变量数据类型 变量名1,变量名2[=变量初值]…; [方法修饰字] 方法的返回值类型 方法名称(参数1,参数2,… { …//方法的内容 }

1.4 Java的面向对象机制 利用接口可实现多重 继承(可同时实现多个接口) 接口的作用和抽象类类似,指定原型,不直接定义方法的内容. 关键字implement用 来实现方法,即在使用时要用给出方法 的实际内容 接口中的方法和变量是public的 interface Stack{ void push(object x); object pop(); } class A extends Applet implements Stack { void push(object x) { …;//具体内容 object pop() …;//具体内容}

1.4 Java的面向对象机制 1.4.3 Java的名字空间和访问规则 每个类都创造了有自己的名字空间,指方法和变量可以知道彼 此的存在,可以使用。 abstract类不能直接产生属于这个类的对象 final类不能被其他任何类所继承(安全的考虑) public类不但可以被同一程序包中的其它类使用,别的程序包中 的类也可以使用. friendly(缺省)类只能被本包中的其它类使用

1.4 Java的面向对象机制 class ABC { public int pub_i=5; public void show)() 变量和方法的修饰字public、protected、private public: 任何其它类、对象只要可以看到这个类的话,那么 它就可以存取变量的数据,或使用方法。 class ABC { public int pub_i=5; public void show)() System.out.println(“pub_i”+pub_i); }

1.4 Java的面向对象机制 public class ABC { protected int pro_i=5; protected void show() { System.out.println(“pro_i=” +pro_i;) }

1.4 Java的面向对象机制 Private变量名和方法 不允许任何其他类存取和调用 friendly(前边没有修饰字的情况) 在同一程序包中出现的类才可以直接使用它的数据和方法.

1.4 Java的面向对象机制 当子类中的变量名与父类的相同,原来的变量被遮盖. 方法的覆盖(overriding)和重载(overloading) 子孙类中定义的方法和祖先类中某个方法同名,同参数行, 则祖先类中的该方法被覆盖. 方法的重载是指一个对象的多态性,即多个方法用相同的 名称,但参数行不同. 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.4 Java的面向对象机制 到此为止-----final final在方法之前,防止该方法被覆盖. 属于类的变量和方法----static static 在变量或方法之前, 表明它们是属于类的, object b char data object c Object b static int share_data object b class ABCD { char data; static int_share_data; } class Demo { ABCD a,b,c,d}

1.4 Java的面向对象机制 静态变量在各实例间共享 如果是public静态变量,则其它类可以不通过实例化访问 它们 静态方法称为类的方法,因此不用实例化即可调用(面向过 程) 一个对象的方法可以访问对象的数据成员,尽管不属于方 法的局部变量 一个类的方法只能访问自己的局部变量

1.4 Java的面向对象机制 例:不正确的引用 class StaticError { String mystring=“hello”; public static void main(String args[]) { System.out.println(mystring);} } 错误信息:can’t make a static reference to nonstatic variable. 为什么不正确? 只有对象的方法可以访问对象的变量.

1.4 Java的面向对象机制 解决的办法: 1. 将变量改称类变量 class StaticError { static String mystring=“hello”; public static void main(String args[]) { System.out.println(mystring);} } 2. 先创建一个类的实例 class NoStaticError { { String mystring=“hello”; System.out.println(mystring);}

1.4 Java的面向对象机制 1.4.4 Java中的抽象类、接口和程序包 抽象类是指不能直接被实例化的类,因此一般作为其它类 的超类,与final类正好相反 抽象类中的抽象的方法-在该类中定义但不在该类中提供 实现,由继承类提供细节 public abstract class SomeAbstractClass { void method1() { System.out.println(“Hi, Java”);} void method2(); } 定义抽象方法的类必须是抽象类.

1.4 Java的面向对象机制 //已有两个类Circle和Rectangle,完成相关参数的计算 class Circle { public int r; Circle(int r) {this.r=r} //this指"这个对象的" public int area() {return 3*r*r; } //取近似 } class Rectange { public int width,height; //这里不需"this" Rectangle (int w, int h) {width=w,height=h;} public int area() {return width*height; }

1.4 Java的面向对象机制 假设有若干个Circle,以及若干个Rectangle,希望计算它 们的总面积,直截了当的做法是将它们分别放到两个数组 中,用两个循环,加上一个加法,这种做法是不漂亮的 如果还有其它形状,triangle,ellipses等,上述方法显得 “累赘”,我们希望有一种统一的表示,例如用一个数组 shape[],接受所有的形状,然后用 for (i=0;i<shape.length;i++) { area_total+=shape[i].area(); }

1.4 Java的面向对象机制 例: abstract class Shape{ abstract float area(); } class Circle extends Shape{ public int r; Circle(int r) {this.r=r;} public float area() { return 3.14*r*r; } class Square extends Shape{ public int width,height; Rectangle (int w, int h){ width=w,height=h;} public float area(){ return width*height;

1.4 Java的面向对象机制 1.4.5 Java中的程序包 程序包:相当于其它语言中的库函数 打包 package Graphics; class Square {…;} class Circle {…;} class Triangle {…;} 使用程序包中的类要用import命令.表示路径,*表示使用包中的所有类 Import java.io.FileInputStream; import java.io.*; io java FileInputStream

1.4 Java的面向对象机制 1.4.6 Java中对象的构造函数 constructor(构造函数),在一个类中和类同名的方法叫构 造函数.系统在产生对象时会自动执行. 构造函数多半定义一些初值或内存配置工作 一个类可以有多个构造函数(重载),根据参数的不同决定 执行哪一个. 如果程序中没有定义构造函数,则创造实例时使用的是缺 省函数,它是一个无内容的空函数.

1.4 Java的面向对象机制 class Circle class ThisClass { int r; { Circle(int r) {this.r=r;} public area() { return r*r*3;} } class ThisClass { public static void main(){ Bank bank=new Bank(); bank.someMethod(this); }

1.5 Java中常用类的实用 1.5.1 Java中的集合类 import java.util.*; public class Data { public static void main(String[] args) { ArrayList data = new ArrayList(); data.add("张三");//添加元素 data.add("李四"); data.add("王五"); if(data.contains("张三"))//是否包含某个元素 data.remove("张三");//删除某个元素 int size = data.size();//获得data的大小 }

1.5 Java中常用类的实用 Java集合类都在java.util包中,它们均是基于集合类接口的实现, 较重要的两个集合类接口分别是List接口和Map接口。 (1)List接口: ①案例中的ArrayList类。底层是Object数组,所以ArrayList具有数 组的查询速度快的优点以及增删速度慢的缺点。 ②LinkedList类。它的底层是一种双向循环链表。在此链表上每一个 数据节点都由三部分组成:前指针(指向前面的节点的位置),数据, 后指针(指向后面的节点的位置)。最后一个节点的后指针指向第一 个节点的前指针,形成一个循环。双向循环链表的查询效率低但是增 删效率高。经常用在增删操作较多而查询操作很少的情况下。

1.5 Java中常用类的实用 ③Vector 类。与ArrayList相似,区别是Vector是重量级 的组件,使用时消耗的资源比较多。 因此在考虑并发的 情况下用Vector(保证线程的安全)。 在不考虑并发的 情况下用ArrayList(不能保证线程的安全)。 (2)Map接口: Map 提供了一个更通用的元素存储方法。 Map 集合类用 于存储元素对(称作“键”和“值”),其中每个键映射 到一个值,键值不可以重复。 从概念上而言,可以将 List 看作是具有数值键的Map, 而实际上除了 List 和 Map 都在java.util中定义,两者并没有直接的联系。

1.5 Java中常用类的实用 声明一个Map,然后添加元素,例如: Map map = new HashMap<String, String>(); map.put("08001", "张三"); map.put("08002", "李四"); map.put("08002", "王五"); Map接口的常用操作: ①clear():从 Map 中删除所有映射 ②remove(Object key):从 Map 中删除键和关联的值 ③put(Object key, Object value):将指定值与指定键相关联 ④get(Object key):返回与指定键关联的值 ⑤containsKey(Object key):如果Map 包含指定键的映射,则返回 true ⑥containsValue(Object value):如果此 Map 将一个或多个键映射到指定值,则返 回 true ⑦isEmpty():如果 Map 不包含键-值映射,则返回 true ⑧size():返回 Map 中的键-值映射的数目 访问map通常用迭代器来实现。迭代器是一个对象,它的工作是遍历并选择序列中的对 象。用户可以在使用时不关心序列底层的结构。

1.5 Java中常用类的实用 1.5.2 Java中的字符串String类 Java中的字符串类 String和StringBuffer str=“this is a string” 或: String str1=new String(“hello”); 或: String str2=“aaaa”; String类与其它类型的转换 例1:将实型数转换成字符串 System.out.println(String.valueOf(Math.PI));

1.5 Java中常用类的实用 有两个字符串str1,str2 str1=str2; 是指两个引用指向同一个地址 str1.equals(str2) 是指两个字符串内容相等 获取String对象的信息 例如: String s=“this is a string”; int len=s.length(); boolean result=s.equal(“this is a test”); char ch=s.charAt(6);

1.5 Java中常用类的实用 StringBuffer的字符串的内容是可以改变的 创建StringBuffer对象 StringBuffer str=new Stringbuffer(“hello”); 获取StringBuffer对象的信息 int len=str.length(); 例: StringBuffer sb=new StringBuffer(“Drink Java!”); sb.insert(6,”Hot ”); System.out.println(sb.toString()); 以上输出结果为:Drink Hot Java!

结束