Java常用类(一)lang包常用类

 lang包常用类

1.包装类(值不可变 被final修饰)

包装类是对数据基本类型进行包装丰富了基本数据类型的操作。


| 基本类型 | 包装类型                        | 默认值 |
| -------- | ------------------------------- | ------ |
| byte     | Byte(ByteCache)               | null   |
| short    | Short                           |        |
| int      | Integer                         |        |
| long     | Long                            |        |
| char     | Character(CharacterCache 0-127) |        |
| float    | Float                           |        |
| double   | Double                          |        |
| boolean  | Boolean                         |        |
 

1.1 自动拆箱,自动装箱

自动装箱:基本类型的数据类型 自动转换成 包装类对象,包装类.valueOf(基本类型 变量)

Integer integer = 100;或  int a = 10;Integer.valueOf(int a);

自动拆箱:包装类对象自动转化成基本数据类型  包装类对象.***Value。

1.2 Integer

构造函数:

Integer(int a);

Integer(String s);//这个也是字符串转整型的方法

创建Integer对象可以通过自动装箱和构造函数。

比较大小:

Integer integer1 = 10;

Integer integer2 = 10;

Integer integer3 = new Integer(10);

Integer integer4 = 200;

Integer integer5 = 200;

integer1 == integer2 是true;

integer1 == integer3 是false; 

integer4==integer5是false;

原因:自动装箱实际是调用了valueOf()方法

 @HotSpotIntrinsicCandidate
    public static Integer valueOf(int i) {
        if (i >= IntegerCache.low && i <= IntegerCache.high)
            return IntegerCache.cache[i + (-IntegerCache.low)];
        return new Integer(i);
    }

这个方法底层代码逻辑就是,当给的整数i在-128—127范围内时,返回整数缓存池里的一个个对象,当不在这个范围内时,会新new一个对象,也就是说新开辟一块内存

所以包装类比较值的时候要调用equals()方法

public boolean equals(Object obj) {
        if (obj instanceof Integer) {
            return value == ((Integer)obj).intValue();
        }
        return false;
    }

由这段代码可知,当Integer对象调用equals();方法时,形参时object类型,比较前会事先判断形参是否是Integer类型,当是的时候才会去比较数值,不是时直接返回false。

Integer类实现了Comparable接口,是一个函数是接口,里面的一个方法compareTo(Integer i)可以用于比较两个Integer类对象的大小,如果相等返回值是0,如果integer小于i返回-1,integer大于i返回1;

public int compareTo(Integer anotherInteger) {
        return compare(this.value, anotherInteger.value);
    }
public static int compare(int x, int y) {
        return (x < y) ? -1 : ((x == y) ? 0 : 1);
    }

2.Object类  

2.1方法

 String toString();//将对象转换成字符串。//用注解重写toString()方法

 public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }

继承object的toString方法并不是我们想要的将对象的属性值一一输出,可以直接用lombok添加@toString;注解直接解决。

Boolean equals(object obj);比较两个对象是否相等。

int hashcode()获得对象的哈希码值

protected Object clone()  克隆类对象
protected void finalize() 禁止手动调用 GC自动调用方法  回收对象

2.2比较两个对象为什么要重写equals()和hashcode(); 

对象都继承了object的equals()方法和hashcode()方法,我们平时的逻辑是,两个对象相等是他们的哈希码和属性值相等。

    public boolean equals(Object obj) {
        return (this == obj);
    }

由代码可知,继承过来的equals()方法比较的是两个对象的地址值,所以我们再重写该方法。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java常用系统常用主要有以下几个: 1. java.lang:这是Java中最基础的,其中含了Java语言的核心,如Object、String、Thread、Math等。这些Java程序中经常被使用,因此无需导入该,就可以直接使用其中的。 2. java.util:这是Java常用的工具,其中含了一些常用的工具,如ArrayList、LinkedList、HashMap、Hashtable等。这些可以帮助我们更方便地管理数据和集合。 3. java.io:这是Java中用于文件和输入输出的,其中含了一些常用的输入输出,如File、FileReader、FileWriter、BufferedReader等。这些可以帮助我们读取和写入文件,进行输入输出操作。 4. java.net:这是Java中用于网络编程的,其中含了一些常用的网络编程,如Socket、ServerSocket、URL、URLConnection等。这些可以帮助我们进行网络连接和通信。 Java常用系统的特点主要有以下几个: 1. Java常用系统都是Java语言自带的库,无需额外下载或安装,可以直接在Java程序中使用。 2. Java常用系统提供了丰富的功能和方法,可以帮助我们更方便地进行数据处理、文件操作、网络通信等。 3. Java常用系统的使用方法相对简单,可以通过直接创建对象或调用静态方法来使用,无需复杂的配置和初始化。 4. Java常用系统的文档和使用说明相对完善,可以通过Java官方文档或在线文档来查看的使用方法和参数说明。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值