学习计划
5116人加入学习
(11人评价)
JAVA语言(MOOC)
价格 免费
音频听课 手机端支持一键听课 (试一试)

java 语言没有标准输入输出语句 使用io程序包流 来实现

流 (stream)是一组有序的数据序列

类型 

方向 

输入流

有源地流向java程序的数据

输出流

java程序流向目标的数据

 

流的数据单位

  • 字节 - 字节流  inputStream
  • 字符 - 字符流 Reader
  • 对象 - 对象流 ObjectInputStream

 

[展开全文]

向量

数组的缺点

数组穿件就决定大小 且不能改变

 

向量 集合

可动态改变大小

可在序列中存储不同类型数据

集合  把相同性质的一类对象 汇聚成一个整体

java2中定义了很多 与集合相关的接口

 

集合框架 

——对外接口

表示集合的 抽象数据类型 使集合的操作宇表示愤慨

——接口实现 

指实现集合接口的 java类 可重用的数据结构

——集合运算

指执行运算的方法 如 在集合上查找 排序

——当前定义了 4个接口 4个抽象类 6个具体类

 

向量 Vector 特征

实现了 Collection接口的具体类

能存储任意对象 但通常 不同类型的对象都具有相同的 父类 或接口

不能存储基本类型数据 除非这些数据包裹在包裹类中

Vector 方法是同步的 线程安全

向量的创建

Vector()

默认容量是10

Vector(90)

指定存储容量

Vector(90,20 )

指定存储容量 ,增量

 

向量操作 

添加元素 

更改 

删除

查找

[展开全文]

多维数组(高维数组)数组的数组

二维数组定义 

数据类型 数组名 [][]

int arr[][];

int [][] arr

 

 

 

int arr[][] = new int[2][3]

[展开全文]

数组

相同数据类型元素按照一定顺序排序的计划

优点 

 在 java 提供的存储及随机访问对象序列的各种方法中 数组效率最高

数组知道其元素的 类型

编译时类型检查 

不足

数组对象大小固定 在生存期间不能改变

基于维数

  1. 一维数组
  2. 二维数组
  3. 多维数组

基于元素数据类型 

  1. 基本类型数组
  2. 对象数组

一维数组 

数据类型 数组名 []

eg——    int arr[];

    ——    int[] arr;

数据类型 - 数组元素的数据类型

对象数组

Date[] dateArr;

数组定义狗不能立即使用 初始化后才能使用

 

一维数组初始化 

静态初始化

int arr[] = {}1,2,3,4}

 

动态初始化

int arr[] = new int [4]

数组元素默认初始值为0

 

Date dArr[] = new Date[4]

数组元素初始值为null

 

一维数组引用

arr[index]

[展开全文]

数组

相同数据类型元素按照一定顺序排序的计划

优点 

 在 java 提供的存储及随机访问对象序列的各种方法中 数组效率最高

数组知道其元素的 类型

编译时类型检查 

不足

数组对象大小固定 在生存期间不能改变

基于维数

  1. 一维数组
  2. 二维数组
  3. 多维数组

基于元素数据类型 

  1. 基本类型数组
  2. 对象数组

一维数组 

数据类型 数组名 []

eg——    int arr[];

    ——    int[] arr;

数据类型 - 数组元素的数据类型

对象数组

Date[] dateArr;

数组定义狗不能立即使用 初始化后才能使用

 

 

 

[展开全文]

常用程序包

 

java 基础类库  JFC

——java foundational class

根据功能关联 分别房子按不同程序包中

应用程序编程接口

——application programming interface

java.lang

java 核心类库 

包含不必不可少系统类 

基本数据类型 基本数据函数 字符串处理 县城 异常处理等 系统缺省加载

java.io 

java 语言的输入输出类库 如基本输入输出流 文件输入输出流 。。。

java.util 

提供一些使用方法 数据结构

java 提供的日期类 (Data) 日历类 (Calender) 来生产和获取其日及时间 提供随机数 (Random)

提供堆栈(stack) 向量(vector) 位集合(Bitset) 哈希表(Hashtable)等类来表示相应的数据结构 包含如处理时间的date类 处理变成数组的Vectot类 以及 stack和Hashtable类

 

 

java.awt.image包

处理和操作来自网上图片的java工具类库

java.awt包

构件图形用户界面的gui类库 低级绘图操作Graphics类

图形界面组件和布局管理checkbox类 Container类 LayoutManger接口等 

界面用户交互控制和事件 如Event类

 

java.awt.peer包

