黑马程序员Java基础入门(十六)常用API(包含Math类、System类、Object类、Arrays类及冒泡排序、基本类型包装类、日期类)

目录

一、Math

1. Math类概述

2. Math类的常用方法

 二、System

1. System类概述

2. System类的常用方法

三、Object

1. Object类概述

2. Object类的常用方法

3. Object中的toString方法

4. Object中的equal()方法

 四、Arrays

1.冒泡排序

2. Arrays类的概述和常用方法

2.1 概述

 2.2 常用方法

 2.3 举例

 2.4 工具类的设计思想

五、基本类型包装类

1. 基本类型包装类概述

2. Integer类的概述和使用 

 3. int 和 String 的相互转换

3.1 实例

3.2 int 转换为 String

3.3 String 转换为 int

3.4 字符串中数字排序

4. 自动装箱和拆箱

六、日期类

1. Date类概述和构造方法

2. Date类的常用方法

 3. SimpleDateFormat 类概述

4. SimpleDateFormat 的构造方法

5. SimpleDateFormat 格式化和解析日期 

 5.1 格式化(从 Date 到 String )

5.2 解析(从 String 到 Date )

6. Calendar类概述

7.Calendar的常用方法


一、Math

1. Math类概述

Math包含执行基本数字运算的方法

没有构造方法,如何使用类中的成员?

看类的成员是否都是静态的,如果是,通过类名就可以直接调用。

2. Math类的常用方法

 测试输出:

如果要取[1,100]则需要

 二、System

1. System类概述

System包含几个有用的类字段和方法,它不能被实例化。

2. System类的常用方法

 举例:

调用exit()前:

 调用后:

 因为我们在调用输出结束之前就将Java虚拟机终止了,当然就不会再输出结束了

调用currentTimeMillis()时:

 输出结果为:当前时间(计算机中设定的时间,并非北京时间)与1970年1月1日相差的毫秒值。

三、Object

1. Object类概述

Object是类层次结构的根,每个类都可以将Object作为父类。所有类都直接后者间接的继承自该类。

构造方法:public Object()

回想面向对象中,为什么说子类的构造方法默认访问的是父类的无参构造方法?

因为它们的顶级父类只有无参构造方法。

2. Object类的常用方法

3. Object中的toString方法

我们创建一个学生类,里面有姓名年龄两个私有变量和对应带参和无参构造方法及其get、set方

测试类中我们直接输出创建的s实例我们发现输出com,itheima_01.Student@3f3afe78的字符串

利用Ctrl+B选中方法进行跟进找到toString方法,说明是toString方法输出的这段字符串。

 通过查看帮助文档我们知道

 所以我们在Student类中重写toString方法

 测试类中调用结果为:

 所以我们建议在子类中重写toString方法。

4. Object中的equal()方法

引文:

 我们发现输出的是false,因为==对比的是二者的地址值,因为两边都是new出来的值,所以地址值肯定不相等。

那我们该怎么比较二者的内容呢?

调用equal时我们发现还是false,所以我们Ctrl+B寻找原因

我们发现我们equal调用的是this的值,相当于还是s1和s2的地址值做比较。

所以我们需要在Student类中重写equal方法

重写后我们发现输出为true

 四、Arrays

1.冒泡排序

排序:将一组数据按照固定的规则进行排列。

冒泡排序:一种排序的方式,对要进行排序的数据中相邻的数据进行两两比较,将较大的数据放在后面,依次对所有的数据进行操作,直至所有数据按要求完成排序。

举例: 总结:

如果有n个数据进行排序,总共需要比较n-1次。

每一次比较完毕,下一次的比较就会少一个数据参与

冒泡排序代码实现:

public class demo_sort {
    public static void main(String[] args) {
        //冒泡排序算法
        int[] numbers=new int[]{1,5,8,2,3,9,4};
        //需进行length-1次冒泡
        for(int i=0;i<numbers.length-1;i++)
        {
            for(int j=0;j<numbers.length-1-i;j++)
            {
                if(numbers[j]>numbers[j+1])
                {
                    int temp=numbers[j];
                    numbers[j]=numbers[j+1];
                    numbers[j+1]=temp;
                }
            }
        }
        System.out.println("从小到大排序后的结果是:");
        for(int i=0;i<numbers.length;i++)
            System.out.print(numbers[i]+" ");
    }
}

2. Arrays类的概述和常用方法

2.1 概述

Arrays类包含用于操作数组的各种方法

 2.2 常用方法

 2.3 举例

sort()调用

 2.4 工具类的设计思想

构造方法用private修饰。

成员用public static修饰

五、基本类型包装类

1. 基本类型包装类概述

将基本数据类型封装成对象的好处在于可以在对象中定义更多的功能方法操作该数据

常用的操作之一:用于基本数据类型与字符串之间的转换

2. Integer类的概述和使用 

Integer:包装一个对象中的原始类型int的值。

实例:

运行时idea会提示这两个方法过时了。

字符串类型不能输入"abc"这种字母格式,会报错,只能输入数字格式的字符串

 输出为100 和 100(前面为整型,后面为字符串)。

建议使用下面这两种静态类型的方法(其中的字符串同样不能输入字母格式,只能输入数字格式)

 3. int 和 String 的相互转换

