文章目录

一、对象和类的概念1.对象和类的含义2.对象和类的理解3. 对象的解析4. oop特性5. 程序分析6. 成员变量和成员函数7. 对象初始化

二、对象交互1. 对象交互案例2. 访问属性3. 包4. 类变量和类函数

三、容器1. 顺序容器——泛型容器类ArrayList2. 对象数组3. 集合容器HashSet4. 散列表HashMap

四、总结1. 对象和类的概念2. 对象交互3. 容器

一、对象和类的概念

1.对象和类的含义

2.对象和类的理解

3. 对象的解析

4. oop特性

5. 程序分析

事例

创建对象 让对象做事 不同的对象

用同一类制造的对象是不同的对象

6. 成员变量和成员函数

成员变量的含义

函数与成员变量

this

调用函数

本地变量与成员变量

7. 对象初始化

定义初始化

构造函数

函数重载

二、对象交互

1. 对象交互案例

创建Display类: Display类创建了一个显示器,使值(value)达到一定限制(limit)时归零; limit需要通过传参获取,使Display类可以符合时钟的时和分两个对象 public class Display {

private int value = 0;

private int limit = 0;

//构造函数,得到限制条件

public Display(int limit) {

this.limit = limit;

}

//增加value值和清零

public void increase() {

value++;

if(value == limit) {

value = 0;//达到限制value清零

}

}

//得到现在的value

public int getValue() {

return value;

}

public static void main(String[] args) {

// TODO Auto-generated method stub

Display d = new Display(24);//每24清零

for(;;) {

d.increase();

System.out.println(d.getValue());

}

}

}

创建Clock类: Clock类的作用是统合通过Dispaly类创建的两个对象——hour和minute public class Clock {

private Display hour = new Display(24);//创建小时和分钟的对象

private Display minute = new Display(60);

public void start() {

while(true) {

minute.increase();//分钟+1

if(minute.getValue() == 0) {//分钟达到60

hour.increase();

}

System.out.printf("%02d:%02d\n", hour.getValue(), minute.getValue());//输出时分

}

}

public static void main(String[] args) {

// TODO Auto-generated method stub

Clock clock = new Clock();

clock.start();

}

}

2. 访问属性

封闭的访问属性

开放的访问属性

3. 包

创建一个新的包

包就是用来管理java文件的文件夹 java文件在包的下级目录中

其它包里的类的使用

在一个包里面使用另一个包里面的类 方法一: 用import插入另一个包里面的类 方法二: 不使用import插入,而是在使用另一个包里面的类时,使用全称(加上另一个包的名字) 方法三: 用通配符 * 来插入另一个包里面的所有类 考虑到重名的情况,不建议使用 *

包里面的包

在包里面也可以创建一个包在插入包里面的包的类时,需要将所有层次的包全部依次插入

4. 类变量和类函数

类变量

类函数

类变量和类函数只会初始化一次,也就是在类装载的时候初始化一次

三、容器

1. 顺序容器——泛型容器类ArrayList

记事本案例

接口设计

容器类

用来存放任意数量的对象

代码

import java.util.ArrayList;

public class Notebook {

private ArrayList notes = new ArrayList();//范型类

//添加记录

public void add(String s)

{

notes.add(s);//ArrayList里的函数add(String),用来向ArrayList里面存入字符串

}

public void add(String s, int location)

{

notes.add(location, s);

//ArrayList里的函数add(int, String),用来向ArrayList的位置location处里面存入字符串

//如果location位置有其它数据,则插入该位置,原数据集体向后移动一位

}

//得到记录条数

public int getSize()

{

return notes.size();//ArrayList里的函数size(),返回ArrayList的长度,类型为int

}

//得到储存的记录

public String getNote(int index)

{

return notes.get(index);//ArrayList里的函数get(),可以根据索引返回ArrayList里面

//存放的数据,此处返回String类型

}

//删除记录

public String removeNote(int index)

{

return notes.remove(index);//ArrayList里的函数remove(int),可以根据索引删除ArrayList

//里面存放的数据,返回删除的数据String

//删除该数据后,该数据后面的数据依次前进一位

}

//列出所有记录

public String[] list()

{

String[] a = new String[notes.size()];

// for(int i = 0; i < a.length; i++)

// {

// a[i] = notes.get(i);

// }

notes.toArray(a);//ArrayList里的函数toArray(a),自动将ArrayList里面的数据填入a

return a;

}

public static void main(String[] args) {

// TODO Auto-generated method stub

Notebook nb = new Notebook();

nb.add("first");//只能依次按顺序添加

nb.add("second");

nb.add("third", 1);

System.out.println(nb.getSize());

System.out.println("_______");

for(int i = 0; i < nb.getSize(); i++) {

System.out.println(nb.getNote(i));

}

System.out.println("_______");

System.out.println("删除了" + nb.removeNote(0));

System.out.println(nb.getNote(0));//测试现在notes的0处的数据

System.out.println("_______");

String[] a = nb.list();

for(String s : a)

{

System.out.println(s);

}

}

}