很少在程序中直接用到 使得同意java程序在不同软硬件平台上运行

 

 

java.applet

用于执行小程序的类 如applet

 

java.net

实现网络功能的类库有Socket类  ServerSocket类

java.util.zip 

实现文件压缩功能

 

 

[展开全文]

——package ppkg1[pkg2[pkg3...]]

package 指明文件中定义的类所在的程序包
package 语句必须时源程序的第一条语句 只能有一条
若没有package语句 则使用默认程序包
java 编译器把程序包对应于文件系统的目录管理

 

导入

import

[展开全文]

程序包

一个程序包 (package)被定义为一组互相联系的类型(类 接口 枚举等)集合 并为这些类提供访问保护和命名空间管理的功能

  1. 系统程序包 -- java.lang \ java.io等
  2. 自定义程序包-- 用户可以将一组相关的类 接口等打包

作用

把功能相关 相似的类或接口组织在同一包中 方便查找使用

避免名字冲突 

类似目录 包也是树形目录的存储方式

同一包 类名不同 不同包雷鸣可以相同

铜焊丝调用两个不同包的相同类 应加报名以便区分

限定访问权限

又有包的访问权限的类 才能访问此包的类

 

程序包对类的访问权限

public 修饰的类——本包的其他类 和 其他程序包的类都可以使用

非public修饰的类(缺省修饰)类——只能被当前程序包的其它类使用

 

private -- class 

缺省 -- class package

protected --  class package subclass 

public -- class package subclass world

 

程序包的语法格式 

——package ppkg1[pkg2[pkg3...]]

  1. package 指明文件中定义的类所在的程序包
  2. package 语句必须时源程序的第一条语句
  3. 若没有package语句 则使用默认程序包
  4. java 编译器把程序包对应于文件系统的目录管理

 

 

 

 

[展开全文]

接口的实现 

接口不能用new 故此必须利用其特性 设计新的类 在用心的类创建对象

利用接口设计类的过程 称为 接口的实现

使用 implements 关键字

 

实现接口所有方法的类 可实例化

实现部分 则只能为抽象类

来自接口的方法必须声明称 public

[展开全文]

接口定义

与抽象类一样都是定义多个类的 共同属性 加强版 是一个纯抽象类 只提供一种形式 不提供实现 只有头部声明 没有方法体

可以包含 基本数据类型的 数据成员 都默认为 static final

接口的作用 

  • 是面向对象的重要机制
  • 变相实现多重继承
  • 建立类与类之间的‘协议’

吧类根据其实现的功能来分别代表 不必考虑他所在的类继承层次

实现不同类之间常量共享

 

接口定义 

接口修饰符 interface 接口名称 【extends 父接口】 {

方法的原型声明或者 静态常量

}

接口的数据成员一定要给初值 并且这个值不能再更改 允许省略final 关键字

接口中的方法必须是抽象方法 不能有方法体 允许省略 public abstract 关键字

 

[展开全文]

内部类 

(外部类的 内部 在定义一个新的类)

是外部类的一个成员

特征 

  • 独立的类 会被编译成独立的 。class 
  • class文件 会被冠以外部类的类名喝$符号 eg (outer$inner.class)
  • 内部类不能用普通方式调用
  • 可以自由访问外部类的成员

使用内部类的好处

内部内可以很好实现隐藏

一般类不允许有private protected 权限 但内部类 可以

内部类拥有外部类 所有元素访问权限

可实现多重继承

可避免修改接口而是先同一个类中 两种同名方法的调用  --?

种类

成员内部类

class out

方法内部类

