Java入门3: 常用类


Java入门3: 常用类

MangoGO 芒狗狗


3 常用类

3.1 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)对排序后的数组使用二分法查找数据
import java.util.Arrays;
import java.util.Random;

public class ArraysDemo {
    public static void main(String[] args) {
        int[] arr = new int[10];
        
        // 填充数组
        Arrays.fill(arr, 9);
        System.out.println("fill:" + Arrays.toString(arr));
        
        // 随机赋值
        Random random = new Random();
        for (int i = 0; i < arr.length; i++) {
            arr[i] = random.nextInt(100);
        }
        System.out.println("随机赋值:" + Arrays.toString(arr));
        
        // 将索引5的值改为50
        arr[5] = 50;

        // 排序
        Arrays.sort(arr);
        System.out.println("排序:" + Arrays.toString(arr));

        // 二分查找值为50的索引
        int index = Arrays.binarySearch(arr, 50);
        System.out.println("值为50的索引:" + index);
   
        // 赋值
        int[] newArr = Arrays.copyOf(arr, arr.length);
        
        System.out.println("equals: " + Arrays.equals(arr, newArr));
    }
}
!java ArraysDemo.java
fill:[9, 9, 9, 9, 9, 9, 9, 9, 9, 9]
随机赋值:[38, 30, 29, 40, 68, 68, 62, 16, 26, 2]
排序:[2, 16, 26, 29, 30, 38, 40, 50, 62, 68]
值为50的索引:7
equals: true
import java.util.Arrays;


public class ArraysTest {
    public static void main(String[] args) {
        int[] arr = {6, 17, 92, 32, 58, 22, 84, 66, 36, 33};

        Arrays.sort(arr);
        System.out.println("排序后数组:" + Arrays.toString(arr));

        int index = Arrays.binarySearch(arr, 33);
        System.out.println("值33所在的索引:" + index);
    }
}
!java ArraysTest.java
排序后数组:[6, 17, 22, 32, 33, 36, 58, 66, 84, 92]
值33所在的索引:4

3.2 StringBuilder

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

  StringBuilder 的构造方法:

方法描述
StringBuilder()构造一个其中不带字符的 StringBuilder,其初始容量为 16 个字符
StringBuilder(CharSequence seq)构造一个 StringBuilder,它包含与指定的 CharSequence 相同的字符
StringBuilder(int capacity)将指定的字符数组追加到此序列
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 对象
        StringBuilder sb = new StringBuilder("I");
        // sb后面加上" java"
        sb.append(" java");
        // 在sb[1]位置插入" love"
        sb.insert(1, " love");
        String str = sb.toString();
        System.out.println(str);
    }
}
!java StringBuilderTest.java
I love java

3.3 Date

  在JDK1.0中,Date类是唯一的一个代表时间的类,但是由于Date类不便于实现国际化,所以从JDK1.1版本开始,推荐使用Calendar类进行时间和日期处理。 从JDK 1.1开始, Calendar类应该用于在日期和时间字段之间进行转换,并且DateFormat类应用于格式化和解析日期字符串。

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

方法描述
Date()构造一个 Date 对象并对其进行初始化以反映当前时间
Date(long date)构造一个 Date 对象,该对象表示从 1970 年 1 月 1 日 00:00:00 GMT 开始的指定毫秒数
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日0点0分0秒起至现在的毫秒数:" + 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));        
    }
}
!java DateDemo.java
今天日期:Fri May 10 21:50:23 CST 2024
自1970年1月1日0点0分0秒起至现在的毫秒数:1715349023156
GMT 时间:21:50:23 CST 
时间:21:50:23
2024-05-10 21:50:23

3.4 Calendar

  Calendar 类是一个抽象类,它完成 Date 类与普通日期表示法之间的转换,而我们更多的是使用 Calendar 类的子类 GregorianCalendar 类。它实现了世界上普遍使用的公历系统。

  GregorianCalendar 类的构造函数:

