Java常用API(Quick Review)

本文详细介绍了Java中常用的API,包括Object类的基本方法,Date和Time日期处理,DateFormat和SimpleDateFormat的格式化,Calendar的日历功能,System类的系统操作,Math类的数学运算,Wrapper类的装箱拆箱,Scanner的输入处理,Random的随机数生成,String的各种操作,StringBuilder和StringBuffer的字符串拼接优化,以及BigInteger和BigDecimal的大数据运算。此外,还提到了Runtime类和Java8的时间日期类以及函数式接口的相关内容。

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

一、常用API-1

【1】对象根类:Object

/**
    * Object() //Constructor
    * 
    * -------------------------------------------
    * equals()
    * toString()
    * 
    * clone()
    * 
    * wait()
    * notify()
    * notifyAll()
    * 
*/

【2】时间日期类:Date

/**
    * 
    * new Date();
    * new Date(long time);
    * 
    * ----------------------------------------------------
    * 
    * getTime()
    * parse()
    * toString()
    * 
    * 
*/

【3】时间日期格式化类:DateFormat & SimpleDateFormat

/**
    * 
    * new SimpleDateFormat(String pattern); //
    * 
    * ------------------------------------------------
    * 
    * format()
    * parse()
    * 
    * 
*/

【4】日历类:Calendar & GregorianCalendar

/**
    * 
    * Calendar cal = Calendar.getInstance(); //
    * 
    * --------------------------------------------------
    * 
    * cal.get(field);
    * cal.set(field, value);
    * cal.add(field, amount);
    * 
    * cal.getTime(); //将Calendar对象转成Date对象
    * 
*/

【5】系统类:System

/**
    * 你想起sysout 和 syserr 了吗?
    *     提示:Eclipse,按两次Atl + /,会出来:sysout 和 syserr
    *       它们可以快速生成以下代码:
    *         System.out.println("最原始野蛮的调试方法");
    *         System.error.println();
    * 
    * --------------------------------------------------------------------
    * 
    * currentTimeMillis(); //相当于:new Date().getTime();
    * 
    * exit(0); //0,正常退出JVM。非0为异常退出。
    * gc(); //通知GC器gc
    * getProperty(String key); //key即propertyName
    *
    * arraycopy(srcArr, srcIndex, destArr, destIndex, count); //数组拷贝
    *  
*/

【6】数学类:Math

/**
    * 
    * abs() //绝对值
    * max() //取大
    * min() //取小
    * ceil() //取顶板值,即向上取整。注意:整数取值为自身。
    * floor() //取地板值,即向下取整。注意:整数取值为自身。
    * round() //四舍五入。注意:只看小数点后第1位数
    * pow() //次方,开方
    * random() //随机数。[1,0)。注意:本质为伪随机数。基本同Random类
    * ...
    * 
*/

【7】Wrapper:基本类型的包装类

/**
    * 
    * 4类8种 = 4整型 + 2浮点 + 1字符 + 1布尔
    *  基本类型 --> 包装类型
    *   byte --> Byte
    *   short --> Short
    *   int --> Integer                                <<< 注意变化
    *   long --> Long      --------以上整型
    *   float --> Float
    *   long --> Double    --------及上浮点
    *   char --> Character  --------字符               <<< 注意变化
    *   boolean --> Boolean  ---------布尔
    *
    *   既然它们是包装类型,就应当理解两个:
    *        1)它们都是引用类型,名称首字母大写
    *        2)自然都可以new啦,比如:Float f1 = new Float(3.14f);
    * ----------------------------------------------------------------
    * 1】字符串转基本类型
    * 各Wrapper类,都有一个parseXxx方法,用于将String字符串类型数据 转化成 相应的基本类型数据
    * 
    *     例如:
    *         int age = Integer.parseInt(ageStr);
    *         double height = Double.parseDouble(heightStr);
    * 2】Wrapper转字符串
    * 各Wrapper类,都有一个toString()方法,用于将该类型数据,转成字符串。
    *
    * 3】手动装箱
    * 装箱:valueOf()
    *   各Wrapper类,都有一个装箱方法valueOf(),其参数是相应的基本类型:
    *         例如:Double db1 = Double.valueOf(3.1415926535897932l);
    *            Short n = Short.valueOf((short)2);
    * 4】手动拆箱
    * 拆箱:xxxValue()
    *    各Wrapper类型数据,都有一个相应的xxxValue()拆箱方法
    *        例如:
    *            Character对象,就有一个charValue()拆箱方法,如
                        Character c1 = Character.valueOf('a'); char c2 = ch1.charValue();
    *            Double对象,就有一个doubleValue()拆箱方法
    * ----------------------------------------------------------------
    * 自动拆箱和装箱
    *     自动装箱:
    *         示例:Integer i = 100;
    *     自动拆箱:
    *         示例:i++; ==> 相当于i = i + 1; //i是Wrapper型,运算需先拆箱,它会自动完成的
    * 都是自动的,理解原理即可...
*/

二、常用API-2

【1】扫描器类:Scanner

/**
    * 
    * Scanner sc = new Scanner(System.in);
    * 
    * String str = sc.next(); //接收标准输入为字符串
    * 
    * Integer num = sc.nextInt(); //接收标准输入为int类型
    * 
    * PS:接收输入的数据最原始的都是字符串,但Scanner会帮我们自动转成所需类型的数据
*/

【2】随机数类:Random

/**
    * 
    * Random r = new Random();
    * 
    * r.next(); //不限
    * 
    * r.next(10); //[0,10)
    * 
    * r.next(10) + 1; //[1,11)  即:[1, 10]
    * 
    * 
    * 
*/