匿名内部类(没有名字的内部类

应用场合

  • 只用到类的 一个实例
  • 类 在定义后马上实例
  • 非常短小

限制

不能有构造方法

不能定义任何静态成员变量和成员方法

不能收public protected private static修饰

 

 

 

静态嵌套类

 

[展开全文]

抽象类(代表一个抽象概念的类)

没有具体实例对象 不能用new 实例化

贾秀师傅 abstract

可包含常规类能包含的任何东西

可包含抽象方法 (只有方法声明 没有方法实现)

父类是抽象类 子类不是抽象类的话 则要补全父类所有的抽象方法体

 

abstract class  类名{

}

 

特征 :

  • 类层次中较高层次的概括 作用是让其他类来继承它的抽象化特征
  • 抽象类中可以包括被他的所有子类共享的公共行为
  • 抽象类可以包括被它所有子类共享的公共属性
  • 在程序中不能用抽象类作为模板创建对象
  • 在用户生成实例时 强迫用户生成更具体的实例 保证代码安全性

 抽象方法 

  • 只有方法头 没有方法体和操作实现
  • 具体实现由当前的不同子类在他们各自方法体重完成
  • 抽象方法只存在于 抽象类

优点

  • 所有子类使用相同方法头 
  • 强迫子类完成指定行为 规定子类实现标准行为
[展开全文]

方法覆盖(override 方法重写) 

子类方法覆盖 父类的方法

java多态性的另一种形式(动态多态)

子类预付类有相同的方法 但实现不同

 

方法覆盖的 规则

子类方法不能缩小弗雷方法的访问权限

子类不能抛出比父附类方法 更多的异常

父类的非静态方法 不能被子类覆盖为静态方法

不能被覆盖的方法 private final static修饰的方法

 

[展开全文]

方法重载(overload)

java类中存在同名方法 但参数声明不同 

是java多态性的最终形式(静态多态)

不同参数列表 不同方法实现

调用时通过传递的参数的个数、类型决定具体使用那个方法

[展开全文]

变量作用范围(变量的有效范围)

--变量在程序代码中的作用区域

  • 变量作用范围 决定变量的生命周期(声明变量 分配内存 使用变量 释放内存 清除内存)
  • 变量 声明位置 决定变量作用范围
  • 成员变量 在类中声明 作用于整个类
  • 方法内生命的局部变量 作用一整个方法
  • 方法语句块生命的局部变量只在块内有效{}
[展开全文]

类的定义

构成 (类头 类体)

[public] [abstract|final]+ class + 类名

[extends 父类名称]

[implements 接口名称类表]

{

类体定义

}

 

  • class 

声明一个类

  • extends

public class sun extends father

sun从father派生而来

  • implements

声明类要实现某些接口 接口的名字写在implements之后

头部修饰符

可以有多个 用来限定类的使用方式

不能互斥

public 公有类

abstract 抽象类(不能创建对象)与final互斥

final 终结类(不能派生子类)与abstract互斥

类体定义

变量成员声明及初始化(可以有多个)

方法声明及方法体(可以多个)

[展开全文]

结构化程序设计 

  • 若干个程序模块 都可以为 子程序 或者 函数
  • 数据与功能分离 代码难于维护复用

面向对象 程序设计

  • 基本组成单位--类
  • 运行时 由 类生成对象 对象是面向对象程序的核心
  • 对象之间通过发送消息进行通信 互相协作完成相应功能

 对象 

现实中

万事万物接对象

都具有各自属性 对外界呈现各自行为

程序中

一切皆对象

都具有标识(identity)属性和行为(方法)

通过一个或者多个变量来保存其状态

通过方法(method)来实现其行为

 

  • 将属性行为 相同或相似的 对象归为一类
  • 类可以看成对象的抽象 黛比饿哦此类对象所具有的的共有属性和行为
  • 在面向对象程序设计中 每一个对象都属于某个特定得类
  • 在程序中 对象是通过一种抽象的数据类型来描述的,这种抽象数据类型成为 Class
  • 一个雷是对以类对象的描述 类是构成对象的模板
  • 对象是类的具体事例

特征 

更符合人类认识现实世界的思维方式

已成为程序设计的主流方向

涉及的主要概念

抽象

忽略问题中与当前目标无关的方面 以便更充分的注意与当前目标有关的方面

软件开发中所使用的抽象 (过程抽象、数据抽象)

封装

是一种信息隐藏技术

利用抽象数据类型将数据和基于数据的操作封装在一起

用户只能看到对象封装界面信息 内部细节对用户隐蔽

封装的本身目的将对象的使用者和设计者分开使用者无需知道行为实现的细节 只需使用设计者提供的消息来访对象

继承

试着新的类获得已有类(称为超类、基类、父类)的属性和行为,称新类为已有类的派生类(子类)

在继承过程中派生类集成了基类的特性,包括方法和实例变量

派生类也可修改继承的方法好与偶增加新的方法,使之更适合特殊需要

有助于解决软件可重用性问题 降低编码维护的工作量

多态

一个程序中同名的不同方法共存

主要通过自雷对付类方法的覆盖来实现

不同类的对象可以影响同名方法 具体方法实现并不同

是语言具有灵活 抽象 行为给共享 代码共享的有事 解决了应用程序中方法同名的问题

[展开全文]

break 

终止循环语句

强行跳出 

标号跳转

跳出标号标定的语句块

[展开全文]

while  和 do while 的区别

do-while至少执行一次

[展开全文]