A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 小石姐姐 于 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
雨天




3D055018C15A40C788E06D54A2A5C208.jpg (46.78 KB, 下载次数: 12)

代码演示

代码演示

635974D6BE574C05ACC9976238FCE124.jpg (57.84 KB, 下载次数: 41)

635974D6BE574C05ACC9976238FCE124.jpg

97717DA42DE14AEDAF424D967FDB8B63.jpg (17.67 KB, 下载次数: 10)

97717DA42DE14AEDAF424D967FDB8B63.jpg

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马