【3】字符串类:String

/**
    * 
    * String有以下几个重点:
    *
    * 一、掌握String的底层本质
    *         1.是数组:char[], byte[]
    *         2.被final修饰
    *
    * 二、掌握String的一种创建方式,以及在内存中的表现
    * 
    *     参考:字符串常量池
    *             字符量方式创建的字符串,在池中
    * 三、掌握一堆常用API方法
    * 
    * 
    * 四、掌握几个依赖正则的特殊方法,如split
    *     参见:正则式
    * 
    * 五、注意String的immutable特点及拼接的性能问题
    * 
    *     参见:String 与 StringBuilder
    * 
    * -----------------------------------------------------------
    * 
    * String常用API:
    * 【1】字符串比较
    *     equals        经验:"".equals(str); 防空指针异常
    * 
    * 【2】字符串获取
    *     length()
    *     concat() //拼接
    *     charAt() //下标
    *     indexOf() //子串位置(首字符下标),无返-1
    * 
    * 【3】字符串的截取
    *     substring(begin[, end]) //截取子串,有重置方法
    * 
    * 【4】字符串的转换
    *     toCharArray() //串转字符数组
    *     getBytes() //串转字节数组
    *     replace(old, new) //旧替成新
    * 
    * 【5】字符串分割
    *     split(pattern) //注意与正则的结合使用
    * 
    * 【6】其它,如startsWith(),endsWith(),toUpperCase(),toLowerCase(),contains(),trim()等
*/

【4】字符串缓冲类:StringBuffer & StringBuilder

/**
    * 
    * StringBuffer与StringBuilder的关系
    *     1 联系:
    *     2 区别:
    *         StringBuffer:安全,效率低
    *         StringBuilder:非线程安全,效率高
    * 
    * 建议:一般用 StringBuilder 即可
    * ----------------------------------------------------------
    * 
    * StringBuilder :
    *     String字符串拼接存在的问题。
    * 
    *     StringBuilder 的本质:底层类似String,也是数组,但没有final修饰,默认new byte[16]
    * 
    *     StringBuilder 常用API:
    *         【1】特定方法
    *             append()
    *             delete()
    *             insert()
    *             reverse()
    *             ...
    *         【2】同String的方法
    *             indexOf()
    *             substring()
    *             length()
    *             charAt()
    *             ...
    *     StringBuilder对象方法的链式调用
    *             toString(); //转成String类型了,也就不能链式调用了
    * 
    * 
*/

【5】Object工具类:Objects

/**
    * 
    * 主要是增强了安全性(如容忍空指针等)
    * 
    *     equals()
    *     ...
    * 
    * 
*/

【6】数组工具类:Arrays

/**
    * 
    * 常用方法:
    * 
    *     Arrays.toList(arr);
    * 
    *     Arrays.sort(arr); //默认升序或自然升序
    * 
    *     Arrays.toString(arr); //相反操作:字符串转数组 str.toCharArray();
    * 
    *     Arrays.binarysearch(arr, element); //二分查找。找到返回下标,失败返回负数
    * 
*/

【7】集合工具类:Collections

/**
    * 
    * 常用API:
    * 
    *     addAll()
    * 
    *     shuffle()
    * 
    *     sort(List) //注意重载方法 sort(List, Comparator)
    * 
    * 
    * 
*/

三、常用API-3

【1】大数据运算类

/**
    * 
    * 【1】BigInteger    解决痛点:long越界问题
    * 
    *     四则运算:
    *     add()
    *     subtract()
    *     multiply()
    *     divide()
    *
    * 【2】BigDecimal    解决痛苦:浮点数运算 -- 精度失效问题
    * 
    *     四则运算:
    *     add()
    *     subtract()
    *     multiply()
    *     divide()
    * 
    *     可见,BigDecimal 和 BigInteger  在常用API和使用方法非常相似
    *     
    *     以下才是重点或难点:BigDecimal 的 几大坑:
    *     (1)创建 BigDecimal 对象
    *             建议1:不要使用 BigDecimal构造器创建BigDecimal对象,请使用BigDecimal的valueOf()方法来创建BigDecimal对象
    *             建议2:如果使用BigDecimal来创建,请传递实参时使用String字符串类型
    *             建议3:如果使用BigDecimal来创建,又未直接使用String,请转成String
    *            
    *     (2)BigDecimal 对象的 divide()重载方法
    *            divide(BigDecimal divisor, int scale, RoundingMode mode)
    *
    *        说明:
    *            a) divisor:除数对象
    *            b) scale:标度,保留小数位数
    *            c) mode:RoundingMode 舍入模式,常用
    *                - BigDecimal.ROUND_UP			#向上加1
    *                - BigDecimal.ROUND_DOWN		#直接舍去
    *                - BigDecimal.ROUND_HALF_UP	    #四舍五入(没特殊要求,一般就用这个好了)
    * 
*/

【2】Runtime类

/**
    * 
    * Runtime类:
    *     Runtime 即运行时环境
    * 
    *     常用方法:
    *     gc() //System.gc()的底层,调用的就是它
    *     maxMemory()
    *     totalMemory()
    *     freeMemory()
    *     exec() //开启一个程序
    * 
*/

【3】JDK8时间日期类

/**
    * 
    * 
    * 
    * 
    * 
    * 
    * 
    * 
    * 
    * 
    * 
*/

【4】函数式接口

/**
    * 
    * 
    * 
    * 
    * 
    * 
    * 
    * 
    * 
    * 
    * 
*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值