java常用API

本文探讨了Java中的Integer类,包括自动装箱、拆箱以及整型常量池的概念,并展示了如何使用Integer.valueOf()方法。此外,还介绍了Date类的时间处理,如获取当前时间、日期格式化。同时讲解了Math类的数学运算方法,如求绝对值、取整、开方等。最后提到了Random类用于生成随机数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Integer的使用

java中为8种基本数据类型对应准备了8种包装类型。8种包装类型属于引用类型,父类是Object。

以学习Integer类学习为例

public class _6_Integer {
    public static void main(String[] args) {
        // 自动装箱 = Integer.valueOf(123);
        // 整型常量池的范围 : -128~127之间
        Integer i1 = 123;
        Integer i2 = 123;
        System.out.println(i1 == i2);//true
        i1 = new Integer(123);
        i2 = new Integer(123);
        System.out.println(i1 == i2);//false
        //等于 new Integer(128);
        i1 = 128;
        i2 = 128;
        System.out.println(i1 == i2);//false
        String s1 = "asd";
        String s2 = "asd";
        System.out.println(s1 == s2);//true
        s1 = new String("asd");
        s2 = new String("asd");
        System.out.println(s1 == s2);//false
    }
}
// 深入理解自动装箱和自动拆箱
//
// 		1 都是编译时进行的操作
// 		2 自动装箱 的时候,会把赋值 操作 改变为 Integer.valueOf(值)
//
// Integer.valueOf() 底层实现 :
//
// 	   public static Integer valueOf(int i) {
//        if (i >= IntegerCache.low && i <= IntegerCache.high)
//            return IntegerCache.cache[i + (-IntegerCache.low)];
//        return new Integer(i);
//    }
//
//
//  IntegerCache 是Integer中的静态内部类,也就是我们说的整型常量池
//
//  			static final int low = -128;
//        		static final int high = 127;
//        		static final Integer cache[];
//        	在static语句块中,对cache数组 进行初始化操作
//        			  cache = new Integer[(high - low) + 1];  长度为256
//        			  初始化数组中的数据
//        			 cache[k] = new Integer(j++);
//        		 数组中数据为 -128,-127,-126.....127  共 256个数字,下标为0~255
//
//        		 此时 整型常量池就初始化完成了,在堆内存中创建了256个对象,
//
//       valueOf方法中这么写的
//       		// 判断 要赋值的数据值 是否在-128到127之间
//        	if (i >= IntegerCache.low && i <= IntegerCache.high)
//        		// 如果在这个范围内的话,之间在case数组中把对应的对象的地址拿出来,返回回去
//            	return IntegerCache.cache[i + (-IntegerCache.low)];
//            	// 如果不再这个范围内的话,就new一个新的对象,保存这个数据
//        	return new Integer(i);
//
//        所以 我们写 Integer i1 = 123;  Integer i2 = 123; 使用 == 是相等的,因为他们指向堆内存的地址都是同一个
//
//        反之 我们写 Integer i3 = 128; 就等于 Integer i3 = new Integer(128) , 如果使用== 肯定是不等的
//        需要使用equals才可以

在这里插入图片描述

 将十进制转换成二进制字符串(静态的):static String toBinaryString(int i)
将十进制转换成十六进制进制字符串(静态的):static String toHexString(int i)
将十进制转换成八进制进制字符串(静态的):static String toOctalString(int i)

 

 在这里插入图片描述

 

Data的使用

获取系统当前时间

import java.util.Date;

public class DateText {
    public static void main(String[] args) {
        
        //获取系统当前时间(精确到毫秒的系统当前时间)
        //直接调用无参数构造方法就行
        Date nowTime = new Date();
        
        //java.util.Date类的toString()方法已经被重写了。
        //输出的不是一个对象的内存地址,是一个日期字符串
        System.out.println(nowTime);
    }
}

 日期格式化

将日期类型Date,按照指定的格式进行转换:Date–转换成具有一定格式的日期字符串–>String
SimpleDateFormat是java.text包下的,专门负责日期格式化的

 import java.beans.SimpleBeanInfo;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateText {
    public static void main(String[] args) {
        Date nowTime = new Date();
        System.out.println(nowTime);
        /*
			yyyy 年(年是四位)
			MM 月(月是2位)
			dd 日
			HH 时
			mm 分
			ss 秒
			SSS 毫秒(毫秒3位,最高999)
		*/
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
        String nowTimes = sdf.format(nowTime);
        System.out.println(nowTimes);
    }
}

 日期字符串String转换成Date类型

        String time = "2008-08-08 08:08:08 888";
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
        //格式不能乱写,要和日期字符串格式相同
        
        Date dateTime = sdf2.parse(time);//parse需要抛出异常
        System.out.println(dateTime);

 获取1970年1月1日到现在的总毫秒数

long nowTimeMillis = System.currentTimeMills();
System.out.println(nowTimeMillis);

 统计方法执行时长

long begin = System.currentTimeMills();
print();//执行的方法
long end = System.currentTimeMills();

System.out.println((end - begin)+"毫秒");

 通过毫秒构造Date对象

import java.text.SimpleDateFormat;
import java.util.Date;