基本类型包装类的最常见操作就是:用于基本类型和字符串之间的相互转换。

3.1 实例

int->String

方式一 属于字符串的拼接

方式二 是调用了String的valueOf方法

String->int

方式一:String->Integer->int

方式二:是调用了Integer的parseInt方法

3.2 int 转换为 String

public static String valueOf(int i);  返回int参数的字符串表示形式。该方法是String类中的方法。

3.3 String 转换为 int

public static int parseInt(String s); 将字符串解析为int类型。该方法是Integer类中的方法。

3.4 字符串中数字排序

import java.lang.reflect.Array;
import java.util.Arrays;

public class test {
    public static void main(String[] args) {
        //定义一个字符串
        String s = "91 27 46 38 50";

        //把字符串中的数字数据存储到一个int类型的数组中
        String []strArray = s.split(" ");

        //定义一个int数组,把String()数组的每一个元素存储到int数组中
        int []arr = new int[strArray.length];
        for (int i = 0; i < arr.length; i++)
        {
            arr[i] = Integer.parseInt(strArray[i]);
        }
        //对int数组进行排序
        Arrays.sort(arr);


        //把排序后的int数组中的元素进行拼接得到一个字符串,这里拼接采用StringBuilder来实现
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < arr.length; i++){
            if(arr.length == i){
                sb.append(arr[i]);
            }else {
                sb.append(arr[i]).append(" ");
            }
        }
        String result = sb.toString();
        System.out.println("result: " + result);
    }
}

4. 自动装箱和拆箱

装箱:把基本数据类型转换为对应的包装类类型。

拆箱:把包装类类型转换为对应的基本数据类型。

实例:

 注意:在使用包装类类型的时候,如果做操作,最好先判断是否为null。

            我们推荐的是,只要是对象,在使用前就必须进行不为null的判断。

六、日期类

1. Date类概述和构造方法

Date代表了一个特定的时间,精确到毫秒

实例:

本应该是全路径名@地址的输出,但实际为下图输出,说明toString被重写了(CST为中国标准时间)。

 方法二中我们给的变量为一小时(Date的单位是毫秒),本应是1点,但输出为什么是9点呢?

 是因为这里我们输出的是中国标准时间,有时区上的差距,我们是东八区。

2. Date类的常用方法

实例:

 3. SimpleDateFormat 类概述

引言:在Date类中的时间都是以毫秒为单位很不好阅读,所以我们Java出现了SimpleDateFormat类

SimpleDateFormat是一个具体的类,用于以区域设置敏感的方式格式化和解析日期,我们重点学习日期格式化和解析。

日期和时间格式由日期和时间模式字符串指定,在日期和时间模式字符串中,从‘A’到‘Z’以及从‘a’到‘z’引号的字母被解释为表示日期或时间字符串的组件的模式字母。

4. SimpleDateFormat 的构造方法

5. SimpleDateFormat 格式化和解析日期 

 5.1 格式化(从 Date 到 String )

        public final String format(Date date):将日期格式化成日期/时间字符串。

5.2 解析(从 String 到 Date )

        public Date parse(String source):从给定字符串的开始解析文本以生成日期。

实例:

无参构造+格式化

 有参构造+格式化

 有参格式+解析

 注意:我们的有参构造方法里的格式要和解析里的格式相同,不然会报错。

6. Calendar类概述

 Calendar 为某一时刻和一组日历字段之间的转换提供了一些方法,并为操作日历字段提供了一些方法。

Calendar 提供了一个类方法 getInstance 用于获取 Calendar 对象,其日历字段已使用当前日期和时间初始化:Calendar rightNow = Calendar.getInstance();

实例:

其中month+1的原因是Calendar里面的month是从0开始数的。

 

7.Calendar的常用方法

 add方法:

 set方法:

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
常用实用: 1. String:表示字符串,常用于字符串操作,如拼接、替换等。 2. StringBuilder:与String似,但是它不是不可变的,可以进行修改操作。 3. Math:提供了一些数学运算方法,如求绝对值、求平方根、求最大值等。 4. Date:表示日期和时间,可以进行日期格式化和解析等操作。 5. SimpleDateFormat:用于格式化日期,将日期转换为指定格式的字符串。 6. Random:用于生成随机数。 7. Arrays:提供了一系列对数组的操作方法,如排序、查找、比较等。 8. System:提供了一些系统操作方法,如获取当前时间、获取系统属性等。 Java集合框架: Java集合框架提供了一系列接口和,用于存储和操作对象集合。它包括三个主要接口:Collection接口、List接口和Map接口。其中,Collection接口又分为Set接口和Queue接口。 1. Collection接口:是所有集合的根接口,它定义了集合的基本操作方法,如添加、删除、遍历等。 2. List接口:继承自Collection接口,它表示有序的集合,可以通过索引访问元素。 3. Set接口:也继承自Collection接口,但是它不允许重复的元素。 4. Map接口:表示映射表,它包含键值对,每个键只能对应一个值。 Java集合框架还提供了一些实现,如ArrayList、LinkedList、HashSet、TreeSet、HashMap等,它们分别实现了上述接口,并提供了不同的存储方式和性能特点。开发者可以根据实际需求选择适合的集合

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值