1、作业解析
1.将如下字符串进行拆分
TOM:20|Jack:22|Rose:24
打印成如下形式:
姓名:tom,年龄:20岁
姓名:Rose,年龄:24岁
2.编写一个类,提供一个函数实现字符串反转功能,比如传入字符串“abcdefg”返回字符串“gfedcba”。
public class Homework0803 { public static void main(String[] args) { // splitStr(); reverseStr("hellolemon"); } //作业一: public static void splitStr(){ String str = "TOM:20|Jack:22|Rose:24"; String[] arr1 = str.split("\|"); for (String keyAndValue : arr1) { String[] arr2 = keyAndValue.split(":"); System.out.println("姓名:"+arr2[0]+",年龄:"+arr2[1]); } } //作业二: public static void reverseStr(String str){ String afterStr = ""; char[] arr = str.toCharArray(); for (int i = 0; i < arr.length; i++) { afterStr = arr[i]+afterStr; } //p y t h o n //p //yp //typ //... System.out.println(afterStr); } }
2、抽象类-父类abstract,相当于模板,不能实例化,不能创建对象,没有方法体{},所以子类要实现父类的抽象方法
子类可以继承抽象类,但必须实现抽象类中的全部抽象方法
抽象方法
- 只声明而未实现的方法,即不能有方法体
- 使用abstract修饰符
语法
访问修饰符 abstract class 类名{ public abstract void call(); ... }
作用
从多个具有共性的类中抽取出抽象类,抽象类作为子类设计的通用模板,避免子类设计的随意性
抽象父类提供子类的通用方法,将方法交由子类去实现
关键字:abstract,extend
3、接口-接口方法都是抽象的,如果接口中的方法你不写abstract,Java自动化的补上
接口:规则,能力
- 只能有抽象方法,一个类可以同时实现多个接口
- 必须重写所有抽象方法
- 接口与接口是继承,接口与类是实现
- 接口是对继承的补充
- 关键字:interface implements
4、抽象类和接口的比较
5、代码示例
6、ArrayList-数组-八大数据类型的引用类型
6.1 八大基本数据类型都有对应的引用类型 --包装类
- int -> Integer
- char -> Character
- boolean ->Boolean
- float ->Float
- double ->Double
- byte ->Byte
- short ->Short
- long ->Long
容器支持的数据类型:引用类型 、不能支持基本的数据类型
容器特点
- 长度可变数组,提供很多方便的方法
- 有序(可以通过索引来访问)、可重复
- 泛型:规定集合存储的数据类型。
6.2ArrayList常用Api
- 创建list对象-ArrayList list= new ArrayList();
- 添加数据-list.add(…);
- 取出数据-list.get(index);
- 移除数据-remove(…);
- 获取list集合的大小-size();
- 判空函数-isEmpty(…)
- 判断是否包含某数据-contains(…)
- 修改某个位置上的数据-set(…)
迭代Arraylist
1.通过for循环来迭代
for(int i=0; i<list.size(); i++){ System.out.println(list.get(i)); }
2.通过增强式循环(foreach)方式来迭代
for(String str : list){ System.out.println(str); }
6.3 代码
import java.util.ArrayList; public class ArrayListTest { public static void main(String[] args) { //1、创建ArrayList对象 //泛型 -- 规定里面存储的数据类型,同时存储一种类型 ArrayList<String> arrayList = new ArrayList<String>(); //2、存储数据的 add 添加 arrayList.add("hello"); arrayList.add("lemon"); arrayList.add("java"); arrayList.add("python"); // this is lemon class //3、取得数据 /*System.out.println(arrayList.get(0)); System.out.println(arrayList.get(1)); System.out.println(arrayList.get(2)); System.out.println(arrayList.get(3));*/ //4、remove 移除数据 // arrayList.remove("lemon"); //arrayList.remove(1); /*System.out.println(arrayList.get(0)); System.out.println(arrayList.get(1)); System.out.println(arrayList.get(2)); //IndexOutOfBoundsException 越界 System.out.println(arrayList.get(3));*/ //5、获取大小 size //System.out.println(arrayList.size()); //6、判断集合是否为空 //System.out.println(arrayList.isEmpty()); //7、clear 清除集合中的全部数据 /*arrayList.clear(); System.out.println(arrayList.isEmpty()); System.out.println(arrayList.size());*/ //8、contains 判断是否包含某个值 //System.out.println(arrayList.contains("lemon")); //9、set 修改值 //arrayList.set(1,"test"); //System.out.println(arrayList.get(1)); //怎么一次性把集合当中的全部数据输出 //1、foreach 增强式for循环 /*for(String arr : arrayList){ System.out.println(arr); }*/ //2、普通for循环 /*for(int i=0; i<arrayList.size(); i++){ //int position = i+1; System.out.print("数据所在的位置:"+(i+1)); System.out.println(" 对应的值:"+arrayList.get(i)); }*/ } }
7、HashSet-要用到Iterator
容器支持的数据类型:引用类型
特点
- 数据排列:无序 不能够通过索引来访问里面的数据
- 数据重复性:不可重复
7.1 HashSet常用Api
- 创建set对象-HashSet set = new HashSet();
- 添加数据-add(…)
- 删除数据-remove(…)
- 获取集合的大小-size()
- 判断是否包含某数据-contains()
- 判断集合是否为空-isEmpty()
迭代HashSet
1.通过foreach
for(String arr : hashSet){ System.out.println(arr);
2.通过迭代器
Iterator<String> ite = hashSet.iterator(); while(ite.hasNext()){ String ele = ite.next(); System.out.println(ele); }
7.2 代码
import java.util.HashSet; import java.util.Iterator; public class HashSetTest { public static void main(String[] args) { //1、创建HashSet对象 HashSet<String> hashSet = new HashSet<String>(); //2、添加数据 add hashSet.add("hello"); hashSet.add("lemon"); hashSet.add("java"); hashSet.add("python"); hashSet.add("lemon"); //3、size获取到长度 //System.out.println( hashSet.size()); //4、remove 移除掉数据 //hashSet.remove("lemon"); //System.out.println( hashSet.size()); //5、判断是否包含某数据 //System.out.println(hashSet.contains("pythn")); //6、isEmpty 判断集合是否为空 //System.out.println(hashSet.isEmpty()); //7、清除集合中的全部数据 //hashSet.clear(); //System.out.println(hashSet.isEmpty()); //遍历获取全部的数据 //1、foreach循环 /* for(String arr : hashSet){ System.out.println(arr); }*/ //2、普通的for循环???索引 -no //2、迭代器 -- 对集合中的数据进行循环迭代 /*Iterator<String> ite = hashSet.iterator(); while(ite.hasNext()){ System.out.println(ite.next()); }*/ } }