一、常用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】函数式接口
/**
*
*
*
*
*
*
*
*
*
*
*
*/