本帖最后由 小石姐姐 于 2018-4-20 09:08 编辑
基础班一些常用笔记
Day__05
常用APL
1:
哈希马值
关键字 hashCode():返回对象的哈希码值(内部地址)
2:
Object是所有类的根类基类,所有的类都直接或者间接继承了这个类;
任意一个类都可以直接调用X.getclass来获取地址值;
可以通过静态方法forName()来获取;
格式
Class class=class.forName(全类名);
一个类创建出来的字节码对象都是一样的;
3:
equals
可以重写
public boolean equals( Object o ){
//先比较地址值,如果一样就不用再去比较
if(当前对象==Object o){
return true;
}
调用地址值比较
if(this.getClass()!=o.getClass()){
return false;
}
//先转型,把Object类型转为子类型
类名 o//(对象名)=(类名)o;
if(对象名!=o)
return false;
代码演示:
class A { String name; int age; void A(String naem, int age) { this.name = name; this.age = age; } @Override public boolean equals(Object obj) { //提高代码效率性 if (this == obj) return true; if (obj == null) return false; //提高代码健壮性 if (getClass() != obj.getClass()) return false; //父类转为子类 A other = (A) obj; if (age != other.age) return false; if (name == null) { if (other.name != null) return false; } else if (!name.equals(other.name)) return false; return true; } C:/Users/Administrator/AppData/Local/YNote/data/a1402887564@163.com/79b4100d41c14233a7dadb0aaae25f65/223082de57b84005b80648e952b8a0cd.jpg
C:/Users/Administrator/AppData/Local/YNote/data/a1402887564@163.com/79b4100d41c14233a7dadb0aaae25f65/223082de57b84005b80648e952b8a0cd.jpg
C:/Users/Administrator/AppData/Local/YNote/data/a1402887564@163.com/79b4100d41c14233a7dadb0aaae25f65/223082de57b84005b80648e952b8a0cd.jpg
4:
getClass地址值获取:
三种方法
01
Class class01= 对象名.getClasss();
02
Class class02=Class.forName(" 类全名 ")
需要抛出异常;
5:
数组复制
用System调用
static void array(object arr,int a,object b,int c,int d)
Object arr:源数组.
int a:指定从那个索引开始复制
object b:复制到那个数组;
int c:从那个索引开始接收元素
int d:接受几个元素
代码演示:
int[]array={1,2,3,4,,5};
int[]array1=new int[array.length]
System.array(array,0,arr1,0,array.lentgh)
6:
System类方法时间
构造方法:
Date(): 创建的是一个表示当前系统时间的Date对象
Date(long date ):根据"指定时间"创建Date对象
C:/Users/Administrator/AppData/Local/YNote/data/a1402887564@163.com/cf82c18772074bc9a0d970597a00445f/884f93120add4862a903f87a67d5a035.jpg
7:
构造方法:
simpleDateFormat 变量名=new simpleDateFormat();
simpleDateFormat(String pattern )使用指定模式
代码演示
public static void main(String[] args) throws ParseException { Date date = new Date(); // 创建Date方法 SimpleDateFormat sdf = new SimpleDateFormat("2015年02月02日"); // 赋值时间 String a = sdf.format(date); // 转为String 类型打印 System.out.println(a); Date date1 = new Date(); String p="2001-20-21"; SimpleDateFormat sdf1 = new SimpleDateFormat("yy-MM-dd"); date1=sdf1.parse(p); long date2=date.getTime(); System.out.println(date2); }
C:/Users/Administrator/AppData/Local/YNote/data/a1402887564@163.com/c59d5ed6e2f2449984429c9d54787adc/784af74203a943aeba87b2578376be66.jpg
练习题;
//练习求出你来这个世界上多少天的案例
public static void main(String[] args) throws ParseException { String A="2000-01-01"; String B="2005-01-01"; SimpleDateFormat sdr=new SimpleDateFormat("yyyy-MM-dd"); java.util.Date date= sdr.parse(A); java.util.Date date1=sdr.parse(B); long C=date.getTime(); long D=date1.getTime(); long E=(D-C)/1000/60/60/24; System.out.println(E); }
C:/Users/Administrator/AppData/Local/YNote/data/a1402887564@163.com/16477837b48e420daf54f3ca0d49558f/c0afb99e4ae4492ba316dcba012b2a99.jpg
8:
Calendar
如何把Date日期 转为Calendar日历
Date>Calendar
将日期对象转为日历时间
获取当前时间为周几,以及这是今年的第几天
String string =2018-12-12;
Calendar calendar=Calendar.getInstance()
calendar.setTime(new SimpleDateFormat("yyyy-MM-dd").parse(string));
System.out.println(calendar.get(Calendar.YEAR));//调用年
System.out.println(calendar.get(Calendar.MONTH) + 1);//调用月
System.out.println(calendar.get(Calendar.DAY_OF_YEAR));//这是这年的第几天
System.out.println(calendar.get(Calendar.DAY_OF_WEEK)+1);//这是周几
包装类Integer 方法
int b=Interger.parseInt("30")//将一个字符串转化为一个数字;
//将int转为字符串类型方法
String A=Interger.toString(10);
Shift+Alt M封装成一个方法
2018/4/9
晴
Day__06
A:
Collection:
01
Coolection是接口不能实例化;
可以运用多态方法调用
Collection C= new ArrayList();//引用ArrayList集合子类
C.add();//添加
C.isEmpty()//是否为空
C.size()//返回集合长度;
C.remove();//删除元素;
C.contains();//判断集合里面是否有指定元素
C.clear();//清空里面的元素;
B:
迭代器
获取迭代器对象
Iterator it=C.iterator();
it.next()获取元素;如果没有元素可以获取则报异常
it.hasNext();//判断是否还有元素可以获取,如果有就获取打印
格式
Collection C= new ArrayList();
Iterator it=C.iterator();
while(it.hasNext){
it.next()
};
代码演示:
public static void main(String[] args) { Collection C = new ArrayList(); C.add(" Hello"); C.add("world"); C.add("Java"); Iterator it = C.iterator(); while (it.hasNext()) { System.out.println(it.next()); } for (;;) { if (it.hasNext() == false) { break; } System.out.println(it.next()); } }}
C:/Users/Administrator/AppData/Local/YNote/data/a1402887564@163.com/3e881f2a8a1b4ca49ae00ad4a8985471/14c7327d48214404bedfc925d2fdd170.jpg
两种方式都可以用;
for循环
while循环得出的一样,如果写两个那么也只会读取一次;
迭代器并发修改异常;
LisInerator();获取用于List的地带器,然后调用Listltertor的add()方法;
代码演示:
public static void main(String[] args) { List C = new ArrayList(); C.add("Hello"); C.add("world"); C.add("Java"); Iterator it = C.iterator();// 调用迭代器 ListIterator lis = C.listIterator();// 调用List方法 while (it.hasNext()) { if (it.equals("Hello")) lis.remove(); if (it.equals("Java")) { lis.add("adandroid");// 用List方法添加; } System.out.println(it.next()); } }
C:/Users/Administrator/AppData/Local/YNote/data/a1402887564@163.com/8331fd6b36bf48a0b17cd2a49b4bc802/3471662051564f4fbd4dab301f83cf7d.jpg
List接口是Collectikn的子接口:
元素有序可重复有索引;
C: 泛型
集合可以存储任意类型的对象,有可能在转换的时候会出现类型转换异常
所以Java提供了一种机制,泛型
代码演示
C:/Users/Administrator/AppData/Local/YNote/data/a1402887564@163.com/262d98a67b5440799a1dd11fd56e98cd/3d055018c15a40c788e06d54a2a5c208.jpg
//注意导包是否正确;
For循环增强
public static void main(String[] args) { Collection<String>cl=new ArrayList<>(); cl.add("1"); cl.add("2"); for (String string : cl) { System.out.println(string); } }
C:/Users/Administrator/AppData/Local/YNote/data/a1402887564@163.com/914edb7c3fa64b159feb2f6e3cd0bbad/101173dc7ce04d3c94625ab0a92db132.jpg
//foereach 快捷方式
D:
List的特点和特有功能
元素有序(写进去是什么,读出来是什么),有整数索引,元素可以重复
索引越界报错;
Lis常用的子类
ArrayList
//底层数组结构,查询快,增删慢;
代码演示:
public static void main(String[] args) { List list=new ArrayList(); list.add(0,"021"); list.add(0,"210"); list.add(0, "姚"); System.out.println(list.get(2)); list.set(1, "150"); list.remove(2); System.out.println(list); }
C:/Users/Administrator/AppData/Local/YNote/data/a1402887564@163.com/c20cc0ad764840eba469e90132395349/d9801bcc0632407cb4890df9f11cdf1a.jpg
LinkedList
底层结构链表,查询满,增删快
代码演示:
LinkedList<String> list=new LinkedList<>(); list.add("2"); list.add("3"); list.addFirst("1");//0索引添加一个元素; list.addLast("4");//末尾添加一个元素; System.out.println(list); System.out.println(list.removeFirst()); //删除开头的第一个元素; System.out.println(list.removeLast()); //删除末尾的元素; }
C:/Users/Administrator/AppData/Local/YNote/data/a1402887564@163.com/140b9c4537844c539383a54ed6c6bfb6/b212e39da6014b06ad30296e7b17b84e.jpg
/*自定义学生类(属性:姓名、年龄、性别)
定义int index(ArrayList<Student> list,Student student)
在list集合中查找student对象并返回索引
姓名和年龄相同,则认为是同一个学生
定义boolean contains(ArrayList<Student> list,Student student)
判断list集合中是否包含student对象
包含返回true
不包含返回false
在main方法中测试以上两个方法 */
答案:
C:/Users/Administrator/AppData/Local/YNote/data/a1402887564@163.com/174df753c7014cd0a18d6df42eeeefe1/635974d6be574c05acc9976238fce124.jpg
2018/4/10
晴
Day__07
A:
HashSet
Set的子体系;
Set集合的特点:
无序,存储的数据和读取的数据顺序可能不同
Set集合里面不允许有元素重复
Set无索引值
HashSet方法首先会使用当前集合的每一个元素和新添加的元素进行hash值比较;
//集合构造
Set<E>set=new HashSet<>();
如果Hash值不一样,则会直接添加新元素;
如果hash值一样,则继续和已有元素比较地址值活用equals方法比较;
如果比较结果一样,则认为不重复不添加;
反之添加;
//可以直接快捷生成;
B:
Collctions工具类;
//返回值都是void;
Collections是集合体系的最顶层,包含了集合体系的共性;
Collections .binarySearch(集合名,查找的元素);//获取元素所在的索引
//必须是集合顺序已经排序好;
Collections.copy(集合1,集合2);//用集合2覆盖集合1,集合1的长度必须大于等于集合2才可以
List<String>string=new Arrayist<>();
List<String>string1=new ArrayList<>();
Collections.copy(string,string1);
集合string1覆盖集合string;
Collections.fill(集合名,元素);//把这个录入的元素,覆盖到这个集合里的每个元素里
Collections.reverse(集合名);//反转集合中的元素,必须是有序的;
Collections.shuffle(集合名);//随机打乱集合元素;
Collections.sort(集合名);//按照列表中的自然顺序排序;
//如果是自己定义的类,那么需要进行让自己定义的类里面符合自然顺序
Collertions.swap(集合名,索引1,索引2)//将集合里的两个索引元素进行位置互换
C:
Map接口
<K,Y>K键Y值一个键(K)只可以对应一个值(Y),键(K)不能重复,值(Y)可以,键是无序的
Map是一个双列集合,常用语处理有对应关系数据,key是不可重复,我们也称为夫妻集合
HashMap类
map.put()//映射功能,如果K值重复则会修改原来的Y值;
map.containKey(K);//判断K值是否存在;返回布尔类型;
map.containValue(Y);//判断Y值是否存在;返回布尔类型.
map.isEmpty();//判断是否有对应关系,集合是否为空
map.remove(K);//根据指定的K删除对应关系,并返回Y,删除失败返回null(空);
map.size();//返回对应关系个数;
map.get(K);//根据K返回对应的Y,无返回null;
map.KeySet()无序返回Set类型集合
map.Values()无索引返回Collection集合
Map遍历方式:
方法1:迭代器代码演示
C:/Users/Administrator/AppData/Local/YNote/data/a1402887564@163.com/775cf3041ecd4acfa11b664b1d759c1e/453f4659662c490d9bde841cf9ce9c7a.jpg
方法2:Entry代码演示
C:/Users/Administrator/AppData/Local/YNote/data/a1402887564@163.com/677982b5eb3f404c9be784e442d19cc2/28dbebc8414b465bb05a6d42bc154c1e.jpg
//
D:
可变参数
int...arr//三个点;
接收到的是一个数组;
在可变参数之后不可以再传入参数,前面可以
static int a(int...arr){
int x=0;
for(int i=0;i<arr.length;i++){
sum+=arr
}
return sum;
E:
Map 嵌套
代码演示:
C:/Users/Administrator/AppData/Local/YNote/data/a1402887564@163.com/3182fca03d2b4289827e63a10ed26abd/c87b631dae7b414286844302ec895f64.jpg
Map嵌套类
代码演示:
C:/Users/Administrator/AppData/Local/YNote/data/a1402887564@163.com/1c15597c1b814306923b8e8062dd8686/4eef85ac520f4c71bc33273a1e1a5d05.jpg
//定义的类未截图;
TreeMap可以实现键的自然顺序排序;
2018/4/13
晴
Day__08
A:
异常
//可以帮助我们找出错误
异常包括了错误类型,原因,位置
异常的体系结构:
Throwable(最顶层)
Error:出现的不能够处理的严重问题
Exception:可以处理问题
异常的处理
捕获处理
try...catch语句
try{
//有可能出现问题的代码
}chtch(ArithmeticExeption ae){
处理异常;
}
try...catch的执行顺序
首先执行try语句
如果发现异常,异常下面的代码不执行,进入c跳出catch语句中,结束跳出try...catch语句
代码演示:
C:/Users/Administrator/AppData/Local/YNote/data/a1402887564@163.com/39089ec45ba14b7a90da244fb03ca9bc/ea32adc5d4ee46afbd6b8062b7df00aa.jpg
抛出异常
throws 关键字方法上抛出异常;
多异常处理
多个catch之间可以有子父类
同级之间没有顺序关系
如果有父类,父类必须放在后面
最后加上Exception可以对所有未意识到的异常发现捕获;
B:
Throwable的常用方法
String getMessage();
String String toString();
void printStackTrace
//不会终止后续程序
finally的概述和应用场景
finally一般配合try...catch使用
try{
}catch(){
处理异常
}finally{
关闭流
}catch(){
}
C:
异常的分类
编译时期的异常
在编译时期必须处理,处理方式两种一种抛出,一种异常捕获;
运行时的异常
处理方式编译时期可以自主选择处理或者不处理
自定义异常
rhows把异常抛出,由调用者处理异常
thow制造一个异常
如果抛出的是编译时期的异常,必须在方法声明处抛出
D:
递归
把大问题拆成小问题
递归一定要有出口,
递归次数不宜过多,否则会内存溢出
不死神兔案例
C:/Users/Administrator/AppData/Local/YNote/data/a1402887564@163.com/1d70994a889845a7b6585d286887de8f/97717da42de14aedaf424d967fdb8b63.jpg
2018/4/13
雨天
|
|