Java.lang包源码学习

本文详细探讨了Java.lang包中的核心接口和类,包括Iterable、Readable、Runnable,以及Integer、String、Double等数值类型包装类。阐述了它们的主要作用、常见方法及其实现细节,如Iterable用于for each循环,Readable接口服务于Scanner,Integer的装箱拆箱等。同时,文章还介绍了Thread、Object、Class和Math等重要类的功能,为理解Java基础提供了深入的见解。
摘要由CSDN通过智能技术生成

Java.lang包接口摘要

Iterable 接口

参考链接
iterable 的主要作用是实现for each方法,遍历集合的工作依然是iterator来做

 default void forEach(Consumer<? super T> action) {
   
        Objects.requireNonNull(action);
        for (T t : this) {
   
            action.accept(t);
        }
    }
    //遍历例子
    list.forEach(s->{
   
    	System.out.println(s)
    })

Readable接口

参考链接
Readable接口就是为了Scanner类专门创建的一个接口,使得Scanner的入口参数不必限于某个类。实现Readable接口要只需是实现public int read(CharBuffer cb)方法。当方法返回-1时候Scanner类停止读取。

Runnable 接口

参考链接
我们实现多线程,有两种方式, 一种是继承Thread类,一种是实现Runnable接口,但是启动线程必须依赖thread的start方法。
有经验的程序员都会选择实现Runnable接口 ,其主要原因有以下两点:
首先,java只能单继承,因此如果是采用继承Thread的方法,那么在以后进行代码重构的时候可能会遇到问题,因为你无法继承别的类了。
其次,如果一个类继承Thread,则不适合资源共享。但是如果实现了Runable接口的话,则很容易的实现资源共享。参考链接

Java.lang 包下类摘要

在这里插入图片描述

Integer类

Integer是int的包装类,int 常用于局部变量和参数传递的一些简单的数据存储和传递,Integer是包装类,在-128-127之间时Integer和int是一致的,在这个范围之外Integer就会自动创建对象来进行操作了,Integer 提供了非常多的方法来处理int型数据参考链接
常用方法参考链接

  • int compareTo(Integer anotherInteger) //在数字上比较两个 Integer 对象。
  • boolean equals(Object obj) //比较此对象与指定对象。
  • double doubleValue() //以 double 类型返回该 Integer 的值。
  • float floatValue() //以 float 类型返回该 Integer 的值。
  • int intValue() //以 int 类型返回该 Integer 的值。
  • long longValue() //以 long 类型返回该 Integer 的值。
  • int parseInt(String s) //将字符串转换成int
  • String toBinaryString(int i) //以二进制(基数 2)无符号整数形式返回一个整数参数的字符串表示形式。
  • String toHexString(int i) //以十六进制(基数 16)无符号整数形式返回一个整数参数的字符串表示形式。
  • String toOctalString(int i) //以八进制(基数 8)无符号整数形式返回一个整数参数的字符串表示形式。
  • String toString() //返回一个表示该Integer值的String对象。
  • Integer valueOf(int i) 返回一个表示指定的 int 值的 Integer 实例。
  • Integer valueOf(String s) 返回保存指定的 String 的值的 Integer 对象。
  • Integer valueOf(String s, int radix) 返回一个 Integer 对象

装箱和拆箱

  • 基本数据类型转换为包装类的过程称为装箱
  • 包装类变为基本数据类型的过程称为拆箱
public class Demo {
   
    public static void main(String[] args) {
   
        int m = 500;
        Integer obj = m;  // 自动装箱
        int n = obj;  // 自动拆箱
        System.out.println("n = " + n);
      
        Integer obj1 = 500;
        System.out.println("obj等价于obj1返回结果为" + obj.equals(obj1));
    }
}

String 类

String类用于处理字符串的一切问题
特征

  • String类是final的,不可被继承;
public final class String
    implements java.io.Serializable, Comparable<String>, CharSequence {
   
  • String类本质是字符型数组char[ ],并且值不可改变;
private final char value[];
  • 创建字符串的方式很多,归纳起来有三类:
第一类,利用new关键字创建一个String对象,如:String s1 = new String("abc");

第二类,利用特性3直接创建,如:String s2 = "abc";

第三类,利用特性4串联生成新的字符串,如:String s3 = "a" + "b" + "c";

string 常用方法参考链接

  • length() 字符串的长度
  • charAt() 截取一个字符 //ch=“abc”.charAt(1); 返回’b’
  • toCharArray() String转换成char数组
  • substring()
  • trim() 去掉起始和结尾的空格

StringBuffer
string的字符串长度是固定的,StringBuffer用于处理可变字符串,是一个容器,区别去String的是,StringBuffer是一个对象,所有的这些方法处理的都还是StringBuffer这个对象,而String可能是不同的对象。

StringBuffer s0=new StringBuffer();分配了长16字节的字符缓冲区
StringBuffer s1=new StringBuffer(512);分配了512字节的字符缓冲区
StringBuffer s2=new StringBuffer("Happy new year!");在字符缓冲区中存放字符串"Happy new year!",另外,后面再留了16字节的空缓冲区。

常用方法参考链接

  • append()添加
    作用是追加内容到当前StringBuffer对象的末尾,类似于字符串的连接
    synchronized决定StringBuffer是线程安全的
public synchronized StringBuffer append(int i) {
   
  • insert()方法
    接受boolean,char,double,float,int,long,string等各种值
    该方法的作用是在StringBuffer对象中插入内容,然后形成新的字符串。例如:
StringBuffer sb = new StringBuffer(“TestString”);

sb.insert(4,false);

该示例代码的作用是在对象sb的索引值4的位置插入false值,形成新的字符串,则执行以后对象sb的值是”TestfalseString”。

append和insert的区别:
append默认在末尾添加,insert可以在指定位置添加

StringBuilder
StringBuilder和StringBuffer内部代码几乎一样,只是StringBuffer的所有方法都被关键字synchronized修饰,也就是说它是线程安全的

Double 类

是double的包装类,用于处理双精度数据的类

public final class Double extends Number 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值