1、Math类(在java.lang包中)
Math.abs()计算平均数
Math.ceil()比浮点数大的最小整数值 6.5——>7 ,常用作分页
Math.floor()比浮点数小的最大整数值 6.5——>6
Math.power(2,3); 计算2的3次方
Math.random();随机数生成器 随机返回一个大于等于0.0,小于等于1.0的浮点数
随机数的公式:Math.round(Math.random()*(y-x))+x;(随机出x到y的整数)
Math.round()只能四舍五入到整数位。
Math.sqrt()开方
引入大整数包:java.math.BigDecimal;
BigDecimal d= new BigDecimal(9.33);
System.out.println(d.setScale(2,BigDecimal.ROUND_HALF_UP));
设置大整数,设置其精确度为0.01位,然后四舍五入
2、random
引入随机数类包:java.util.random;
1、不使用种子:
Random r= new Random();
System.out.println(r.nextInt(bound));——>可以生成随机整数,范围是bound
2、使用种子:(种子数值无所谓)
Random r= new Random(10);
System.out.println(r.nextInt(bound));
Random r1= new Random(10);
System.out.println(r1.nextInt(bound));
相同的种子产生的随机数相同;
汉字的随机生成
Random r2=new Random();
System.out.println((char)(r2.nextInt(10000)+20000));
3、String类
String对象代表一组不可改变的Unicode字符序列。当引起字符串的属性或长度改变的操作,将会得到一个复制了原对象中所需部分的新的String对象。 (副本)
1、“字符串”.toCharArray();将字符串转换成字符数组
2、字符连接:
1、String a="a"+"b";(开了3个堆)
2、String b="a".concat("b").concat("c");(开了两个堆)
3、StringBuilder和StringBuffer类(用在多个字符串连接的场合,会产生好多无用堆,导致速度变慢,这两个解决,速度快)这两个类都在lang包中。
1、StringBuffer
优点:速度快 缺点:占内存
StringBuffer sb=new StringBuffer();
sb.append("你好");
sb.append("哈尔滨");
System.out.println(sb);
System.out.println(sb.capacity());(开StringBuffer空间,初始16个汉字的大小,满了之后会扩展为(16+1)*2大小)
这里打印sb对象就能出现一个字符串明显反映了StringBuffer中重写了toString方法
sb.insert(index,"哈尔滨”);(在index位置上插入)
sb.delete(1,2);(删除1,2之间的字符串)
sb.reverse()://翻转字符
sb.indexOf("哈");
sb.replace(0,2,"黑龙江");
2、StringBuilder类
StringBuffer用在线程同步中,比较安全,性能略差
StringBuilder不用再线程同步中,不安全,性能好
其他两者一样。
工作中遇到StringBuffer的地方很少,大多使用StringBuilder,StringBuilder的性能损失已经很少了
3、将基本类型转换成字符串
String s=String.valueOf(123);
4、比较:使用equals()方法可以比较两个字符串,还可以使用equalsIgnoreCase()方法在忽略大小写的情况下看是否相同。
String a="哈尔滨";
String b="哈尔滨";
a==b;
当字符串内容相等时,a、b两个栈指向同一个堆,所以栈的内容都是同一个堆的地址。
当要看两个堆内容是否相等时,使用equals();
a.equals(b);
能保持==(地址相同,堆就是同一个)的一定equals(同堆内容同),但是equals的不一定==;
compareTo:比较一个String对象与另一个对象的词汇值,"abc".compareTo("def");得-3;即长度相同,按首个不同的字符进行减;长度不同,比长度。
5、查找
能不能查到:前缀查找:startwith() 后缀查找:endwith()
查找字符在字符串中的位置:indexof(str,fromindex) / lastIndexOf(str,fromindex)从后面找,从前面数。
6、编辑
trim
去掉左右空格;rtrim()去掉右空格,ltrim()去掉左空格;
toUpperCase() toLowerCase()转大写小写
7、分割(split(regex)返回一个字符数组)
String s2="a=100";
String [] as=s2.split("=");
as[0]=a;
as[1]=100;
8、重写equals
@Override public boolean equals(Object obj) { if(obj==null){ return false; } if(this==obj){ return true; } if(this.getClass()!=obj.getClass()){ return false; } MyDog dog=(MyDog)obj; if(this.year==dog.year&&this.name.equals(dog.name)){ return true; } return false; }
除了在HashTable、HashMap、HashSet等hash结构的集合时才会重写hashCode不然不重写
4、包装类
包装类父类是Number类,基本类型没父类
包装类相当于基本类型和引用类型的交流的媒介。起到承上启下作用。
1、将基本类型变成字符串(装箱)——>用String.valueOf可以将基本类型变成字符串 或 Integer data1=10;基本类型变包装类
2、将字符串变成基本类型(拆箱)——>用包装类Interger.parseInt(s1);
5、对象数组
存放对象的数组,也可以排序(Arrays.sort())但是得先让对象的类实现Comparable接口,重写compareto方法。
可以二分查找:Arrays.binarySearch(array[],key);
6、标准输出
print()方法会将它的参数放到标准输出中
println()方法会附加一个换行符
printf()方法能够格式化输出
%9.2 9是一共9位,2是小数点后两位进位
%+9.2 +表示带正负号
%-9.2 -表示左对齐