01_使用API_Object类与包装类

什么是 API
  • API ( Application Programming interface ):应用程序编程接口
  • 就是 Java 帮我们已经写好一些程序,如:类、方法等,我们直接拿过来用就可以解决一些问题
  • 使用别人写好的程序,可以帮我们提高开发效率,站在巨人的肩膀上,做更有意义的事情
Object 类的作用
  • Object 类是 Java 中所有类的祖宗类,因此,Java 中所有类的对象都可以直接使用 Object 类中提供的一些方法

  • Object 类的常见方法

toString()equals()clone()
返回对象的字符串表示形式判断两个对象是否相等对象克隆
import java.util.Objects;public class Test {public static void main(String[] args) {// 1. toString()方法Student s1 = new Student("Jack");System.out.println(s1.toString());  // 返回对象内存地址的字符串形式:login.Student@3b07d329System.out.println(s1);  // 默认也是返回对象的内存地址:login.Student@3b07d329// 所以toString()常用的使用方式是:对toString()进行重写,返回我们真正需要的关于对象的信息,而不是内存地址System.out.println(s1.toString());  // 重写后,输出结果为:Student{name='Jack'}// 2. equals()方法Student s2 = new Student("Jack");System.out.println(s2.equals(s1));  // 比较两个对象的地址是否相同; 输出结果:falseSystem.out.println(s2 == s1);  // 默认也是比较两个对象的地址是否相同; 输出结果:false// 所以equals()常用的使用方法是:对equals()进行重写,比较对象的信息是否一致,而不是比较内存地址System.out.println(s2.equals(s1));  // 重写后,输出结果:true}
}class Student {  // 默认就继承了 Object 类private String name;public Student() {}public Student(String name) {this.name = name;}public String getName() {return name;}public void setName(String name) {this.name = name;}// 重写 Object 父类的 toString() 方法@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +'}';}// 重写equals方法,比较两个对象的内容是否一样@Overridepublic boolean equals(Object o) {// 1. 判断两个对象地址是否一样,一样直接返回trueif (this == o) return true;// 2. 如果o是null或者如果两者类型不一致,直接返回// 这里的" getClass() != o.getClass() " 其实是省略了" this " 的// 即原来是" this.getClass() != o.getClass() "if (o == null || getClass() != o.getClass()) return false;// 3. 如果都不是上面的情况,就进行类型转换,然后比较数据Student student = (Student) o;return Objects.equals(this.name, student.name);}
}
Objects
  • Objects 是一个工具类,提供了很多的操作对象的静态方法给我们使用
  • Objects 类的常见方法
方法名说明
public static boolean equals (Object a, Object b)我们;源码分析见下
public static boolean isNull(Object obj)判断对象是否为null,为null返回true,反之
public static boolean nonNull(Object obj)判断对象是否不为null,不为null则返回true,反之

源码分析:底层实现原理是——先做非空判断,再比较两个对象

public static boolean equals(Object a, Object b){return (a == b) || (a != null && a.equals(b));
}
包装类

1.包装类就是把基本数据类型的数据包装成对象

基本数据类型对应的包装类(引用数据类型)
byteByte
shortShort
intInteger
longLong
charCharacter
floatFloat
doubleDouble
booleanBoolean
import java.util.ArrayList;public class Test {public static void main(String[] args) {// 一般的方式Integer obj1 = Integer.valueOf(12);System.out.println(obj1);  // 输出结果:12// 自动装箱:可以自动把基本类型的数据转换成对象Integer obj2 = 12;// 自动拆箱:可以自动把包装类型的对象转换成对应的基本数据类型int a = obj2;// 泛型和集合不支持基本数据类型,只能支持引用数据类型
//      ArrayList<int> list1 = new ArrayList<>();  // 报错ArrayList<Integer> list2 = new ArrayList<>();  // 正常list2.add(33);  // 自动装箱list2.add(44);  // 自动拆箱int res = list2.get(1);  // 自动拆箱}
}

2.包装类的其他常见操作

  • 可以把基本类型的数据转换成字符串类型
  • 可以把字符串类型的数值转换成数值本身对应的数据类型
public class Test {public static void main(String[] args) {// 1. 把基本类型的数据,转换成字符串Integer a = 23;String res = Integer.toString(a);System.out.println(res + 1);  // 输出结果:231// 2. 把字符串类型的数据,转换成对应的基本数据类型String ageStr = "29";int age = Integer.parseInt(ageStr);System.out.println(age + 1);  // 输出结果:30// 然后,实际开发中,推荐使用 valueof(),记住一个就能用在所有的数据类型String scoreStr = "98";int score = Integer.valueOf(scoreStr);System.out.println(score + 2);  // 输出结果:100String idStr = "0.5";double id = Double.valueOf(idStr);System.out.println(id + 0.5);  // 输出结果:1.0}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/158555.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt 信号和槽

目录 概念 代码 mainwindow.h me.h xiaohuang.h main.cc mainwindow.cc me.cc xianghuang.cc mainwindow.ui 自定义信号的要求和注意事项: 自定义槽的要求和注意事项: 概念 信号槽是 Qt 框架引以为豪的机制之一。所谓信号槽&#xff0c;实际就是观察者模式(发布-订…

Oracle 的 Java SE、OpenJDK、Database 链接

1 访问主站 Oracle | Cloud Applications and Cloud Platform 2 开发者 2.1 OpenJDK (这里的不用登录&#xff0c;就可以下载) JDK Builds from Oracle 2.2 JavaSE (需要登录&#xff0c;才可以下载) Java Downloads | Oracle 2.3 DataBase (MySQL为例) MySQL :: MySQL Dow…

JavaDS —— 初识集合框架 + 时间/空间复杂度

目录 1. 初识集合框架 1.1 集合框架的初识 1.2 什么是数据结构&#xff1f; 2. 时间与空间复杂度 2.1 时间复杂度 2.2 大O的渐进表示法 2.3 常见时间复杂度计算举例 2.4 空间复杂度 1. 初识集合框架 1.1 集合框架的初识 什么叫集合&#xff1f;什么叫框架&#xff1f;什么又叫集…

webGL开发微信小游戏

WebGL 是一种用于在浏览器中渲染 2D 和 3D 图形的 JavaScript API。微信小游戏本质上是在微信环境中运行的基于 Web 技术的应用&#xff0c;因此你可以使用 WebGL 来开发小游戏。以下是基于 WebGL 开发微信小游戏的一般步骤&#xff0c;希望对大家有所帮助。北京木奇移动技术有…

bind、apply、call 的区别

一、作用 call 、apply 、bind 作用是改变函数执行时的上下文&#xff0c;简而言之就是改变函数运行时的this指向 那么什么情况下需要改变this的指向呢&#xff1f;下面举个例子 const name"lucy"; const obj{name:"martin",say:function () {console.l…

redis之数据类型

&#xff08;一&#xff09;关系型数据库和非关系型数据库的区别 1、关系型数据库是一个机构化的数据库&#xff0c;列和行 &#xff08;1&#xff09;列&#xff1a;声明对象 &#xff08;2&#xff09;行&#xff1a;记录对象的属性 &#xff08;3&#xff09;表与表之间…

接口请求没有到达后端,被缓存怎么办

解决方法&#xff1a;在请求的headers中加 ‘Cache-Control’: ‘no-cache’ } export const getDrawChanceApi activityUuid > {return request.get(/lottery/userJoinedCount/${activityUuid}, { headers: { Cache-Control: no-cache } }) }

深度学习环境配置(Anaconda+pytorch+pycharm+cuda)

NVIDIA驱动安装 首先查看电脑的显卡版本&#xff0c;步骤为&#xff1a;此电脑右击-->管理-->设备管理器-->显示适配器。就可以看到电脑显卡的版本了。 然后按照电脑信息&#xff0c;到地址 去安装相应的驱动&#xff0c;Notebooks是笔记本的意思&#xff0c;然后下…

数据结构与算法【堆】的Java实现

前言 之前已经说过堆的特点了&#xff0c;具体文章在数据结构与算法【队列】的Java实现-CSDN博客。因此直接实现堆的其他功能。 建堆 所谓建堆&#xff0c;就是将一个初始的堆变为大顶堆或是小顶堆。这里以大顶堆为例。展示如何建堆。 找到最后一个非叶子节点从后向前&…

语音识别技术paddlespeech的安装和使用

PaddleSpeech 介绍 PaddleSpeech是百度飞桨&#xff08;PaddlePaddle&#xff09;开源深度学习平台的其中一个项目&#xff0c;它基于飞桨的语音方向模型库&#xff0c;用于语音和音频中的各种关键任务的开发&#xff0c;包含大量基于深度学习前沿和有影响力的模型。PaddleSpe…

ChatGPT 使用入门

背景 ChatGPT是一个强大的聊天机器人助手&#xff0c;内置了大量的互联网知识文档&#xff0c;且具有上下文记忆&#xff0c;可以帮我们快速地查找一些资料&#xff0c;了解一个知识&#xff0c;帮我们回答问题&#xff0c;编写代码等。此外&#xff0c;在使用ChatGPT时具有一…

二百零四、Flume——登录监听窗口报错Ncat: bind to :::44444: Address already in use. QUITTING.

一、目的 Flume安装好后测试开启监听窗口44444&#xff0c;结果报错Ncat: bind to :::44444: Address already in use. QUITTING. 二、报错详情 Ncat: bind to :::44444: Address already in use. QUITTING. 三、报错原因 经过分析发现&#xff0c;44444窗口已经被占用 […

变频器基础问答集21-50

21&#xff0e;请问电机软起动器是否能节能?软启动节能效果有限&#xff0c;但可以减少启动对电网的冲击&#xff0c;也可以实现平滑启动&#xff0c;保护电机机组。 根据能量守恒理论,由于加入了相对复杂的控制电路,软启动不但不节能,还会加大能量的消耗,但它可以减小电路的启…

多线程访问资源计数不正确问题分析

线程1&#xff1a;首先修改状态为-1&#xff0c;然后分配资源&#xff0c;资源分配成功后&#xff0c;修改状态为0 线程2&#xff1a;查询状态为-1&#xff0c;然后分配资源&#xff0c;资源分配成功后&#xff0c;修改状态为0 存在这种情况&#xff0c;在线程1修改状态为-1时&…

数据结构-快速排序“人红是非多”?看我见招拆招

目录 1.快速排序 Hoare版本&#xff1a; 挖坑法&#xff1a; 前后指针版本: 快速排序的时间复杂度 2.快速排序的优化 三数取中法选key 随机数选key 三路划分法 3. 非递归实现快速排序 1.快速排序 快速排序一共有三种版本&#xff1a;Hoare版本、挖坑法、前后指针版本…

很多Python脚本开头的“#!/usr/bin/env python”是什么意思?

#!/usr/bin/env python 是一个在 Unix-like 操作系统中用于指定脚本解释器的特殊语法。这一行通常被称为"shebang"&#xff08;井号和叹号的组合&#xff0c;#!&#xff09;&#xff0c;其目的是告诉系统使用指定的解释器来执行脚本。 具体来说&#xff0c;#!/usr/b…

SpEL 表达式 是什么

SpEL&#xff08;Spring Expression Language&#xff09;是一种强大的表达式语言&#xff0c;用于在运行时查询和操作对象图。它是 Spring 框架的一部分&#xff0c;但也可以独立于 Spring 使用。SpEL 提供了丰富的特性集&#xff0c;包括对象图遍历、方法调用、算术、逻辑和关…

实时定位系统有哪些好处?

好处包括&#xff1a; 更好的库存管理 - 找到丢失的库存&#xff0c;并收回更换它所需的成本&#xff0c;恢复寻找它所损失的工作时间&#xff0c;或消除例行库存检查的计划外停机。 所有这些都在工厂环境中创造价值&#xff0c;通过节省工厂工人的时间来避免不必要的更换&…

Django--重定向redirect

在 Django 中&#xff0c;redirect 是一个用于进行重定向的函数。它允许你将用户从一个 URL 重定向到另一个 URL&#xff0c;通常用于处理表单提交、用户登录、用户注册等操作后的页面跳转。redirect 函数属于 django.shortcuts 模块。 以下是 redirect 函数的基本用法和一些参…

腾讯云轻量数据库开箱测评,1核1G轻量数据库测试

腾讯云轻量数据库1核1G开箱测评&#xff0c;轻量数据库服务采用腾讯云自研的新一代云原生数据库TDSQL-C&#xff0c;轻量数据库兼100%兼容MySQL数据库&#xff0c;实现超百万级 QPS 的高吞吐&#xff0c;128TB海量分布式智能存储&#xff0c;虽然轻量数据库为单节点架构&#x…