Java基础学习之常用类


前言

Java 类库提供了不少常用类,可以在编程中直接调用使用。本节讲重点讲解 Arrays、StringBuilder、Calendar、Date、Math、System、Random 类以及类的常用方法。


提示:以下是本篇文章正文内容,下面案例可供参考

一、Arrays

Arrays 类包含用于操作数组的各种方法(例如排序和搜索)。还包含一个静态工厂,允许将数组转为 List。
常用方法:

方法描述
List asList(T… a)返回由指定数组构造的 List
void sort(Object[] a)对数组进行排序
void fill(Object[] a, Object val)为数组的所有元素都赋上相同的值
boolean equals(Object[] a, Object[] a2)检查两个数组是否相等
int binarySearch(Object[] a, Object key)对排序后的数组使用二分法查找数据

二、StringBuilder

StringBuilder 类是可变的。它是 String 的对等类,它可以增加和编写字符的可变序列,并且能够将字符插入到字符串中间或附加到字符串末尾(当然是不用创建其他对象的)。

StringBuilder 的构造方法:

构造方法说明
StringBuilder()构造一个其中不带字符的 StringBuilder,其初始容量为 16 个字符
StringBuilder(CharSequence seq)构造一个 StringBuilder,它包含与指定的 CharSequence 相同的字符
StringBuilder(int capacity)构造一个具有指定初始容量的 StringBuilder
StringBuilder(String str)并将其内容初始化为指定的字符串内容

StringBuilder 类的常用方法:

方法返回值功能描述
insert(int offsetm,Object obj)StringBuilder在 offsetm 的位置插入字符串 obj
append(Object obj)StringBuilder在字符串末尾追加字符串 obj
length()int确定 StringBuilder 对象的长度
setCharAt(int index,char ch)void使用 ch 指定的新值设置 index 指定的位置上的字符
toString()String转换为字符串形式
reverse()StringBuilder反转字符串
delete(int start, int end)StringBuilder删除调用对象中从 start 位置开始直到 end 指定的索引(end-1)位置的字符序列
replace(int start, int end, String str)StringBuilder使用一组字符替换另一组字符。将用替换字符串从 start 指定的位置开始替换,直到 end 指定的位置结束

代码如下(示例):

public class StringBuilderTest {
    public static void main(String[] args) {
        StringBuilder s = new StringBuilder("I");
        s.append(" java");
        s.insert(1," love");
        String t = s.toString();
        System.out.println(t);
        s.reverse();
        String x= s.toString();
        System.out.println(x);
        s.delete(1,4);
        System.out.println(s.toString());
    }
}

运行结果:
在这里插入图片描述


三、Calendar

Calendar 类是一个抽象类,它完成 Date 类与普通日期表示法之间的转换,而我们更多的是使用 Calendar 类的子类 GregorianCalendar 类。它实现了世界上普遍使用的公历系统。当然我们也可以继承 Calendar 类,然后自己定义实现日历方法。