方法描述
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开始,实际月份加1)
        System.out.println("月份:" + (calendar.get(Calendar.MONTH) + 1));

        // 显示日期
        System.out.println("日期:" + calendar.get(Calendar.DATE));

        // 显示小时
        System.out.println("小时:" + calendar.get(Calendar.HOUR));

        // 显示分钟
        System.out.println("分钟:" + calendar.get(Calendar.MINUTE));

        // 显示秒
        System.out.println("秒:" + calendar.get(Calendar.SECOND));

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

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

        // 星期几(从 1 开始,1 表示星期天)
        System.out.println("星期:" + calendar.get(Calendar.DAY_OF_WEEK));

        // 3 小时以后
        calendar.add(Calendar.HOUR_OF_DAY, 3);
        System.out.println("3 小时以后:" + fdate.format(calendar.getTime()));

        // 格式化显示
        str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS")).format(calendar.getTime());
        System.out.println(str);

        // 重置时间
        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));

        // calendar 创建时间点
        System.out.println((new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS")).format(calendar.getTime()));
        System.out.println("时间比较:" + calendarNew.compareTo(calendar));
    }
}
!java CalendarDemo.java
完整显示日期时间:
2024-05-10 23:03:23
年份:2024
月份:5
日期:10
小时:11
分钟:3
秒:23
今年第131天
本月第10天
星期:6
3 小时以后:2024-05-11 02:03:23
2024-05-11 02:03:23:918
2024-05-10 23:03:23:922
时间比较:-1
时间比较:1
时间比较:1
2024-05-10 23:03:23:922
时间比较:1

3.5 Math

  Math 类提供了一些静态方法,用于执行基本数学运算。

  Math 类的方法:

方法返回值描述
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("-12.7绝对值:" + Math.abs(-12.7));
        System.out.println("12.7向上取整:" + Math.ceil(12.7));
        System.out.println("12.4最近整数:" + Math.rint(12.4));
        System.out.println("随机数:" + Math.random());
        System.out.println("sin30 = " + Math.sin(Math.PI / 6));
        System.out.println("cos30 = " + Math.cos(Math.PI / 6));
        System.out.println("tan30 = " + Math.tan(Math.PI / 6));
    }
}
!java MathDemo.java
-12.7绝对值:12.7
12.7向上取整:13.0
12.4最近整数:12.0
随机数:0.16430537342716423
sin30 = 0.49999999999999994
cos30 = 0.8660254037844387
tan30 = 0.5773502691896257

3.6 System

  System 类提供了以下功能:

  • 标准输入,标准输出和错误输出流;
  • 访问外部定义的属性和环境变量;
  • 加载文件和库的方法;
  • 用于快速复制数组的实用方法。

  System 不可以被实例化,只可以使用其静态方法。

import java.util.Arrays;
 
public class SystemDemo {
    pubilc static void main(String[] args) {
        int[] a = {7, 8, 9, 10, 11};
        int[] b = {1, 2, 3, 4, 5, 6};

        // 从数组a第二个元素开始,复制到b数组的第三个元素,复制3个元素
        System.arraycopy(a, 1, b, 2, 3);

        System.out.println(Arrays.toString(b));
        system.out.println("当前时间:" + System.currentTimeMillis());
        System.out.println("java版本信息:" + System.getProperty("java.version"));
        System.gc();
        System.exit(0);
    }
}
!java SystemDemo.java
[1, 2, 8, 9, 10, 6]
当前时间:1715443137491
java版本信息:22

3.7 Random

  Random 类实现了一个伪随机数生成器,该生成器使用线性同余算法生成下一个随机数。

import java.util.Random;

public class RandomDemo {
    public static void main(String[] args) {
        Random random = new Random();
        System.out.println(random.nextInt());
        System.out.println(random.nextInt(100 + 1));
        System.out.println(random.nextDouble(100));
        System.out.println((random.nextBoolean(100 - 40 + 1) + 40));
        System.out.println(random.nextLong());
        System.out.println(random.nextFloat());
        System.out.println(random.nextDouble());
    }
}
!java RandomDemo.java
1156110784
36
92
84
6458191128308149796
0.6061311
0.25731708217727656

参考代码

  GitCode


系列文章专栏:
Java入门

  1 基础部分 \

  2 面向对象 \

  3 常用类 \

  持续更新中:\

  • 22
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MangoGO芒狗狗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值