黑马程序员技术交流社区

标题: Java技术交流 [打印本页]

作者: loius    时间: 2018-7-26 11:39
标题: Java技术交流
本帖最后由 loius 于 2018-7-26 11:52 编辑

Java技术交流

Object类和常用API

java.lang.Object类: 根类, 所有类的父类
        // 成员方法
        String?toString() :返回该对象的字符串表示
        boolean?equals(Object?obj) :指示其他某个对象是否与此对象"相等"


java.util.Objects类: JDK7 添加. 操作对象的工具类, 提供了空指针安全的方法
        // 静态方法
        static boolean equals(Object a, Object b): 比较两个对象是否相等
                如果2个参数都是null, 返回true
                如果其中一个为null, 返回false
                如果2个参数都不为null, 则使用第1个参数对象的equals()方法来比较


java.util.Objects类: JDK7 添加. 操作对象的工具类, 提供了空指针安全的方法
        // 静态方法
        static boolean equals(Object a, Object b): 比较两个对象是否相等
                如果2个参数都是null, 返回true
                如果其中一个为null, 返回false
                如果2个参数都不为null, 则使用第1个参数对象的equals()方法来比较


java.util.Date类: 日期, 表示特定的瞬间, 精确到"毫秒"
        // 构造方法
        Date(): 创建Date对象, 表示当前系统时间
        Date(long date): 创建Date对象, 使用指定的毫秒值作为时间
        // 常用成员方法
        long getTime(): 获取Date对象中保存的时间毫秒值
        void setTime(long time): 修改Date对象的时间


java.text.DateFormat抽象类: 用于格式化和解析时间. 提供了方便的方法
        // 常用成员方法 (抽象类不能创建对象, 但可以有非抽象的方法供子类使用)
        String format(Date date): 格式化, 从Date对象转换为String对象
        Date parse(String source): 解析, 从String对象转换为Date对象
       
java.text.SimpleDateFormat类
        // 构造方法
        SimpleDateFormat(String pattern): 用给定的模式和默认语言环境的日期格式符号创建对象
                // 常用模式: 可在SimpleDateFormat类中查看
                y: 年
                M: 月
                d: 日
                H: 时 (24小时制)
                m: 分
                s: 秒
               
                E: 星期
                D: 年中的天
                K: 小时(12小时制)
                S: 毫秒


java.util.Calendar抽象类: 代表日历, 提供了不同国家的历法, 封装了很多时间属性
        // 静态方法
        static Calendar getInstance(): 根据当前系统设置获取合适的Calendar对象, 表示当前系统时间


// 静态成员变量
        static int YEAR         :年份
        static int MONTH        :月份. 注意月份数值是 0-11
        static int DAY_OF_MONTH :日期
        static int HOUR         :小时(12小时制)
        static int HOUR_OF_DAY  :小时(24小时制)
        static int MINITE       :分钟
        static int SECOND       :秒
        // 非静态成员方法
        int get(int field): 获取指定日历字段的值
        void set(int field, int value): 修改指定日历字段为指定的值
        void add(int field, int amount): 调整指定日历字段的值. 正数增加, 负数减少
        Date getTime(): Calendar转Date
        void setTime(Date d): Date转Calendar
C:/Users/sunerguo/AppData/Local/YNote/data/qqDC38DCF20398F86868342EE44B2630FF/69b1485a77454e5bbd0b794a71bb8ac6/clipboard.png




java.lang.System类: 系统相关功能
        // 静态方法
        static long currentTimeMillis(): 返回当前系统时间的毫秒值
        static void arrayCopy(Object src, int srcPos, Object dest, int destPos, int length): 复制源数组中指定长度个元素到一个新数组中
        * Object src: 源数组 (被复制的数组)
        * int srcPos: 源数组索引 (从源数组的哪个索引开始复制)
        * Object dest: 目标数组 (要复制到哪个数组)
        * int destPos: 目标数组索引 (指定目标数组接收元素的索引位置)
        * int length: 长度 (要复制的元素个数)
            