构造方法函数
GregorianCalendar()创建的对象中的相关值被设置成指定时区,缺省地点的当前时间,即程序运行时所处的时区、地点的当前时间
GregorianCalendar(TimeZone zone)创建的对象中的相关值被设置成指定时区 zone,缺省地点的当前时间
GregorianCalendar(Locale aLocale)创建的对象中的相关值被设置成缺省时区,指定地点 aLocale 的当前时间
GregorianCalendar(TimeZone zone,Locale aLocale)创建的对象中的相关值被设置成指定时区,指定地点的当前时间
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class CalendarDemo {
    public static void main(String[] args) {
        System.out.println("完整显示日期时间:");
        // 字符串转换日期格式
        DateFormat fdate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String str = fdate.format(new Date());
        System.out.println(str);

        // 创建 Calendar 对象
        Calendar calendar = Calendar.getInstance();
        // 初始化 Calendar 对象,但并不必要,除非需要重置时间
        calendar.setTime(new Date());

        // 显示年份
        System.out.println("年: " + calendar.get(Calendar.YEAR));

        // 显示月份 (从0开始, 实际显示要加一)
        System.out.println("月: " + calendar.get(Calendar.MONTH));


        // 当前分钟数
        System.out.println("分钟: " + calendar.get(Calendar.MINUTE));

        // 今年的第 N 天
        System.out.println("今年的第 " + calendar.get(Calendar.DAY_OF_YEAR) + "天");

        // 本月第 N 天
        System.out.println("本月的第 " + calendar.get(Calendar.DAY_OF_MONTH) + "天");

        // 3小时以后
        calendar.add(Calendar.HOUR_OF_DAY, 3);
        System.out.println("三小时以后的时间: " + calendar.getTime());
        // 格式化显示
        str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS")).format(calendar.getTime());
        System.out.println(str);

        // 重置 Calendar 显示当前时间
        calendar.setTime(new Date());
        str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS")).format(calendar.getTime());
        System.out.println(str);

        // 创建一个 Calendar 用于比较时间
        Calendar calendarNew = Calendar.getInstance();

        // 设定为 5 小时以前,后者大,显示 -1
        calendarNew.add(Calendar.HOUR, -5);
        System.out.println("时间比较:" + calendarNew.compareTo(calendar));

        // 设定7小时以后,前者大,显示 1
        calendarNew.add(Calendar.HOUR, +7);
        System.out.println("时间比较:" + calendarNew.compareTo(calendar));

        // 退回 2 小时,时间相同,显示0
        calendarNew.add(Calendar.HOUR, -2);
        System.out.println("时间比较:" + calendarNew.compareTo(calendar));

        // calendarNew创建时间点
        System.out.println((new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS")).format(calendarNew.getTime()));
        // calendar创建时间点
        System.out.println((new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS")).format(calendar.getTime()));
        System.out.println("时间比较:" + calendarNew.compareTo(calendar));
    }
}

运行结果:
在这里插入图片描述
注意:month 的含义与 Date 类相同,0 代表 1 月,11 代表 12 月。


四、Date

Date 类表示日期和时间,里面封装了操作日期和时间的方法。Date 类经常用来获取系统当前时间。

来看看类 Date 中定义的未过时的构造方法:

构造方法说明
Date()构造一个 Date 对象并对其进行初始化以反映当前时间
Date(long date)构造一个 Date 对象,并根据相对于 GMT 1970 年 1 月 1 日 00:00:00 的毫秒数对其进行初始化
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateDemo {
    public static void main(String[] args) {
        String strDate, strTime;
        Date objDate = new Date();
        System.out.println("今天的日期是:" + objDate);
        long time = objDate.getTime();
        System.out.println("自1970年1月1日起以毫秒为单位的时间(GMT):" + time);
        strDate = objDate.toString();
        //提取 GMT 时间
        strTime = strDate.substring(11, (strDate.length() - 4));
        //按小时、分钟和秒提取时间
        strTime = "时间:" + strTime.substring(0, 8);
        System.out.println(strTime);
        //格式化时间
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println(formatter.format(objDate));
    }
}

运行结果
在这里插入图片描述


五、Math

Math 类在 java.lang 包中,包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。

常见方法:

方法返回值功能描述
sin(double numvalue)double计算角 numvalue 的正弦值
cos(double numvalue)double计算角 numvalue 的余弦值
acos(double numvalue)double计算 numvalue 的反余弦
asin(double numvalue)double计算 numvalue 的反正弦
atan(double numvalue)double计算 numvalue 的反正切
pow(double a, double b)double计算 a 的 b 次方
sqrt(double numvalue)double计算给定值的正平方根
abs(int numvalue)int计算 int 类型值 numvalue 的绝对值,也接收 long、float 和 double 类型的参数
ceil(double numvalue)double返回大于等于 numvalue 的最小整数值
floor(double numvalue)double返回小于等于 numvalue 的最大整数值
max(int a, int b)int返回 int 型 a 和 b 中的较大值,也接收 long、float 和 double 类型的参数
min(int a, int b)int返回 a 和 b 中的较小值,也可接受 long、float 和 double 类型的参数
rint(double numvalue)double返回最接近 numvalue 的整数值
round(T arg)arg 为 double 时返回 long,为 float 时返回 int返回最接近 arg 的整数值
random()double返回带正号的 double 值,该值大于等于 0.0 且小于 1.0
public class MathDemo {
    public static void main(String[] args) {
        System.out.println(Math.abs(-12.7));
        System.out.println(Math.ceil(12.7));
        System.out.println(Math.rint(12.4));
        System.out.println(Math.random());
        System.out.println("sin30 = " + Math.sin(Math.PI / 6));
        // 计算30°的正弦值,参数是用弧度表示的角,即π的六分之一
        System.out.println("cos30 = " + Math.cos(Math.PI / 6));
        // 计算30°的余弦值,这些计算三角函数的方法,其参数和返回值的类型都为double
        System.out.println("tan30 = " + Math.tan(Math.PI / 6));
        // 计算30°的正切值
    }
}

运行结果:
在这里插入图片描述

  • 使用 Math.random() 生成两个随机数 a 和 b。
  • 求出两个随机数中的较大值。
  • 只能使用 Math 类中的方法。
import java.lang.Math;
public class MathTest {
    public static void main(String[] args) {
        double a = Math.random();
        double b = Math.random();
        System.out.println(a);
        System.out.println(b);
        System.out.println(Math.max(a, b));
    }
}

运行结果:
在这里插入图片描述


六、Random

Random 类用于生成伪随机数流,在 java.util包下。

import java.util.Random;

public class RandomDemo {
    public static void main(String[] args) {
        Random random = new Random();
        //随机生成一个整数 int范围
        System.out.println(random.nextInt());
        //生成 [0,n] 范围的整数  设n=100
        System.out.println(random.nextInt(100 + 1));
        //生成 [0,n) 范围的整数  设n=100
        System.out.println(random.nextInt(100));
        //生成 [m,n] 范围的整数  设n=100 m=40
        System.out.println((random.nextInt(100 - 40 + 1) + 40));
        //随机生成一个整数 long范围
        System.out.println(random.nextLong());
        //生成[0,1.0)范围的float型小数
        System.out.println(random.nextFloat());
        //生成[0,1.0)范围的double型小数
        System.out.println(random.nextDouble());
    }
}

运行结果:
在这里插入图片描述


总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,Java 类库还拥有很多类,本节仅对常用的几种类进行讲解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值