public class DateText1 {
    public static void main(String[] args) {
        //这个时间是什么时间?
        //1070-01-01  00:00:00 001
        Date time = new Date(1);//注意这是一个毫秒

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
        String strTime = sdf.format(time);
        //北京是东八区,差八个小时
        System.out.println(strTime);
    }
}

System.out【out是System类的静态变量】
System.out.println()【println()方法不是System类的,是PrintStream类的方法】
System.gc()建议启动垃圾回收器
System.currentTimemillis()获取自1970年1月1日到系统当前时间的总毫秒数。
System.exit(0) 退出JVM

Math的使用

java.text.DecimalFormat专门负责数字格式化的

语法格式: DecimalFormat df = new DecimalFormat("数字格式")

 public static void main(String[] args) {
        System.out.println(Math.abs(-12.4));//12.4   绝对值
        System.out.println(Math.ceil(2.432));//3.0   向上取整
        System.out.println(Math.floor(4.999));//4.0     向下取整
        System.out.println(Math.max(42.4,9.7));//42.4       谁大
        System.out.println(Math.min(3.14,7.28));//3.14      谁小
        System.out.println(Math.sqrt(64));//8.0     开平方
        System.out.println(Math.cbrt(27));//3.0     开立方
        System.out.println(Math.random());//0.9953898357853841
        System.out.println(Math.random()*10 + 10);//11.270487712390562
        System.out.println(Math.rint(2.500002));//3.0  四舍五入:四舍六入五去双
        System.out.println(Math.pow(2,3));//8.0   2^3   2的3次方
    }

BigInteger的使用

BigDecimal 属于大数据,精度很高。不属于基本数据类型,属于java对象(引用数据类型)。

    public static void main(String[] args) {
        BigInteger bgi = new BigInteger("11");
        BigDecimal bgd1 = new BigDecimal(20);
        BigDecimal bgd2 = new BigDecimal(10);
        BigDecimal bgd3 = bgd1.add(bgd2);//30
        bgd3 = bgd1.subtract(bgd2);//10
        bgd3 = bgd1.multiply(bgd2);//200
        bgd3 = bgd1.divide(bgd2);//2
        bgd3 = bgd1.remainder(bgd2);//0
        System.out.println(bgd3);
        System.out.println(Long.MAX_VALUE);//9223372036854775807
        BigDecimal sum = new BigDecimal(1);
        for (int i = 1;i<=100;i++){
            sum = sum.multiply(new BigDecimal(i));
        }
        //93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
        System.out.println(sum);
    }

Random的使用

Random位于java.util包下,可以产生随机数。

Random 类是随机数产生类,可以指定一个随机数的范围,然后任意产生在此范围中的数字

在这里插入图片描述 

import java.util.Random;
// nextInt(最大值 - 最小值 +1) + 最小值
//Random()方法生成大于等于0 且小于10的整数
public class _1_Random {
    public static void main(String[] args) {
        Random rd = new Random();
        int result = rd.nextInt(10);
        System.out.println(result);//3
        result = rd.nextInt(11) + 10;
        System.out.println(result);//15
        result = rd.nextInt(26);
        // 生成a~z
        //随机数+97可转换成字母
        char c = (char) (result +97);
        System.out.println(c);//c
    }
}
import java.util.Random;

public class RandomText {
    public static void main(String[] args) {
        //创建随机数对象
        Random random = new Random();

        //随机产生一个int类型取值范围内的数字。
        int num = random.nextInt();
        System.out.println(num);

        //产生[0~100]之间的随机数。不能产生101
        //nextInt翻译为:下一个int类型的数据是101,表明只能取到100
        int num2 = random.nextInt(101);
        System.out.println(num2);

    }
}

 结果如下: 

 在这里插入图片描述

 

import java.util.Random;

public class Test{
    public static void main(String[] args) {
        Random r = new Random();//定义Random对象
        for (int i=0;i<10;i++){//输出 10 个随机数
            System.out.println(r.nextInt(100)+"\t");
        }
    }
}

 

练习题  :  编写程序,生成5个不同的随机数。重复的话重新生成
最终生成的五个随机数放到数组当中,要求数组中这5个随机数不重复

 

import java.util.Arrays;
import java.util.Random;

public class RandomText {
    public static void main(String[] args) {

        //创建一个Random对象
        Random random = new Random();

        //准备一个长度为5的一维数组
        int[] arr = new int[5];
        for (int i = 0; i < arr.length; i++) {
            arr[i] = -1;
        }

        int index = 0;
        //while循环,生成随机数
        while (index < arr.length) {
            //生成随机数
            int num = random.nextInt(101);
            //判断arr数组中有没有num
            //如果没有这个num,就放进去
            if (!contains(arr, num)) {
                arr[index++] = num;
            }

        }

        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }


    }

    /**
     * 单独编写一个方法,这个方法可以判断数组中是否包含某个元素
     *
     * @param arr 数组
     * @param key 元素
     * @return true表示包含,false表示不包含
     */
    public static boolean contains(int[] arr, int key) {
        for (int i = 0; i < arr.length; i++) {
            if (key == arr[i]) {
                return true;
            }
        }
        return false;
    }

}

结果如下:  

 在这里插入图片描述

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

让火车在天上飞

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

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

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

打赏作者

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

抵扣说明:

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

余额充值