java.lang.StringBuilder类: 可变字符序列, 可以高效拼接字符串. 底层使用数组保存
        // 构造方法
        StringBuilder(): 构造一个空的StringBuilder容器
        StringBuilder(String?str): String转StringBuilder
        // 常用方法
        StringBuilder?append(任意类型): 添加任意类型数据的字符串形式, 并返回当前对象
        String?toString(): 将当前StringBuilder对象转换为String对象






基本类型转为String: 拼接空字符串
        "" + 34
        true + ""


String转基本类型: 利用包装类的静态方法
    static?byte?parseByte(String?s): 将字符串参数转换为对应的byte基本类型
    static?short?parseShort(String?s): 将字符串参数转换为对应的short基本类型
    static?int?parseInt(String?s): 将字符串参数转换为对应的int基本类型
    static?long?parseLong(String?s): 将字符串参数转换为对应的long基本类型
    static?float?parseFloat(String?s): 将字符串参数转换为对应的float基本类型
    static?double?parseDouble(String?s): 将字符串参数转换为对应的double基本类型
    static?boolean?parseBoolean(String?s): 将字符串参数转换为对应的boolean基本类型




Collection 泛型


Collection接口: 单列集合顶层

|_ List接口: 元素存取有序, 可重复, 有索引

|_ Set接口: 元素存取无序, 不可重复,

无索引ArrayList add("aaaa") add("bbb") add("ccc") add("ccc")"aaaa" "bbb" "ccc"HashSet add("aaaa") add("bbb") add("ccc")"bbb" "ccc" "aaaa"学习方法:学习顶层: 顶层接口/抽象类中共性的方法, 所有子类都可以使用使用底层: 使用底层子类/实现类创建对象


java.util.Collection接口:// 成员方法(子类都会实现)
boolean add(E e): 把给定的对象添加到当前集合中
void clear(): 清空集合中所有的元素
boolean remove(E e): 把给定的对象在当前集合中删除
boolean contains(E e): 判断当前集合中是否包含给定的对象
boolean isEmpty(): 判断当前集合是否为空(没有元素
)int size(): 返回集合中元素的个数
Object[] toArray(): 把集合中的元素,存储到数组中
Iterator iterator(): 获取集合的迭代器对象 (后面讲到)
Iterator接口: 迭代器测试Collection接口的方式:使用多态方式创建对象:

Collection c = new ArrayList();编译看左边, 这样只能调用Collection接口中定义的方法, 不会出现子类特有方法


迭代器

迭代: 类似于遍历, 判断是否有下一个元素, 有则取出下一个, 直到没有
迭代器: 用于遍历集合的对象java.util.Collection接口:// 成员方法(子类都会实现)
Iterator iterator(): 获取集合的迭代器对象java.util.Iterator接口:
迭代器// 成员方法
boolean hasNext(): 判断是否有下一个元素
E next(): 获取下一个元素
void remove(): 删除next指向的元素
使用迭代器遍历集合的3步:1. 使用集合对象的 iterator() 获取迭代器对象, 用 Iterator 接口接收.(多态)
2. 使用 Iterator 接口中的 hasNext() 方法, 判断是否有下一个元素
3. 使用 Iterator 接口中的 next() 方法, 获取下一个元素


// 使用迭代器遍历集合的标准写法:Iterator<元素类型> iterator = 集合对象.iterator();
while (iterator.hasNext())
{元素类型 变量名 = iterator.next();}


增强for循环

增强for: 也称foreach循环, JDK 5出现, 用于遍历集合,
底层采用迭代器作用:遍历数组遍历集合
增强for格式:for(元素的数据类型 变量名 : Collection集合或数组名){//操作代码}
// 数组示例int[] arr = {1,2,3};
for (int i : arr)
{System.out.println(i);}
// 集合示例Collection c = new ArrayList<>();
for (int i : c)
{System.out.println(i);}
增强for对于数组和集合的操作:对数组只是写法上的优化, 底层还是普通for循环对集合是通过迭代器实现的






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2