当前位置: 首页 > news >正文

Java(api中常用类,包括Object类,Arrays类,String类,基本数据类型包装类)

目录

一.api

1.api介绍:

二.Object类

1.toString方法

2.equals方法

1.什么是equals方法

2.Object类向我们提供的equals方法

​编辑

3.equals方法与"=="的区别

三.Arrays类

1.toString方法

2.sort方法

3.copyOf方法

4.fill方法

5.binarySearch方法

四.基本数据类型包装类

1.Integer

1>.装箱

2>.拆箱

五.String类

1.String类介绍

2.String类中常用方法

3.字符串常量池


一.api

1.api介绍:

java语言中已经把很多功能实现了封装成不同的类和接口,java官方提供了一个文档,为类和接口提供说明,这个文档就叫api文档

api就是java官方给开发人员提供的java中类的使用说明书

二.Object类

Object类是所有类的父类,我们常称Object类是万类之祖

1.toString方法

toString方法会返回一个对象的字符串表现形式,输出的是一个字符串

我们所有没有继承的类都会默认继承Object类,用类名.toString就可以调用toString方法

public static void main(String[] arg){
        toString t = new toString();
        t.setAge(10);
        t.setName("王五");
        System.out.println(t.toString());
}

但是运行结果却和我们预期不同,运行结果如下:

这是为什么呢,toString方法应该将我们类中的信息以字符串的形式向控制台输出才对,为什么是类的在包中的位置和地址呢,让我们看看源码

从Object中toString方法的源码我们可以看出,它和我们的预期并不相符,只是输出了一个地址

,所以我们想要将类中的信息表示出来就要对toString方法进行重写

//类中的属性
    private int age;
    private String name;
