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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 小石姐姐 于 2018-4-20 11:12 编辑

                                         JavaSE 5-8天笔记

第5天API
第1章   Object类 & System类1.1  Object类1.1.1   概述
Object类是Java语言中的根类,即所有类的父类。它中描述的所有方法子类都可以使用。所有类在创建对象的时候,最终找的父类就是Object。
在Object类众多方法中,我们先学习equals方法与toString方法,其他方法后面课程中会陆续学到。
1.1.2   获取字节码对象的方式
1.通过Object类的getClass()方法获取
2.通过类名调用属性class来获取
3.通过Class类的静态方法forName()来获取
1.1.3   toString()方法
由于toString方法返回的结果是内存地址,而在开发中,经常需要按照对象的属性得到相应的字符串表现形式,因此也需要重写它。
1.1.4   equals()方法
equals方法,用于比较两个对象是否相同,它其实就是使用两个对象的内存地址在比较。Object类中的equals方法内部使用的就是==比较运算符。
在开发中要比较两个对象是否相同,经常会根据对象中的属性值进行比较,也就是在开发经常需要子类重写equals方法根据对象的属性值进行比较。
1.2 System类
System 类包含一些有用的类字段和方法。它不能被实例化。
1.2.1   成员方法
static void arraycopy(Objectsrc, int srcPos, Object dest, int destPos, int length) :
从src源数组的srcPos索引开始,复制length个元素
从destPost位置开始将这些元素放至到dest数组中
static longcurrentTimeMillis()
返回以毫秒为单位的当前时间
static void exit(int status)
终止当前正在运行的 Java 虚拟机
第2章   日期相关类2.1 Date类
Date: 表示特定的瞬间,精确到毫秒,他可以通过方法来设定自己所表示的时间,可以表示任意的时间
2.1.1   Date类的构造方法
Date() :创建的是一个表示当前系统时间的Date对象
Date(long date) :根据"指定时间"创建Date对象
2.1.2   Date类常用方法
void setTime(long time)
2.2 DateFormat类 & SimpleDateFormat
DateFormat是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。日期/时间格式化子类(如 SimpleDateFormat类)允许进行格式化(也就是日期 -> 文本)、解析(文本-> 日期)和标准化。
我们通过这个类可以帮我们完成日期和文本之间的转换。
继续阅读API,DateFormat 可帮助进行格式化并解析任何语言环境的日期。对于月、星期,甚至日历格式(阴历和阳历),其代码可完全与语言环境的约定无关。
2.2.1   DateFormat&SimpleDateFormat的常用方法
要格式化一个当前语言环境下的日期也就是日期 -> 文本),要通过下面的方法来完成。DateFormat是抽象类,我们需要使用其子类SimpleDateFormat来创建对象。
A:SimpleDateFormat构造方法
2.3 Calendar类2.3.1   Calendar类概述
Calendar是日历类,在Date后出现,替换掉了许多Date的方法。该类将所有可能用到的时间信息封装为静态成员变量,方便获取。
Calendar为抽象类,由于语言敏感性,Calendar类在创建对象时并非直接创建,而是通过静态方法创建,将语言敏感内容处理好,再返回子类对象,如下:
Calendar类静态方法
Calendar c = Calendar.getInstance(); //返回当前时间
2.3.2   Calendar类常用方法第3章   包装类&正则表达式3.1  包装类
在实际程序使用中,程序界面上用户输入的数据都是以字符串类型进行存储的。而程序开发中,我们需要把字符串数据,根据需求转换成指定的基本数据类型,如年龄需要转换成int类型,考试成绩需要转换成double类型等。那么,想实现字符串与基本数据之间转换怎么办呢?
Java中提供了相应的对象来解决该问题,基本数据类型对象包装类:java将基本数据类型值封装成了对象。封装成对象有什么好处?可以提供更多的操作基本数值的功能。
3.2 包装类的常用方法3.3  包装类的自动装箱与拆箱
在需要的情况下,基本类型与包装类型可以通用。有些时候我们必须使用引用数据类型时,可以传入基本数据类型。
比如:
       基本类型可以使用运算符直接进行计算,但是引用类型不可以。而基本类型包装类作为引用类型的一种却可以计算,原因在于,Java”偷偷地”自动地进行了对象向基本数据类型的转换。
       相对应的,引用数据类型变量的值必须是new出来的内存空间地址值,而我们可以将一个基本类型的值赋值给一个基本类型包装类的引用。原因同样在于Java又”偷偷地”自动地进行了基本数据类型向对象的转换。
