一些java API解读

文章展示了Java中几个常用的API用法,包括Math类的数学运算,Date和Calendar类的日期处理,Random类的随机数生成,以及StringBuffer和StringBuilder的字符串操作。在日期处理方面,推荐使用Calendar类替代Date类的部分方法。同时,文章提到了线程安全的StringBuffer类及其与StringBuilder的区别。

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

java中中有着一系列的api

方便程序员调用

比如我们最常见的Math类

public class MathDemo {
    public static void main(String[] args) {
        System.out.println(Math.sqrt(4));//开方
        System.out.println(Math.pow(2, 3));//平方
        System.out.println(Math.floor(9.9));//向下取整
        System.out.println(Math.ceil(9.1));//向上取整
        System.out.println(Math.PI);
        System.out.println(Math.round(8.8));//四舍五入求近似值
        System.out.println(Math.round(8.2));
        System.out.println(Math.random());//0-1内的随机数
    }
}

还有Date类

但是要注意,处理date类中常用的getTime方法外,其他的方法普遍已经比较少见或者有着更好的方法解决,比如Calendar类

import java.util.Date;

public class DateDemo {
    public static void main(String[] args) {
        Date date = new Date();
        date.getTime();
        System.out.println(date.getTime());
        date.getMonth();
        System.out.println(date.getMonth());
        date.getYear();
        System.out.println(date.getYear());
        //java中不建议使用的方法,因为已经有更好的方法
    }
}

Calendar类


public class CaldendarDemo {
    public static void main(String[] args) {
        Calendar calendar = new GregorianCalendar();//高丽格里利日历

        System.out.println(calendar.getTimeInMillis());//从1900年1月1日0点开始一直到程序运行结束的毫秒差
        System.out.println(calendar.get(Calendar.YEAR));
        System.out.println(calendar.get(Calendar.MONTH)+1);//月份按数组算,所以真实月份要+1
        System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
        System.out.println(calendar.get(Calendar.HOUR_OF_DAY));
        System.out.println(calendar.get(Calendar.MINUTE));

        System.out.println(calendar.get(Calendar.DAY_OF_WEEK));
        System.out.println(calendar.get(Calendar.WEEK_OF_YEAR));
    }
}

随机数类Random

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

public class RandomDemo {
    public static void main(String[] args) {
        Random random = new Random();
        // System.out.println(random.doubles());
        System.out.println(random.nextFloat());//随机0-1之间的数
        System.out.println(random.nextBoolean());//随机true false
        byte[] a = new byte[3];
        random.nextBytes(a);
        System.out.println(Arrays.toString(a));
    }
}

格式化日期类

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

public class SimpleDateformatDemo {
    public static void main(String[] args)  {
        Date date = new Date();
        System.out.println(new Date());


        SimpleDateFormat sdf = new SimpleDateFormat("YYYY年MM月dd日");//格式化日期类  呈现相应的格式
        String str = sdf.format(date);
        System.out.println(str);


    }
}

StringBuffer类

StringBuffer
可变的字符串  线程安全
适用于多线程问题 上锁 安全
char[] value;
   默认会创建一个数组,向数组中添加元素,当数组中元素充满之后就会进行扩容   (value.length << 1)+2  2倍+2
   判断
   if (minimumCapacity - value.length > 0) {
    value = Arrays.copyOf(value,
            newCapacity(minimumCapacity));


   然后将新数组的地址赋给value
   无论此处扩容拼接多少次,StringBuffer对象都始终只创建一次

public class StringBufferDemo {
    public static void main(String[] args) {
       
        StringBuffer s = new StringBuffer();
        //无参构造方法,默认创建一个长度为16的char数组
                     s.append("abcdef");
                     s.append("abcdef");
                     s.append("abcdef");
        System.out.println(s);

        StringBuffer s1 = new StringBuffer("abcd");//有参   创建的数组 容量是给定的长度+16
                     s1.append("abcd");
                     s1.append("abcd");
                     s1.append("abcd");
        System.out.println(s1);
        StringBuffer s2 = new StringBuffer(20);//指定容量         创建的数组 容量是指定的
                     s2.append("abcde");
                     s2.append("abcde");
                     s2.append("abcde");

                     s2.insert(2, "x");//指定位置插入指定内容
        System.out.println(s2);
                     s2.deleteCharAt(3);//删除指定位置的字符
        System.out.println(s2);
                     s2.replace(0, 3, "YYY");//指定区间替换为某一项YYY  ---->左闭右开
        System.out.println(s2);
                     //s2.reverse();//逆序
                     //System.out.println(s2);

                     s2.substring(0, 5);
                     String ss = s2.substring(0,5);//此处创建一个新的对象,String类型  截取(复制)到新String类型对象中去
                        System.out.println(s2);
                        System.out.println(ss);

    }
}

StringBuilder类

几乎与StringBuffer类一模一样

二者唯一的区别就是StringBuffer类源码中是上锁的,线程安全,一般用于多线程问题

--->synchronized 

SstringBuilder类未上锁,线程不安全,一般用于单线程问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值