@Override
    public String toString() {
        return "toString{" +
                "age=" + age +
                ", name='" + name + '\'' +
                '}';

这样就得到了我们想要的功能

2.equals方法

1.什么是equals方法

equals方法用于比较两个对象中的信息是否相等

2.Object类向我们提供的equals方法

Object类向我们提供的equals方法是通过==号来判断两个对象地址是否相同,这并不符合我们的要求,所以我们通常会对equals方法进行重写,源码如下:

3.equals方法与"=="的区别

==:如果两边是基本数据类型,==用来判断元素值是否相同,当==两边是对象时,==判断的是两边对象地址是否相同

equals:equals用来判断两个对象中的内容是否相同,但Object类向我们提供的equals方法不能实现,我们通常会进行重写

三.Arrays类

Arrays类在java.lang包中

1.toString方法

将数组中的元素以字符串的形式向控制台输出

public static void main(String[] args) {
        int[] a = {1,2,3,4,5};
        System.out.println(Arrays.toString(a));
}
运行结果如下:[1, 2, 3, 4, 5]

2.sort方法

冒泡排序,通过两两交换实现将数组升序排列

public static void main(String[] args) {
        int[] a = {1,2,5,3,4};
        Arrays.sort(a);
        System.out.println(Arrays.toString(a));
}
运行结果如下:[1,2,3,4,5]

3.copyOf方法

将指定数组赋值给另一个指定长度的新数组,常用于数组扩容

public static void main(String[] args) {
        int[] a = {1,2,5,3,4};
        int[] b = Arrays.copyOf(a,10);
        System.out.println(Arrays.toString(b));
}
运行结果如下:[1, 2, 5, 3, 4, 0, 0, 0, 0, 0]

4.fill方法

将指定的值赋给数组

public static void main(String[] args) {
        int[] a = {1,2,5,3,4};
        Arrays.fill(a,10);
        System.out.println(Arrays.toString(a));
}
运行结果如下:[10, 10, 10, 10, 10]

5.binarySearch方法

二分查找算法,通过每次去除一般的元素,高效进行查找,前提必须是这个数组是有序的(升序或者降序)

public static void main(String[] args) {
        int[] a = {1,2,3,5,11,12,13,17,18};
        System.out.println(Arrays.binarySearch(a, 17));
}
运行结果如下:7

四.基本数据类型包装类

每一个基本数据类型都有一个自己的包装类

1.Boolean:

布尔类将对象中的基元类型 boolean的值包 boolean

2.Long:

Long类包装一个对象中的基本类型 long的值。

3.Integer:

Integer类包装一个对象中的原始类型 int的值。

4.Short:

Short类在一个对象中包含一个基本类型 short的值。

5.Characte:

Character类包装一个对象中的基本类型 char的值。

6.Byte:

Byte类在一个对象中包含一个原始类型 byte的值。

7.Double:

Double类包装一个对象中的基本类型 double的值。

8.Float:

Float类在一个对象中包含一个基本类型 float的值。

因为基本数据类型不满足我们对面向对象语言特性的使用,所以产生了基本数据类型包装类,每一个基本数据类型包装类中都有一个Value属性,存储基本数据类型的值

1.Integer

Public static void mian(String[] arg){
    //创建对象
    Integer i1 = new Integer(20);//包装成一个int的基本类型
    Integer i2 = new Integer("10");//包装成一个String类型
    //与其他类型的转换
    int a = i1.intValue();//将值取出来 转化为基本数据类型
}

1>.装箱

将基本数据类型赋值给基本数据类型包装类这一操作被称为装箱

Public static void main(String[] arg){
    Integer i1 = new Integer();
    Integer i1 = Integer.valueOf(10)//手动装箱
    Integer i2 = 10;//自动装箱,它默认会调用Integer中的ValueOf方法
}

​

​

自动装箱时需要注意,valueOf方法中整数值在-128到127之间返回的是Integer类中的数组,所以在这个范围内值相同,地址也就相同,在这个地址需要比较的话用equa方法。

不在这个范围之内,每次都是创建一个新的对象

2>.拆箱

将基本数据类型从基本数据类型包装类的对象中取出值的操作我们称为拆箱

​
Public static void main(String[] arg){
    Integer i1 = new Integer(10);
    int i = i1;//自动拆箱,默认调用Intvalue方法
    int i1 = i1.Intvalue();//手动拆箱
}

​

五.String类

1.String类介绍

1.String类是java中专门用于处理字符串的类

2.String类是1被final修饰的,其他类不能继承
3.String类中,有一个char数组用来存储字符串的内容
4.字符串的对象一旦创建后就不能改变了(因为char数组是被final修饰的),一旦值改变了就会创建一个新的字符串对象

2.String类中常用方法

1.boolean equals//比较两个字符串内容是否一致
2.boolean equalsIgnoreCase//比较两个对象内容是否相等,忽略大小写
3.boolean contains//判断是否包含一个指定的子串
4.boolean isEmpty//判断字符串的值是否是空串 是空串返回true
5.boolean startsWith//判断字符串是否以某个字符串开头
6.boolean endsWith//判断字符串是否以某个字符串结尾
7.length//获取字符串长度
8.charAt//获取字符串中指定位置的字符
9.indexOf(String str)//获取指定字符在字符串中首次出现的位置 从前向后
10.indexOf(String str int fromIndex)//从指定位置开始查找,获取指定字符首次出现的位置
11.lastIndexOf(string str)//从后向前找
l12.astIndexOf(string str,int fromIndex)//上一个方法的重载
13.substring//从指定位置开始截取到末尾,截取后返回的都是一个新的字符串对象
14.substring//从指定位置开始截取到指定位置结束,不包含结束位置,截取后返回的都是一个新的字符串对象
15.valueOf//用于把各种数据类型转化为字符串,在实际开发过程中toString用的较少,String.valueOf用的比较多,因为当数据为null时,toString会报错,但valueOf不会报错,会把null输出出来
16.toLowerCase//将字符串中全部字母转为小写字母
17.toUpperCase//将字符串中全部字母转为大写字母
18.concat//用于连接两个字符串
19.trim//用于消除字符串最前面和最后面的空格
20.split("分隔符")//用指定的字符将字符串进行拆分成字符数组
21.replace//用一个指定的字符串把字符串中已有的字符串替换
22.toCharArray//将字符串转化为字符数组
23.getByte//将字符串转化为byte数组

3.字符串常量池

Public static void main(String[] arg){
    String str1 = new String();
    String str2 = {"ABC"};
}

str1的是直接在堆区创建对象。

str2是现在字符串常量池中寻找是否有相同的字符串常量,如果有str2指向那个地址,如果没有,在字符串常量池中会创建"ABC"对象,然后str2指向那个地址

字符串常量池就是在JVM缓存区中的方法区中的一块空间,用于存储字符串常量,例如下图:

public static void main(String[] arg){

    String str1 = "ABC"
    String str2 = "ABC"
    String str3 = new String("ABC");
    System.out.println(str1 == str2);//true
    System.out.println(str1 == str3);//false
    System.out.println(str1.equals(str3));//true
}

因为字符串常量区的存在,在str1初始化完,"ABC"已经在字符串常量区创建了对象,str2因为值与"ABC"相同,所以str1与str2指向同一地址,但str3是在堆区直接创建对象,==号比较两对象地址,所以str1与str3不相等,但是str1与str3值相同,所以用equals方法比较是true

本篇文章到此结束,谢谢大家的关注

相关文章:

  • 本地大模型编程实战(19)RAG(Retrieval Augmented Generation,检索增强生成)(3)
  • 告别卡关!XSS挑战之旅全关卡通关思路详解
  • Golang学习01:Go安装和配置+Vscode、GoLand安装激活+Go环境变量避坑的超详细教程
  • 基于大数据的全国热门旅游景点数据分析系统的设计与实现
  • 【第14章:神经符号集成与可解释AI—14.4 神经符号集成与可解释AI的未来发展趋势与挑战】
  • 【Golang学习之旅】如何在Go语言中使用Redis实现分布式锁,并解决锁过期导致的并发问题?
  • 目标检测之YOLO论文简读
  • 流量类仲裁器(SCHED_NODE_TYPE_TC_ARBITER_TSAR) 和 SCHED_NODE_TYPE_RATE_LIMITER
  • Java GC 基础知识快速回顾
  • Dockerfile 编写推荐
  • 前端(JS进阶)学习笔记(CLASS 2):构造函数数据常用函数
  • 1.10. 引用及内部可变性(简单回顾):引用、内部可变性、`Cell`类型及相关操作
  • 2.4.2 常量的定义与使用
  • Python怎样引用其他.py文件?怎样导入其他模块?
  • DeepSeek核心算法解析:如何打造比肩ChatGPT的国产大模型
  • 150,[5] BUUCTF WEB [BJDCTF2020]EasySearch
  • 【update 更新数据语法合集】.NET开源ORM框架 SqlSugar 系列
  • Mac Golang 开发环境配置
  • Python 模块加载机制导致的问题
  • 146,[1] BUUCTF WEB [SWPU2019]Web1
  • 第1现场 | 美国称将取消制裁,对叙利亚意味着什么
  • A股午后拉升,沪指收复3400点:大金融发力,两市成交超1.3万亿元
  • AI含量非常高,2025上海教育博览会将于本周五开幕
  • 首个偏头痛急性治疗药物可缓解前期症状
  • 联合国秘书长欢迎中美经贸高层会谈成果
  • 新剧|《藏海传》定档,《折腰》《人生若如初见》今日开播