数组列表(ArrayList)
数组列表(ArrayList)
是用来存储可变容量的数组,创建一个ArrayList对象默认的大小为10,如果我们往这个容器中放值,放入值的个数如果超过了默认值(指定的大小),ArrayList会自动的改变数组的长度存放值,不会出现数组下标越界异常
创建的一个ArrayList数组,如果没有给其指定类型,那么ArrayList数组可以用来存放所有类型的数据。
java.lang.Object
java.util.AbstractCollection<E>
java.util.AbstractList<E>
java.util.ArrayList<E>
ArrayList 这个类是Object类的子类,ArrayList这个类是List接口的一个实现类
创建一个ArrayList对象的语法结构
ArrayList[<类型>] 对象名 = new ArrayList[<类型>](); |
创建的对象如果没有指定类型可以存放所有类型,如果指定了类型,则只能存放指定类型的数据
package com.ibm.arraylist;
import java.util.ArrayList;
public class ArrayListDemo {
public static void main(String[] args) {
//创建一个ArrayList对象al
ArrayList al = newArrayList();
al.add(12);
al.add("cw");
al.add(true);
al.add(new String());
//创建一个可变长的数组对象只能存放String类型
//ArrayList<String>表示是泛型用来规定可变长的数组中能存放数据的类型
//如果用泛型规定,那么其他类型的数据就不能放入到可变长的数组中去
ArrayList<String> als = new ArrayList<String>();
als.add("cw");
//als.add(14);
//als.add(false);
//als.add(newDate());
}
}
ArrayList常用方法:
package com.ibm.arraylist;
import java.util.ArrayList;
public class ArrayListDemo2 {
public static void main(String[] args) {
//创建两个ArrayList对象
ArrayList al1 = newArrayList();//
al1.add(1);
al1.add(3);
al1.add(5);
al1.add(7);
al1.add(9);
ArrayList al2 = newArrayList();//
al2.add(2);
al2.add(4);
al2.add(6);
al2.add(8);
al2.add(2);
System.out.println(al2.size()+"=========");
//
//boolean add(E e)
// 将指定的元素添加到此列表的尾部。
//void add(int index, E element)
// 将指定的元素插入此列表中的指定位置。
//boolean addAll(Collection<? extends E> c)
// 按照指定 collection 的迭代器所返回的元素顺序,将该 collection 中的所有元素添加到此列表的尾部。
//boolean addAll(int index, Collection<? extends E> c)
// 从指定的位置开始,将指定 collection 中的所有元素插入到此列表中。
//
// 在al2中的4后面加入一个数字5
al2.add(2,5);
al2.add(2,al1);//2 4 [1, 3, 5, 7, 9] 5 6 8
al2.addAll(al1);
System.out.println(al2.size());
for(int i=0 ; i<al2.size();i++){
System.out.print(al2.get(i)+" ");
}
//移除可变长数组中的所有元素
// al2.clear();
// System.out.println("_"+al2.size());
//clone方法
Object obj = al2.clone();
//将obj强制转换成ArrayList对象
ArrayList al3=(ArrayList)obj;
System.out.println(al3.size()+"<><><>");
//contains方法
boolean flag = al2.contains(8);
System.out.println(flag);
//indexof方法
int index=al2.indexOf(2);
System.out.println(index);
//isEmpty判断可变长的数组是否为空
boolean flag1 = al2.isEmpty();
System.out.println(flag1);
//remove方法
//移除al2中6这个元素值
al2.remove(2);//2代表的是6在al2中这个数组的索引
for(int i=0 ; i<al2.size();i++){
System.out.print(al2.get(i)+"---- ");
}
//要将int这个简单数据类型当做对象,那么就应该采用int类型的封装类封装成一个对象传递
boolean flag2 = al2.remove(new Integer(2));
System.out.println(flag2);
for(int i=0 ; i<al2.size();i++){
System.out.print(al2.get(i)+"---- ");
}
//removeRange方法是受保护的方法 只能在ArrayList这个类中使用
//set方法
al2.set(1,16);
System.out.println("\n");
for(int i=0 ; i<al2.size();i++){
System.out.print(al2.get(i)+"---- ");
}
//将a12这个可变长的数组转换成一个定长的数组
Object[] obj1 = al2.toArray();
for(int i=0;i<obj1.length;i++){
System.out.println(obj1[i]);
}
System.out.println("===========");
String str = "abcdefg";//aBcdefg
char[] cs = str.toCharArray();
String strs = "";
for(char s:cs){
if(s=='b'){
s='B';
}
strs +=String.valueOf(s);//将char的值转换成String类型
}
System.out.println(strs);
// System.out.println( str.toUpperCase());
}
}
通讯录:
采用可变长数组当做存储数据的容器,对这个对象进行操作
可变长的数组中存放的东西是联系人对象
1 注册
就是往可变长的数组中放入一个对象,注册几个就往其中放入多少个
2 登陆
就是判断你要登陆的用户和密码在可变长的数组存不存在那个对象,如果存在则让你登陆,不存在则不让你登陆
登陆成功之后才能看到 查看、删除、修改、注册功能
登陆不成功,则只能看到登陆、注册功能
3 查看
查看所有的联系人的信息()
4 删除
根据id删除
5 修改
根据id修改
6 查找
根据id查找
类的继承:
子类继承父类,通过extends关键字来继承
class + 子类 extends
继承之后,
* 子类就继承了父类中的非private修饰的属性或者方法
* 继承时所用的关键字是extends
* 构造器不能够被继承过来
* 所有类的父类都是object类
* 一个子类只能有一个父类,但是一个父类可以被多个子类所继承
* 从子类的角度看 子类 ——继承——》 父类
从父类的角度看 子类《——派生—— 父类
Java.lang.Object
继承的语法格式
访问修饰符 class 子类名 extends 父类名{
}
package com.ibm.extend.second;
publicclass Father { //父类
private String name;
publicvoid setName(String _name){
name = _name;
}
public String getName(){
returnname;
}
publicvoid show(){
System.out.println("我是父类的show方法");
}
publicvoid select(){
System.out.println("我是父类的select方法");
}
}
package com.ibm.extend.second;
publicclass Father { //父类
private String name;
publicvoid setName(String _name){
name = _name;
}
public String getName(){
returnname;
}
publicvoid show(){
System.out.println("我是父类的show方法");
}
publicvoid select(){
System.out.println("我是父类的select方法");
}
}
ToString方法:
在Object类中,定义了一个toString()方法,用于返回一个表示这个对象的字符串
覆盖该方法能用来提供某对象的自定义信息
* 在所有类的父类Object类,有一个ToString方法,这方法用于表示该类对象的字符串表示形式
* 如果将简单数据类型用封装类型表示,可以使用toString方法将该封装的对象转换成String型
Eg: Integeri=12;
正常情况下:
System.out.println(i+12); --》结果是 :24
使用toString方法将i转换成String
System.out.println(i.toString()+12);à 结果是1212
* 覆盖toString方法可以自定义该对象的表示形式
父类:
Public classFather{
//父类覆盖了object类中的toString方法
@override
Public StringtoString(){
Return “这里你想怎么写就怎么写”;
}
}
返回回来的字符串,就是你自定义的该对象的表示形式
package com.ibm.extend.second;
public class Father {//父类
//将Object类中toString方法覆盖
public String toString(){
return"姓名:"+name;
}
}
package com.ibm.extend.second;
public class Test {
public static void main(String[] args) {
//toString方法
Father f = newFather();
f.setName("cw");
System.out.println(f);
//采用toString方法将简单数据类型转换成String型
int m = 12;
String str = Integer.toString(m);
//将char转String
char c = 's';
String cs = Character.toString(c);
}
}
访问控制
访问控制的限制程度从高到低如下图所示。注意,Default不是一个修饰符,它只是用来表示一种不加任何修饰符时的状态。
访问范围: public > protecte > default >private
访问修饰符,可以修饰属性 、方法 、构造器
如果将构造器用private修饰,理论上可以,实际上也可以,但是如果你这样修饰,你这个类就没有必要存在
在同一个类中:
private String name;
protected String pass;
public String grade;
String num;
publicstaticvoid main(String[]args) {
VisitDemo vd=new VisitDemo();
//在当前类中,创建的对象可以调每个修饰符修饰的属性
}
创建的对象能够调到所有的属性
同一个包中不同的类中:
除了private修饰的属性外,其他的属性是可以都调到
同一个工程中,不同的包中:
子类继承了父类,那么在子类中创建子类的对象的时候,创建的对象只能调到public 和protected修饰的属性
在同一个工程中:
能够调到所有用public修饰的属性