自动拆箱:对象转成基本数值
自动装箱:基本数值转成对象
3.4 正则表达式3.4.1    正则表达式概述
正则表达式是专门解决字符串规则匹配的工具。
正则表达式也是一个字符串,用来定义匹配规则。
参照帮助文档,在Pattern类中有简单的规则定义,可以结合字符串类的方法使用。
3.4.2    正则表达式匹配规则
参照帮助文档,在Pattern类中有正则表达式的的规则定义,正则表达式中明确区分大小写字母。我们来学习语法规则。
正则表达式的语法规则:
字符:x
含义:代表的是字符x
例如:匹配规则为 "a",那么需要匹配的字符串内容就是 ”a”
字符:\
含义:代表的是反斜线字符'\'
例如:匹配规则为"\" ,那么需要匹配的字符串内容就是 ”\”
字符类:[abc]
含义:代表的是字符a、b 或 c
例如:匹配规则为"[abc]" ,那么需要匹配的内容就是字符a,或者字符b,或字符c的一个
字符类:abc
含义:代表的是除了 a、b 或 c以外的任何字符
例如:匹配规则为"abc",那么需要匹配的内容就是不是字符a,或者不是字符b,或不是字符c的任意一个字符
字符类:[a-zA-Z]
含义:代表的是a 到 z 或 A 到 Z,两头的字母包括在内
例如:匹配规则为"[a-zA-Z]",那么需要匹配的是一个大写或者小写字母
字符类:[0-9]
含义:代表的是 0到9数字,两头的数字包括在内
例如:匹配规则为"[0-9]",那么需要匹配的是一个数字
字符类:[a-zA-Z_0-9]
含义:代表的字母或者数字或者下划线(即单词字符)
例如:匹配规则为" [a-zA-Z_0-9] ",那么需要匹配的是一个字母或者是一个数字或一个下滑线
预定义字符类:.
含义:代表的是任何字符
例如:匹配规则为" . ",那么需要匹配的是一个任意字符。如果,就想使用 . 的话,使用匹配规则"\."来实现
预定义字符类:\d [0-9]
含义:代表的是 0到9数字,两头的数字包括在内,相当于[0-9]
例如:匹配规则为"\d ",那么需要匹配的是一个数字
预定义字符类:\w  [a-zA-Z_0-9]
含义:代表的字母或者数字或者下划线(即单词字符),相当于[a-zA-Z_0-9]
例如:匹配规则为"\w ",,那么需要匹配的是一个字母或者是一个数字或一个下滑线
数量词:X?
含义:代表的是X出现一次或一次也没有
例如:匹配规则为"a?",那么需要匹配的内容是一个字符a,或者一个a都没有
数量词:X*
含义:代表的是X出现零次或多次
例如:匹配规则为"a*" ,那么需要匹配的内容是多个字符a,或者一个a都没有
数量词:X+
含义:代表的是X出现一次或多次
例如:匹配规则为"a+",那么需要匹配的内容是多个字符a,或者一个a
数量词:X{n}
含义:代表的是X出现恰好 n 次
例如:匹配规则为"a{5}",那么需要匹配的内容是5个字符a
数量词:X{n,}
含义:代表的是X出现至少 n 次
例如:匹配规则为"a{5, }",那么需要匹配的内容是最少有5个字符a
数量词:X{n,m}
含义:代表的是X出现至少 n 次,但是不超过 m 次
例如:匹配规则为"a{5,8}",那么需要匹配的内容是有5个字符a 到 8个字符a之间
第6天 集合第1章 集合&迭代器1.1 集合体系结构1.2Collection中常用功能
boolean add (Object e):向集合中添加元素
void clear():清空集合中所有元素
boolean contains(Object o):判断集合中是否包含某个元素
boolean isEmpty():判断集合中元素是否为空
boolean remove(Object o ):根据元素内容来删除某个元素
int size():获取集合的长度
Object[] toArray():能够将集合转换成数组并把集合中的元素储存到数组中
1.3迭代器Iterator接口
提供了遍历集合的安全方式
boolean hasNext():判断是否有元素可以获取
E next():返回下一个元素
package com.itheima_01;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
/*定义一个ArrayList集合,存储字符串
存储 Hello,world,java 三个字符串
分别使用普通的方式和迭代器的方式遍历集合*/
public class Practice02 {
    public static void main(String[] args) {
        Collection c = new ArrayList<>();
        c.add("Hello");
        c.add("world");
        c.add("java");
        Object[] arr = c.toArray();
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr
);
        }
        Iterator it = c.iterator();
        while(it.hasNext()){
            System.out.println(it.next());
        }
    }
}1.4并发修改异常
ConcurrentModificationException
迭代器是依赖于集合的,相当于集合的一个副本,当迭代器在操作的时候,如果发现和集合不一样,则抛出异常.
package com.itheima_01;

