Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


Presentation on theme: "地 啊 第1章 JAVA语言简介 孙焘."— Presentation transcript:

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

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

3 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),经常用于手机程序的开发。

4 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源程序编译后的文件

5 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以一些预定义的类为基础。

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

7 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;(注意前面要有;隔 开)

8 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

9 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等。

10 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();

11 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);

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

13 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()

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

15 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)

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

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

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

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

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

21 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() …;//具体内容}

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

23 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); }

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

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

26 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)

27 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}

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

29 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. 为什么不正确? 只有对象的方法可以访问对象的变量.

30 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);}

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

32 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; }

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

34 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;

35 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

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

37 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); }

38 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的大小 }

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

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

41 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通常用迭代器来实现。迭代器是一个对象,它的工作是遍历并选择序列中的对 象。用户可以在使用时不关心序列底层的结构。

42 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));

43 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);

44 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!

45 结束


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

Similar presentations


Ads by Google