Java 常用API
String
因为String的底层是一个字符数组,数组又是一个容器
容器所具有的特征:定位,求长,替换
求长
求长:得到一个字符串的长度
str.length()
定位
定位:
知道角标,找这个角标下的值是多少
str.charAt(0)
2. 知道值,找这个值找在第几个位置上出现
str.indexOf(‘b’)
变种的定位:
1.如果我知道的是一个连续的角标,从角标1到角标3
str.substring(0, 3)
2.我如果想知道这个字符串里面是否包含某一个子字符串
str.indexOf(“bc”)
3.如果要的是boolean值
str.contains(“cb”)
4.是不是以某个字符串开头
str.startsWith(“李国”)
5.是不是以某种字符串结尾
str.endsWith(“李”)
6.我想知道从某个位置向后找是否有子字符串
str.indexOf(“李国”, 2)
7.我想从后往前找,找到的一个出现的某个字符
str.lastIndexOf(“国”, 2)
替换
替换:String其实是不支持替换的,因为String的官方文档里,String创建后内容是不能被更改的
字符串可以用" + "来拼接,同时我们注意,字符串加上任何一个其他的对象,结果还是字符串
字符串不能根据角标来替换,但是可以根据内容来替换。
zfc.replace(“”, “f”);//将空字符也能替换为"f"
变种替换:
1.将类型改变
byte[] buf = zfc.getBytes();
char[] chs = zfc.toCharArray();
以某个字符或字符串切割字符串
String[] arr = zfc.split(“”);//以空字符切割,即将字符串切割为一个一个字符
2.类型不改变 将字符串转为小写 zfc.toLowerCase(); 去除字符串前后的空格 zfc.trim();
Arrays
操作数组的工具类型
自动排序(快速排序)
Arrays.sort(arr);
自动排序(归并排序)
Arrays.parallelSort(arr);
二分查找
Arrays.binarySearch(arr, 7);
拷贝
int[] tempArray = Arrays.copyOf(arr, 20);
填充
Arrays.fill(arr, 1000);//将数组用1000填满
Math
数学函数Math,可以调用各种各样的数学工具
abs(x) 返回x这个数的绝对值。
Math.abs(-10)
sqrt(x) 返回x的二次方根。
Math.sqrt(10)
max(x,y) 返回较大值。
Math.max(10,5)
min(x,y) 返回较小值。
Math.min(10,5)
StringBuffer
操作数组容器,是有一个叫Arrays的工具,方便我们更好的操作数组 但是我们说String其实也有容器的特征,所以,我们其实也有操作String的工具的 这个工具,叫做StringBuffer,或者StringBuilder 这个工具主要解决但是String创建以后,不能改变的问题
StringBuffer sb = new StringBuffer(“aslfhsdlgfdlgfvbno”);
StringBuilder sbuilder = new StringBuilder();
向末尾添加
sb.append(“李国成”);
向某个位置插入
sb.insert(3, “hhhhhahaha”);
替换
sb.replace(0, 7, “强”);
将字符串顺序颠倒
sb.reverse();
Random
生成随机数
Random r1 = new Random();
int num = r1.nextInt(32);//生成一个0-31的随机数
Integer
JAVA有自动装箱和开箱过程
Integer i1 = 99;
Integer i2 = 99;
System.out.println(i1 == i2);
结果为true两个Integer的i1和i2不是同一个对象,不是相等的,但是结果是true,这是因为JAVA有自动装箱和开箱过程,java自动将i1,i2认为是整型常量进行比较。
Integer i1 = -166;
Integer i2 = -166;
System.out.println(i1 == i2);
但是同样的比较,数字如果超过了-128–127之间,则不会被java自动装箱。结果为false
Integer i3 = new Integer(128);
计算数字中1的个数
Integer.bitCount(5)
BigDecimal
精确小数操作
BigDecimal bd = new BigDecimal(“2”);
BigDecimal bd1 = new BigDecimal(“3”);
System.out.println(bd.divide(bd1,5,BigDecimal.ROUND_UP));
//ROUND_UP向上取整,保留5位小数
在银行和金融系统中,我们其实真正用的数学计算,都是通过BigDecimal来实现的。因为,Integer太小。又因为,我们是有分这个辅币的,而是用Integer处理这个辅币,需要将原有的值扩大100倍另外有要求精确的小数计算,所以,金融系统中,我们常用的处理方式是BigDecimal。但是要注意,在民用的小金融体系下Integer这个工具,还是比较好用的,比如微信支付。
BigInteger
有一些很大的数,超出了整型的范围,BigInteger类型的数字范围较Integer,Long类型的数字范围要大得多,它支持任意精度的整数,也就是说在运算中 BigInteger 类型可以准确地表示任何大小的整数值而不会丢失任何信息。
可以将十进制的字符串转化为BigInteger
BigInteger a = new BigInteger(“235344623523”);
BigInteger b = a.add(new BigInteger(“345”));//b = a + 345
日历
Calendar
它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等日历字段之间的转换提供了一些方法
获取当前时间初始化
Calendar start = Calendar.getInstance();
设置日历的年/月/日/时/分/秒
start.set(Calendar.MONTH, 0);
start.set(Calendar.DAY_OF_MONTH, 1);
获取是一年中的第几天
start.get(Calendar.DAY_OF_YEAR)
Date
Date d = new Date();
简化时间格式
SimpleDateFormat sdf = new SimpleDateFormat();
ArrayList
//添加
list.add(“lvjie”);
list.add(“14”);
list.add(“zs”);
//改
list.set(0,“haha”);
//删
list.remove(0);
//查
list.get(0);
//查看长度
lsit.size();
//清除完
list.clear();
//定位
list.indexOf(“14”);
//是否包含当前元素
boolean falg = list.contains();
//容器是否为空
boolean falg1 = list.isEmpty();