ArrayList的操作(有些返回类型是根据ArrayList的元素类型改变,此处均设置为String)

add(String s) : ArrayList里的函数add(String),用来向ArrayList里面存入字符串add(int location,String s ) : ArrayList里的函数add(int, String),用来向ArrayList的位置location处里面存入字符串 (如果location位置有其它数据,则插入该位置,原数据集体向后移动一位)size(): ArrayList里的函数size(),返回ArrayList的长度,类型为intget(int index): ArrayList里的函数get(int),可以根据索引返回ArrayList里面存放的数据,此处返回String类型remove(int index): ArrayList里的函数remove(int),可以根据索引删除ArrayList里面存放的数据,返回删除的数据String (删除该数据后,该数据后面的数据依次前进一位)toArray(a): ArrayList里的函数toArray(String[] a),自动将ArrayList里面的数据填入a

更多操作请查看:Java ArrayList | 菜鸟教程

2. 对象数组

对象管理者

对象数组中的每个元素都是对象的管理者而非对象本身

for-each

基本类型的数组运用for-each循环不能改变数组本身,因为for-each每轮循环的都是数组值的复制品对象数组运用for-each循环能改变数组本身,因为for-each每轮循环的是对象数组的真正的对象

3. 集合容器HashSet

原理同顺序容器

定义:HashSet s = new HashSet();集合容器与顺序容器不同的是: 集合容器无排列顺序,不能用get(int index)获取集合容器的元素,但可以用contains(String)来判断元素是否存在,返回true/false

对比输出:

ArrayList a = new ArrayList();

a.add("first");

a.add("second");

a.add("first");

// for(String k : a)

// {

// System.out.println(k);

// }

System.out.println(a);//两个容器都可以直接输出

System.out.println("----------");

HashSet s = new HashSet();

// s.add("first");

s.add("second");

s.add("first");

// for(String k : s)

// {

// System.out.println(k);

// }

System.out.println(s);

更多操作请查看:Java HashSet | 菜鸟教程

顺序容器和集合容器可以直接输出容器里面的内容

原理: ArrayList和HashSet也实现了toString函数,可以直接输出容器里面的内容

4. 散列表HashMap

HashMap 是一个散列表,它存储的内容是键值对(key-value)映射 HashMap 同HashSet,是无序的,即不会记录插入的顺序。 事例:输出钱币对应的英文名称 private HashMap coinNames = new HashMap();

//HashMAp(key, value),以下HashMap方法均用对应的键和值替换

//Integer不能是Int,因为容器里面的所有类型必须是对象

public Coin() {

coinNames.put(1, "penny");//put(Integer, String)方法,向HashMap中存入数据

coinNames.put(10, "dime");

coinNames.put(25, "quarter");

coinNames.put(50, "half-dollar");

coinNames.put(50, "五毛");//Integer相同,会被替换

System.out.println(coinNames.keySet().size());//keySet()方法,

//返回hashMap中所有Integer组成的集合视图(HashSet)。

System.out.println(coinNames);//HashMap也可以直接输出

//遍历HashMap

for(Integer k : coinNames.keySet()) {

String s = coinNames.get(k);

System.out.println(s);

}

}

public String getName(int amount) {

if(coinNames.containsKey(amount))//containsKey(Int)方法,检测HashMap中

//是否存在Inteter对应的String,返回true/false

return coinNames.get(amount);//get(Int)方法,返回HashMap中对应的String,没有则返回null

else

return "Not Found";

}

public static void main(String[] args) {

// TODO Auto-generated method stub

Scanner in = new Scanner(System.in);

int amount = in .nextInt();

Coin coin = new Coin();

String name = coin.getName(amount);

System.out.println(name);

}

更多操作请查看:Java HashMap | 菜鸟教程

四、总结

1. 对象和类的概念

用类制造对象

定义类

成员变量和成员函数

对象初始化

2. 对象交互

访问属性

类变量和类函数

3. 容器

顺序容器ArrayList 集合容器HashSet

用法几乎与顺序容器一样,只是集合容器里面不能有重复的值以及没有顺序排列直接输出内容的原理:

散列表HashMap 无

精彩内容

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: