Java Day4 API

文章目录

  • 1、Object类
    • 1.1 Tostring
    • 1.2 equals
    • 1.3 clone
  • 2、Objects类
    • 2.1 equals方法
    • isNull 与nonNull
  • 3、包装类
    • 3.1 常见操作
  • 4、StringBuilder
  • 5、StringBuffer
  • 6、StringJoiner

1、Object类

所有类的基类。

1.1 Tostring

public String toString()
返回对象的字符串表示形式。 通常, toString方法返回一个“文本表示”此对象的字符串。 结果应该是简洁但信息丰富的表示,便于人们阅读。 建议所有子类都覆盖此方法。 
类Object的toString方法返回一个字符串,该字符串由对象为实例的类的名称,符号字符“ @ ”以及对象的哈希码的无符号十六进制表示形式组成。 换句话说,此方法返回一个等于值的字符串: getClass().getName() + '@' + Integer.toHexString(hashCode())

一般的类,我们都希望返回类的具体内容,所以我们可以重写该方法。
一般.tostring() 可以省略,我们直接输出对象 其实就是调用的该方法。
idea中,在类中,我们直接输入tostring 就会显示,可以自动生成。
在这里插入图片描述

1.2 equals

eauals与字符串的不同,字符串是为了比较内容,但是在类中,我们是比较地址。
与==号的作用相同,该类的出现是为了让我们可以重写equals方法,定义自己的比较原则,IDEA中,我们输入equals也会自动生成比较内容的方法重写.
在这里插入图片描述
在这里插入图片描述

     B b = new B(new int[]{1,2});B b2 = new B(new int[]{1,2});System.out.println(b==b2);//falseSystem.out.println(b.equals(b2));//true

1.3 clone

clone 是克隆的方法,分为浅克隆和深克隆。
clone在object中是projected的,只能在本类,本包以及该类的子类下使用,但并不代表我们可以在子类的实例中使用,所以如果想要在子类的实例中使用,需要我们在子类中去实例化clone方法。

package com.cky.fx;import java.util.Arrays;public class B implements Cloneable{private int[] arr;@Overrideprotected Object clone() throws CloneNotSupportedException {return super.clone();}public int[] getArr() {return arr;}public B() {}public B(int[] arr) {this.arr = arr;}public void setArr(int[] arr) {this.arr = arr;}@Overridepublic String toString() {return "B{" +"arr=" + Arrays.toString(arr) +'}';}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;B b = (B) o;return Arrays.equals(arr, b.arr);}@Overridepublic int hashCode() {return Arrays.hashCode(arr);}
}

```java
package com.cky.fx;import java.util.Arrays;public class Main {public static void main(String[] args) throws CloneNotSupportedException {String[] originalArray = {"1","2","3"};// 使用clone方法进行克隆String[] clonedArray = originalArray.clone();// 修改原始数组的第一个元素originalArray[0] = "99";//false 地址不相同System.out.println(originalArray.equals(clonedArray));// 输出两个数组的内容System.out.println("Original Array: " + Arrays.toString(originalArray));System.out.println("Cloned Array: " + Arrays.toString(clonedArray));//false//Original Array: [99, 2, 3]//Cloned Array: [1, 2, 3]B b = new B(new int[]{1,2});B b2 = new B(new int[]{1,2});System.out.println(b==b2);System.out.println(b.equals(b2));System.out.println(b);B clone = (B)b.clone();System.out.println(b.getArr());System.out.println(clone.getArr());}
}

结果:
false
Original Array: [99, 2, 3]
Cloned Array: [1, 2, 3]
false
true
B{arr=[1, 2]}
[I@5fd0d5ae
[I@5fd0d5ae

在这里插入图片描述
在这里插入图片描述
迷惑:

2、Objects类

Objects 是一个工具类,提供了许多静态方法给我们使用
在这里插入图片描述

2.1 equals方法

为什么objects还需要再重写一个equals方法呢?
字符串有其对应的equals方法,Objects的方法与其什么不同呢?

来看一个例子

  String s1=null;String s2="a";
//        System.out.println(s1.equals(s2));  会报空指针异常System.out.println(Objects.equals(s1,s2));

我们可以看下Objects类的equals源码:
在这里插入图片描述
首先会比较两个对象地址是否相同,相同直接返回true,其次会判断看a是否为空,这时候就避免了空指针异常。

isNull 与nonNull

        String s1=null;String s2="a";
//        System.out.println(s1.equals(s2));  会报空指针异常System.out.println(Objects.equals(s1,s2));//fasleSystem.out.println(Objects.isNull(s1));//true//与 s1==null 一样System.out.println(Objects.nonNull(s2));//true//与s1!=null 一样

3、包装类

比如集合和泛型 就需要引用数据类型 不能接收基本数据类型
在这里插入图片描述

3.1 常见操作

在这里插入图片描述

   Integer a1=Integer.valueOf(12);//自动装箱功能Integer a=12;//效果与第一个一样//自动拆箱功能int b=a;//将基本类型 变为String数据类型System.out.println(Integer.toString(a)+1);//121 而不是13//将字符串 转变为基本数据类型  使用valueof 即可 记住这一个就行String s="123";System.out.println(Integer.parseInt(s)+1);System.out.println(Integer.valueOf(s)+1);String s1="123.1";System.out.println(Double.parseDouble(s1));System.out.println(Double.valueOf(s1));

结果
121
124
124
123.1
123.1

4、StringBuilder

StringBuilder允许链式操作,即append之后返回的仍然是StringBuilder的该对象,可以一直append.它是一个可变的字符串对象,如果一个字符串需要频繁拼接修改,使用StringBuilder比String效率高的多。
toString()方法,一般我们接收的都是String类型的数据,所以在我们拼接操作完成之后,需要将StringBuilder转换为String对象。
在这里插入图片描述

        System.out.println(sb.append(1).append("java"));System.out.println(sb.reverse());System.out.println(sb);System.out.println(sb.length());

1231java
avaj1321
avaj1321
8

5、StringBuffer

其实与StringBuilder功能 是一样的,但是StringBuffer的线程是安全的,而StringBuilder的线程是不安全的,如果是多个人同时操作就要使用StringBuffer

6、StringJoiner

可以方便定义 以什么间隔符拼接,以什么开头,以什么结尾。

package com.cky.Objectsclass;import java.util.Objects;
import java.util.StringJoiner;public class Equals {public static void main(String[] args) {int arr[] ={11,22,33};System.out.println(getString(new int[]{11,22,33}));//[11,22,33]}public  static String getString(int[] arr){StringJoiner sb1=new StringJoiner(",","[","]");if (arr==null)return null;for(int i=0;i<arr.length;i++){sb1.add(arr[i]+"");}return sb1.toString();}
}

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

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

相关文章

总结Redis的原理

一、为什么要使用Redis 缓解数据库访问压力mysql读请求进行磁盘I/O速度慢&#xff0c;给数据库加Redis缓存&#xff08;参考CPU缓存&#xff09;&#xff0c;将数据缓存在内存中&#xff0c;省略了I/O操作 二、Redis数据管理 2.1 redis数据的删除 定时删除惰性删除内存淘汰…

设计定时任务实现数据同步的最佳实践

✨✨谢谢大家捧场&#xff0c;祝屏幕前的小伙伴们每天都有好运相伴左右&#xff0c;一定要天天开心哦&#xff01;✨✨ &#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; 目录 引言 一、选择合适的定时任务框架 Quartz Spring 的 Task…

【MATLAB第98期】基于MATLAB的MonteCarlo蒙特卡罗结合kriging克里金代理模型的全局敏感性分析模型【更新中】

【MATLAB第98期】基于MATLAB的Monte Carlo蒙特卡罗结合kriging克里金代理模型的全局敏感性分析模型【更新中】 PS:因内容涉及较多&#xff0c;所以一时半会更新不完 后期会将相关原理&#xff0c;以及多种功能详细介绍。 麻烦点赞收藏&#xff0c;及时获取更新消息。 引言 在…

如何判断螺栓已经拧紧?——SunTorque智能扭矩系统

智能扭矩系统-智能拧紧系统-扭矩自动控制系统-SunTorque 螺栓拧紧的标准并非仅仅依赖于螺栓的外观&#xff0c;而是依赖于几个关键因素&#xff0c;包括扭矩、预紧力和材料疲劳等。下面SunTorque智能扭矩系统和大家将详细讨论这些因素&#xff0c;并给出如何判断螺栓是否已经拧…

史上最大优惠!腾讯云服务器优惠价格表一年、1个月收费明细

腾讯云服务器多少钱一年&#xff1f;61元一年起&#xff0c;2核2G3M配置&#xff0c;腾讯云2核4G5M轻量应用服务器165元一年、756元3年&#xff0c;4核16G12M服务器32元1个月、312元一年&#xff0c;8核32G22M服务器115元1个月、345元3个月&#xff0c;腾讯云服务器网txyfwq.co…

Linux MBR扇区故障 引导修复

CSDN 成就一亿技术人&#xff01; 作者主页&#xff1a;点击&#xff01; Linux专栏&#xff1a;点击&#xff01; CSDN 成就一亿技术人 前言———— Linux MBR&#xff08;Master Boot Record&#xff0c;主引导记录&#xff09;是硬盘的第一个扇区&#xff0c;通常位于磁…

maven项目引入私有jar,并打包到java.jar中

私有jar存放位置 maven依赖 <dependency><groupId>com.hikvision.ga</groupId><artifactId>artemis-http-client</artifactId><version>1.1.10</version><scope>system</scope><systemPath>${project.basedir}/s…

Tomcat常见配置(基础功能、虚拟主机、搭建博客)

目录 一、Tomcat基础功能 1、自动解压war包 2、Tomcat工具界面 2.1 Server Status (服务器状态) 2.1.1 本地登录状态页 2.1.2 远程登录状态页 2.2 Manager App (管理应用程序) 2.3 Host Manager (主机管理器) 3、Context 配置 二、配置虚拟主机 三、搭建 JPress 博客…

支持AUTOSAR Classic以及Adaptive平台的DEXT诊断数据库

一 DEXT、DCM、DEM和FIM的概述 DEXT&#xff08;Diagnostic Extract Template&#xff09;是AUTOSAR定义的诊断提取模板&#xff0c;用于DCM&#xff08;Diagnostics Communication Manager&#xff09;、DEM&#xff08;Diagnostics Event Manager&#xff09;和FIM&#xff…

从新能源汽车行业自动驾驶技术去看AI的发展未来趋势

自动驾驶汽车关键技术主要包括环境感知、精准定位、决策与规划、控制与执行、高精地图与车联网V2X以及自动驾驶汽车测试与验证技术等。 &#x1f413; 自动驾驶技术 这是AI在汽车行业中应用最广泛的领域之一。自动驾驶技术利用AI算法和传感器来感知环境、识别障碍物&#xff0c…

各大厂商常用的弱口令集合

Oms呼叫中心 KXTsoft2010 Glodon控制台 admin TRENDnet趋势网络摄像头 admin/admin MOBOTIX-视频监控 admin/meinsm 思科Cisco 没有原始密码, 第一次登录时需要创建 DRS admin/1234 Honeywell admin/1234 安迅士Axis root/pass, 新安迅士摄像头在用户第一登录时要求创建…

【开源】JAVA+Vue.js实现农家乐订餐系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 用户2.2 管理员 三、系统展示四、核心代码4.1 查询菜品类型4.2 查询菜品4.3 加购菜品4.4 新增菜品收藏4.5 新增菜品留言 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的农家乐订餐系统&#xff0c…

0基础学习VR全景平台篇第143篇:限定访问功能

大家好&#xff0c;欢迎观看蛙色VR官方——后台使用系列课程&#xff01;这期&#xff0c;我们将为大家介绍如何使用限定访问功能。 一.什么是限定访问功能&#xff1f; 限定访问&#xff0c;就是可以在编辑后台设置可以访问作品的用户的类型&#xff0c;还有可以访问作品的IP…

【leetcode热题】环形链表

难度&#xff1a; 简单通过率&#xff1a; 34.9%题目链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 题目描述 给定一个链表&#xff0c;判断链表中是否有环。 为了表示给定链表中的环&#xff0c;我们使用整数 pos 来表示链表尾连接到链表中的位置&#xff08;索…

【CSS】简单的抽屉面板展开收起自然过渡效果的css

目录 效果展示css固定梯形按钮至抽屉面板中间梯形按钮css过渡动画 效果展示 1.收起时点击蓝色梯形按钮展开 2. 展开时点击蓝色按钮收起 3.展开收起时需要过渡自然&#xff0c;有抽屉推拉效果 css 固定梯形按钮至抽屉面板中间 .toggle{ position: absolute;left:-21px;top…

pdf文件超出上传大小怎么压缩?值得学习的几个方法

平时我们在使用pdf文件的时候&#xff0c;不管是上传还是进行存储&#xff0c;都会面临pdf太大的情况&#xff0c;尤其是当我们需要把pdf文件上传到一些平台上去的时候&#xff0c;那么pdf怎么压缩的小一点呢&#xff1f;为了解决这个问题&#xff0c;可以通过一些软件将pdf压缩…

关于并发编程和并行

目录 前言: 并发编程: 1.并发编程的定义: 2. 并发编程的目的 2.1提高性能&#xff1a; 2.2增强响应性&#xff1a; 2.3资源利用&#xff1a; 3. 并发编程的实现方式 3.1多线程&#xff1a; 3.2多进程&#xff1a; 3.3异步编程&#xff1a; 3.4协程&#xff1a; 4. …

【JAVA/Web】数组转对象

一. 需求 数组转对象 数组结构 List:[{id:1,code:phone,value:10101001},{id:2,code:name,value:admin},{id:3,code:address,value:XXXXXX} ]二. 数组转对象&#xff08;键值对映射关系&#xff09; 对象结构 object:{phone:10101001,name:admin,address:XXXXXX }2.1 Java…

桌搭和DIY,或许攒机才能满足宅男们的情绪价值

点击文末“阅读原文”即可参与节目互动 剪辑、音频 / 卷圈 运营 / SandLiu 卷圈 监制 / 姝琦 封面 / 姝琦Midjourney 产品统筹 / bobo 场地支持 / 声湃轩北京录音间 最近几年&#xff0c;人们突然对品牌机没有那么感兴趣了&#xff0c;反而重新开始热衷于自己动手攒机。这…

Android14音频进阶:AudioTrack如何拿到AudioFlinger创建的匿名共享内存(六十)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只…