补充:length vs length() vs size()
1 java中的length属性是针对数组说的,比如说你声明了一个数组,想知道这个数组的长度则用到了length这个属性.
2 java中的length()方法是针对字符串String说的,如果想看这个字符串的长度则用到length()这个方法.
3.java中的size()方法是针对泛型集合说的,如果想看这个泛型有多少个元素,就调用此方法来查看!
00. 包装类
- 就是基本数据类型的对应类:
- 我们常见的:基本类转为包装类。
int i = 10; Integer i1 = i;
,实际上是Java虚拟机
自动用这句话Integer i1 = Integer.valueOf(i);
帮你实现了。 - 常见的:包装类转为基本类。
int i2 = i1;
,实际上Java虚拟机自动用int i2 = i1.intValue();
帮你实现了。
01. 工具类
- 工具类不应该创建对象才能使用。即,可以
直接使用类中的属性和方法
,一般声明为静态
的。 - 提供的属性和方法都是公共的。
02. 比较
- 所有的基本数据类型用==
- 所有的引用类型用equals()
02.0 == (数值/地址)
- 基本数据类型,==比较的是数值
int i =10;
double j = 10.0;
System.out.println(i==j);
- 引用数据类型,== 比较的是内存地址
String s ="abc";
String str = "abc";
System.out.println(s==str);
02.1 equals()
- String类中的equals()是被重写过的,所以比较内容
String s = "abc";
String s1 = new String("abc");
System.out.println(s.equals(s1);
- 其他自定义的类的equals(),使用的是Object中的,他是使用==,所以比较的是地址,如果比较内容,需要重写。
03. 集合
- 导包:
import java.util.*;
- 遇到对数量不确定的数据处理时,需要用集合类。
- 数组虽然能容纳数据,但是长度每次一旦申明后就固定了,没有集合对象方便。
03.0 两大体系
- 单一数据体系:
Collection接口
- 成对出现的数据体系:即键值对数据。
Map接口
03.1 Collection接口
List
:按照插入顺序保存数据,数据可以重复的- 具体实现类:
ArrayList
,LinkedList
- 具体实现类:
Set
:集,无序保存,数据不能重复。- 具体实现类:
HashSet
- 具体实现类:
Queue
:队列(先进先出)- 具体实现类:
ArrayBlockingQueue
- 具体实现类:
03.2 Map接口
- 具体实现:
HashMap
,Hashtable
03.3 ArrayList
03.3.0 常用方法1
导包:import java.util.ArrayList;
创建:ArrayList list = new ArrayList();
打印:System.out.println(list);
增加数据:add()
// 集合中没有任何数据,会创建长度为10的数组存储zhangsan
list.add("zhangsan");
list.add("lisi");
list.add("wangwu");
获取长度:size()
list.size();
获取索引位置的数据:get()
list.get(1); //获取下标为1的数据
遍历ArrayList
方法1:
for(int i=0; i<list.size(); ++i){System.out.println("结合中的数据:"+list.get(i));
}
方法2:
for(循环对象:集合){}
for(Object obj : list){System.out.println(obj);
}
修改数据:set()
返回的值是修改前的值。下面的oldVal值为"zhangsan"
list.add("zhangsan");
list.add("zhangsan");
list.add("wangwu");
Object oldVal = list.set(1, "lisi");
System.out.println("修改前的值:"+oldVal);
删除数据
返回的值是删除前的值。下面的removeVal值为"lisi"
Object removeVal = list.remove(1); //删除下标为1的数据
System.out.println("删除的值" + removeVal);
03.3.1 常用方法2
add()方法可以指定位置添加数据
ArrayList list = new ArrayList();
list.add("zhangsan");
list.add("lisi");
list.add("wangwu");
// 在下标为1的位置插入数据
list.add(1,"zhaoliu");
addAll()可插入新的集合
ArrayList otherList = new ArrayList();
otherList.add("1");
otherList.add("2");
otherList.add("3");
list.addAll(otherList);
clear()清空所有数据
list.clear();
removeAll() 清空指定的集合
ArrayList list = new ArrayList();
list.add("zhangsan");
list.add("lisi");
list.add("wangwu");ArrayList otherList = new ArrayList();
otherList.add("1");
otherList.add("2");
otherList.add("3");
list.addAll(otherList); //往list中插入其他集合otherList
//删除list中的otherList
list.removeAll(otherList);
contains() 判断是否含某条数据
ArrayList list = new ArrayList();
list.add("zhangsan");
list.add("lisi");
list.add("wangwu");
System.out.println("lisi");
indexOf() 判断数据首次出现的位置
- 返回首次出现的位置
System.out.println(list.indexOf("zhangsan"));
lastlndexOf() 判断数据最后出现的位置
ArrayList list = new ArrayList();
list.add("zhangsan");
list.add("lisi");
list.add("zhangsan");
System.out.println("zhangsan");
toArray() 集合变数组
Object[] obj = list.toArray();
03.4 LinkedList
- 即,链表集合
03.4.0 常用方法
构建集合对象
LinkedList list = new LinkedList();
增加数据
list.add("zhangsan");
获取数据(getFirst(),getLast() )
下面用例的结果都显示“zhangsan”,侧面反映了First和Last节点和zhangsan节点挂上了。
System.out.println(list.getFirst());
System.out.println(list.getLast());
在节点前面增加数据
LinkedList list = new LinkedList();
list.add("zhangsan");
list.addFirst("lisi");
// 验证
System.out.println(list.getFirst());
System.out.println(list.getLast());
指定位置插入节点
LinkedList list = new LinkedList();
list.add("zhangsan");
list.addFirst("lisi");
list.add(1,"wangwu");
// 验证
System.out.println(list.getFirst());
System.out.println(list.getLast());
System.out.println(list);
获取数据:get()
//获取指定位置的数据
System.out.println(list.get(i));
//遍历list
for(int i=0; i<list.size(); ++i){ System.out.println(list.get(i));
}
//通过元素来遍历
for(Object obj: list){System.out.println(obj);
}
修改数据:set()
LinkedList list = new LinkedList();
list.add("zhangsan");
list.addFirst("lisi");
list.add(1,"wangwu");
//修改数据,将lisi改为zhaosi
list.set(2,"zhaosi");
// 验证
System.out.println(list);
删除数据:remove()
LinkedList list = new LinkedList();
list.add("zhangsan");
list.addFirst("lisi");
list.add(1,"wangwu");
list.remove("wangwu");
System.out.println(list);
03.4.1 常用方法
addAll() 添加集合
LinkedList list = new LinkedList();
list.add("0");
list.add("1");
list.add("2");
LinkedList list1 = new LinkedList();
list1.add("5");
list1.add("4");
list1.add("3");
//
list.addAll(list1);
push() 添加数据,等同于addFirst()
LinkedList list = new LinkedList();
list.add("0");
list.add("1");
list.add("2");
list.push("aaa"); // 添加在第一个位置
pop() 弹出数据,等同于remove()
- remove() 默认是删除第一个数据
LinkedList list = new LinkedList();
list.add("0");
list.add("1");
list.add("2");
list.pop(); // 弹出"0"