Java常用类

本文介绍了Java中的API概念,重点剖析Math类的常用数学方法如绝对值、三角函数、数据转换和随机数生成。同时讲解了Object类的clone和finalize方法,以及Integer类的包装和自动拆装箱。最后讨论了包装类的应用和哈希码计算。

一、API

应用程序接口,泛指Java中的类和接口、方法。JDK提供了官方的API帮助文档

二、Math类

abs:绝对值方法

sin 、cos、asin、acos

toRadians: 角度角转弧度角

toDegrees :弧度角转角度角

pow :计算次幂

random: 获得0~1 不包含1的一个随机小数

round :四舍五入取整

sqrt :根号

三、Object类

clone : 复制一个对象获得一个新的对象,克隆的对象的类一定要实现Cloneable接口

finalize() : 当垃圾回收器要回收一个对象时,由垃圾回收器调用这个对象的finalize方法完成回收。开发人员可以通过重写finalize方法实现在回收对象时做的一些自定义功能。

//克隆的对象实现Cloneable接口
public class Person implements Cloneable{
    String name;
    @Override
    protected Object clone() throws CloneNotSupportedException {
        // TODO Auto-generated method stub
        return (Person)super.clone();
    }
    //将所有回收的Person对象的id属性,写到一个日志中
    //重写方法
    @Override
    protected void finalize() throws Throwable {
        // 将this的id记录到日志中
        super.finalize();
    }
}

hashCode() : 返回对象的哈希码值 ,JVM会通过哈希算法将对象较长的内存地址计算出一个较短的内存地址值

四、包装类

八个基本类型的包装类。(类型名首字母大写,特殊:int 和 char)

byte : Byte

short : Short

int : Integer

long : Long

float : Float

double : Double

char : Character

boolean : Boolean

五、Integer类的使用

//创建Integer对象
Integer integer1 = new Integer(3);
System.out.println(integer1.toString());
//先将“3” 解析为 int 的 3 赋给int value属性
Integer integer2 = new Integer("3");
System.out.println(integer2);

常用的方法:

1. intValue : 返回Integer对象中封装的int值

2. parseInt :静态方法,将一个字符串解析为int值,要求字符串一定是整数格式的字符串

String s = "123";
//可能会出现 NumberFormatException
//Integer.parseInt("a"); //错误
//Integer.parseInt("123.5"); //错误
int i = Integer.parseInt(s);
System.out.println(i+1);  //124

3. 获得整数的二进制、八进制、十六进制的字符串形式

//获得整数的二进制
System.out.println(Integer.toBinaryString(12)); //1100
//十六进制
System.out.println(Integer.toHexString(15));//十六进制 f

经常将一个int值封装为Integer类型(引用类型,存的是地址),或将Integer对象获得其封装的int值,编程时有些麻烦,new Integer 或 调用 intValue方法

六、自动拆、装箱方式

//运行时 等同于 Integer i = new Integer(3);
//自动装箱
Integer i = 3;
//自动拆箱 等同于 int j = 3;
int j = new Integer(3);
public class TestInteger {
    public static void main(String[] args) {
        //自动装箱
        method(3);
        //等同于
        method(new Integer(3));
    }
    public static void method(Object obj) {
    }
}

例:判断代码的输出结果:

Integer i1 = new Integer(3);
Integer i2 = new Integer(3);
System.out.println(i1==i2); //false
System.out.println(i1.equals(i2)); //true
int i3 = new Integer(3);
int i4 = new Integer(3);
System.out.println(i3==i4); //true

Integer i5 = 300;
Integer i6 = 300;
System.out.println(i5==i6); //false
//常量池:存储常量且是对象 ,常量池中整数常量的范围是-128~127 ,在这之外的常量,创建对象存储在堆中
//常量池有共享的特点,常量池中有30的整数常量,再次使用这个常量就不在创建新的常量对象了
Integer i7 = 127;
Integer i8 = 127;
System.out.println(i7==i8); //true

包装类重写了equals方法,比较的是封装的基本类型值是否相等

String类重写了equals方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

aigo-2021

您的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值