20天jvava(12)

corejava day07 - 内部类
2011/8/1
=========================
1.复习day01-day6的内容
1)day01
什么是面向对象?软件过程的方法论,类,对象,问题域...
面向对象的特征:抽象、封装、继承、多态
类和对象的关系:类是模板,是从问题域中抽象出来的实体
对象是类的个体,对象是类的实例
如何定义类:区分公有类(public)和非公有类
[public] class 类名{
public static final 类型 常量名称=值;
[public protected private] 类型 变量;//属性
static变量;
static{
}//静态代码块
[public protected private][static]
返回值类型 方法名称([参数列表]){
//方法体,return语句
}
创建对象: Node node = new Node(2,3);
对象的创建过程:分配空间、初始化属性、调用构造方法
2)day02
a.继承:子类继承父类
特点:子类继承父类的属性和方法,
子类可以扩展自己的属性和方法
子类可以重写父类的方法
class SubClass extends ParentClass{}
访问级别:public、protected、[default]、private
JavaBean规范:无参构造方法、属性私有、提供setter和getter方法
super的使用 <-> this
b.多态:通过向上造型使一个类在运行时具有动态的行为
父类 引用变量 = new 子类(..);
抽象类 引用变量 = new 子类(..);
接口 引用变量 = new 实现类(..);
c.向下转型:大类型->小类型。只是引用类型的变化,对象没变
instanceof:判断对象是否为某一个类型
d.Object类:toString() - 默认形式 类名@hashcode
boolean equals(Object)
int hashCode()
3)day03
a.static关键字:修饰成员变量、代码块、方法,
不能修饰局部变量
private static int num =1;
static{
num = num *100;
}
private static void swap(int[] arr,int m,int v){
}
静态变量是在JVM第一次加载类的时候一次性分配空间的。
静态块是JVM在第一次加载类的时候自动运行的。
静态块和静态方法内不能使用实例(非静态)成员,与对象无关。
静态变量和静态方法的使用:类名.静态变量
类名.静态方法
b. final关键字:修饰类、方法、成员变量、局部变量、方法参数
c. abstract关键字:修饰类和方法
抽象方法没有方法体,即没有具体的实现
抽象类不能直接实例化,但可以定义引用变量
d.接口:只包含抽象方法的抽象类可以演变为接口,
接口体现了系统的功能
public interface 接口名称{
常量的定义;
抽象方法的定义;
}
}
4)day04
a.String类 - 封转char[]和相关的操作,自定义MyString
代表一个unicode字符序列,
功能: length()、indexOf()、substring()、concat()、
toUpperCase、toLowerCase()、
toCharArray()
字面量:放在""中,是一个String实例,
JVM在编译期对字面量进行优化,
尽可能从池中获取字面量
字符串的不变性:字符串变量一旦定义,内容不能再改变。
一旦改变了字符串的内容,就会生成一个新的 String对象
b.StringBuffer类:提供字符串的缓冲区,提高字符串的操作效率
常用方法:length()、indexOf、substring()、
append()、delete()、insert()、
replace()
c.StringBuilder类:JDK1.5后出现的,非线程安全,速度稍快
5)day05-day06:集合API
a.Java中有三种:线性表、集、散列表
线性表List的特点:元素按次序存放,元素可以通过序号访问
集Set的特点:元素不重复,元素无序
散列表Map的特点:按键值对的形式存储数据,元素无序
b.Collection基接口:定义了集合的通用操作
方法:size()、isEmpty()、add()、addAll()、
remove()、removeAll()、contains()、
containsAll()、toArray()、iterator()
c.List接口:线性表接口,从Collection接口继承
扩展的方法:add(int,Object),indexOf()、
lastIndexOf(),get(int)
d.Set接口:表示”集“,存储不重复的元素,
没有扩展的方法
SortedSet子接口:表示排序的"集"
扩展方法:first()、last()、headSet()、
tailSet()、subSet()
e.Map接口:散列表接口,以key/value方式存储数据,元素是无序的,
key不能重复,value可以重复
方法:size(),isEmpty()
put(key,value),remove(key)
get(key),containsKey(key)
containsValue(value)
keySet() - 返回key的Set集合
values() - 返回value的Collection集合
entrySet() - 返回Map.Entry的Set集合
SortedMap接口:是Map的子接口,是一个排序的Map
扩展的方法:firstKey(),lastKey,
headMap(),tailMap(),subMap()
f.实现类
List - ArrayList,Vector,LinkedList
Set - HashSet
SortedSet - TreeSet
Map - HashMap,Hashtable
SortedMap - TreeMap
g.泛型 - 具备类型参数的类称为泛型类
优点:类型安全,避免类型转换
2.内部类
1)什么是内部类?在一个类的内部定义的类称为内部类。
将两个相关的类组织在一起便于访问。
内部类所在的类称为外部类。
内部类公有4种:静态内部类,成员内部类,
局部内部类,匿名(内部)类
2)静态内部类:定义在类体中,使用static修饰(并不常见)
特点:静态内部类中既可以定义静态成员,
也可以定义非静态成员。
静态内部类只能访问外部类中的静态成员。
访问外部类的非静态成员需要使用外部类的实例。
静态内部类使用类名直接访问。
3) 成员内部类:定义在类中,不使用static修饰,非常常见
特点:成员内部类中只能定义非静态成员.
成员内部类可以直接使用外部类的任何成员。
外部类需要通过内部类的实例来访问内部类。
成员内部类的实例需要使用外部类的实例来创建。
课堂练习1:定义迭代器Iterator
课堂练习2:贪吃蛇 - 显示,随机生成蛇身,移动,食物
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值