
1.API: 1.object类:java冷知识:在方法中声明的类称为局部类(也属于内部类),局部类不仅能够访问包含它们的外部类,还可以访问局部变量。不过,可以被访问的局部变量必须被声明为final。
作用:
- 一个类要么继承Object类,要么间接继承了Object类,Object类是java中的祖宗类
- Object类的方法是一切子类都可以直接使用的,所以我们要学习Object类的方法
在object类中,我们最常用到的两个api是equal和toString方法
官方给出的equal方法逻辑
- 先判断传进来的对象是不是自己
- 在判断这个对象是不是空以及是不是本类的类型(第一个getClass()省略this.也就是本类的意思)
- 然后就是判断每个属性的值是否相等。
细心的同学可能注意到了,这里的name判断的时候调用的是Objects.equals方法,而不是直接调用equals。
因为如果这里的name是一个null而没有做处理直接进行判断的话,则会抛出异常。而Objects.equals方法则进行了判断,避免了这种情况。
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Student student = (Student) o;
return id == student.id && age == student.age && Objects.equals(name, student.name);
}
如果不重写toString,那么直接输出就会输出包名位置,以及地址等信息。
我们可以重写toString方法,来输出我们想要的信息
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
2.StringBuilder:
作用:提高字符串的 *** 作效率,比如拼接。修改等。
append()方法,参数几乎可以是各种类型
而且,StringBuilder支持链式编程。
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
sb.append("a").append(false).append(12);
System.out.println(sb);
}
StringBuilder只是帮我们来处理字符串,通过toString方法即可获得处理后的字符串。
StringBuilder的另一个常用方法reverse,反转字符串。
public class Builder {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
sb.append("1").append(2).append(3);
sb.reverse().append("las");
System.out.println(sb);
}
}
3.Math类
常用的方法:
1.获取参数绝对值
2.向上取整
3.向下取整
4.四舍五入
5.获取两个int值中的较大值
6.返回a的b次幂的值
7.返回值为double的随机值,范围[0.0,1.0]
4.BigDecimal类:
double类型在进行运算时,往往会出现精度问题。
比如下列代码:
public class Builder {
public static void main(String[] args) {
Double a = 0.1+0.2;
System.out.println(a);
}
}
结果并不是0.3,那我们如何来解决这个问题呢?java给我提供了BigDecimal类去处理精度损失问题。
建议使用以下两种方式进行创建对象
一种是作为字符串类型传参,第二种是通过valueOf方法进行传参(java强制禁止使用BigDecimal(Double)构造器进行创建对象,可能存在损失精度的风险)
public class Builder {
public static void main(String[] args) {
BigDecimal decimal = new BigDecimal("0.1");
BigDecimal decimal1 = BigDecimal.valueOf(0.2);
System.out.println(decimal.add(decimal1));
}
}
加减乘除方法:
public class Builder {
public static void main(String[] args) {
BigDecimal decimal = new BigDecimal("0.1");
BigDecimal decimal1 = BigDecimal.valueOf(0.2);
System.out.println("相加:"+decimal.add(decimal1));
System.out.println("相减:"+decimal1.subtract(decimal));
System.out.println("相乘:"+decimal.multiply(decimal1));
System.out.println("相除:"+decimal1.divide(decimal));
}
}
doubleValue()方法可以将BigDecimal类转化成double方法。
注:因为BigDecimal是做精度运算的,所以当我们算数除不尽的时候,则会抛出异常,这时我们需要做一步处理。
下列代码表示保留两位小数,第三位小数四舍五入。
decimal1.divide(decimal,2, RoundingMode.HALF_UP)欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)