import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;

/*创建字符串集合, 存入字符串”hello”, “world”, “java”
分别使用普通的方式和迭代器的方式判断集合中是否包含元素java,如果有则添加元素android
查看哪种操作会出错*/
public class Practice03 {
    public static void main(String[] args) {
        List list = new ArrayList<>();
        list.add("hello");
        list.add("world");
        list.add("java");
      /*Object[] arr = list.toArray();
        for (int i = 0; i < arr.length; i++) {
            String value = (String)arr
;
            if(value.equals("java")){
                list.add("android");
            }
        }*/
        
        ListIterator listIterator = list.listIterator();
        while(listIterator.hasNext()){
            String value = (String)listIterator.next();
            if(value.equals("java")){
                listIterator.add("android");
            }
        }
        System.out.println(list);
    }
}第2章 泛型&增强for2.1泛型
泛型:是一种广泛的类型,把明确数据类型的工作的工作提前到了编译时期,借鉴了数组的特点.
泛型好处:
​                避免了类型转换的问题
​                可以减少黄色警示线
​                可以简化我们代码的书写

package com.itheima_01;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

/*新建一个Student类
属性:姓名,年龄
创建两个学生对象属性分别为:
”zhangsan”,18 和”lisi”,19
将这两个学生对象存入ArrayList集合
利用迭代器遍历集合,打印出每个学生的姓名*/
public class Practice04 {
    public static void main(String[] args) {
        Collection<Student> c = new ArrayList<Student>();
        Student s1 = new Student("zhangsan",18);
        Student s2 = new Student("lisi",19);
        c.add(s1);
        c.add(s2);
        Iterator<Student> it = c.iterator();
        while(it.hasNext()){
            Student s = it.next();
            System.out.println(s.getName());
        }
    }
}
class Student{
    private String name;
    private int age;
    public Student() {
        super();
        // TODO Auto-generated constructor stub
    }
    public Student(String name, int age) {
        super();
        this.name = name;
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}2.2增强for
foreach:增强for循环,一般用于遍历集合或者数组
格式:

for(元素的数据类型  变量 : Collection集合or数组){

            可以直接使用变量

}
package com.itheima_01;

import java.util.ArrayList;
import java.util.Collection;

/*新建一个Student类
属性:姓名,年龄
创建两个学生对象属性分别为:
”zhangsan”,18 和”lisi”,19
将这两个学生对象存入ArrayList集合
利用foreach遍历集合,打印出每个学生的姓名*/
public class Practice05 {
    public static void main(String[] args) {
        Collection<Student> c = new ArrayList<Student>();
        Student s1 = new Student("zhangsan",18);
        Student s2 = new Student("lisi",19);
        c.add(s1);
        c.add(s2);
        for(Student s:c){
            System.out.println(s.getName());
        }
    }
}第3章 常见数据结构3.1数组
数组,采用该结构的集合,对元素的存取有如下的特点:
查找元素快:通过索引,可以快速访问指定位置的元素
增删元素慢 ,每次添加元素需要移动大量元素或这创建新的数组
3.2链表
链表,采用该结构的集合,对元素的存取有如下的特点:
A:多个节点之间,通过地址进行连接。例如,多个人手拉手,每个人使用自己的右手拉住下个人的左手,依次类推,这样多个人就连在一起了。
B:查找元素慢:想查找某个元素,需要通过连接的节点,依次向后查找指定元素
C:增删元素快:
增加元素:只需要修改连接下个元素的地址即可。
删除元素:只需要修改连接下个元素的地址即可。
第7天 集合第1章 HashSet集合1.1 Set集合的特点:
A.无序(存储和读取的顺序有可能不一样)
B.不允许重复(要求元素唯一)
C.没有索引
1.2HashSet 使用&唯一性原理
package com.ithema_01;

import java.util.HashSet;

/*定义一个Student类,里面包含name和age属性
创建三个学生对象,为学生的姓名和年龄赋值, 其中2个学生的属性值是相同的
然后将这三个学生对象放入HashSet集合
遍历HashSet集合,打印每个学生的姓名和年龄, 查看是否去重*/
public class Practice01 {
    public static void main(String[] args) {
        Student s1 = new Student("zhangsan",18);
        Student s2 = new Student("lisi",19);
        Student s3 = new Student("lisi",19);
        HashSet<Student> hs = new HashSet<Student>();
        hs.add(s1);
        hs.add(s2);
        hs.add(s3);
        for(Student student:hs){
            System.out.println(student);
        }
    }
}
class Student{
    private String name;
    private int age;
    public Student(String name, int age) {
        super();
        this.name = name;
        this.age = age;
    }
    public Student() {
        super();
        // TODO Auto-generated constructor stub
    }
    @Override
    public String toString() {
        return "Student [name=" + name + ", age=" + age + "]";
    }
   
}第8天第1章 异常的产生&异常的处理1.1 异常概述1.2 异常处理1.2.2 try...catch方式处理异常
try {
    //需要被检测的语句。
}
catch(异常类 变量) { //参数。
    //异常的处理语句。
}
finally {
    //一定会被执行的语句。
}
try...catch的执行顺序:
首先执行try语句
如果发现异常,异常下面的代码不再执行,直接跳入catch语句中,catch语句结束后,整个try...catch结束.
如果没有发现异常,try语句执行结束后,try...catch直接结束,不再执行catch语句.
1.2.3 throws方式处理异常1.2.4 多异常处理
如何处理多个异常:
A:可以使用多个try...catch语句.
B:使用一个try和多个catch.
{多个catch之间的顺序:
多个catch之间可以有子父类;
平级之间没有顺序关系;
如果有子父类,父类异常必须放在后面}
第2章 Throwable常用方法&自定义异常
String getMessage()  返回此 throwable 的详细消息字符串
String toString()  返回此 throwable 的简短描述
void printStackTrace()  打印异常的堆栈的跟踪信息
第3章 递归
递归:把大问题拆成很多小问题,然后再把小问题拆成更多小问题
java中:方法自己调用自己
递归注意事项:
A:递归一定要有出口
B:递归次数不宜过多

0 个回复

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