常见API(二)

           API 应用程序编程接口,提高编程效率。本次学习了Object类,Objects工具类,包装类,StringBuilder,StringBuffer,和StringJoiner。

目录

1.Object

 常见方法:

2.Objects

 常见方法:

3.包装类

 介绍:

包装类的相关操作:

4.StringBuilder

 介绍:

 使用好处:

 StringBuffer*

  案例 

5.StringJoiner 

介绍:

常用方法 :


1.Object

    Object类是java中所有类的祖宗类,因此所有类都可以直接使用Object类中的一些方法

 常见方法:

方法名说明
public String toString()返回对象的字符串表达形式
public boolean equals(Object o)判断两个对象是否相等
protected Object clone()对象克隆

package d10_api_Object;import java.util.Objects;public class Student {private String name;private int age;public Student(String name, int age) {this.name = name;this.age = age;}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", age=" + age +'}';}//重写equals方法,比好两个对象的内容一样就返回true//比较者:s2 == this//被比较者:s1 == o@Overridepublic boolean equals(Object o) {//1.判断两个对象的地址是否一样 一样直接返回trueif (this == o) return true;//2.判断o是否为null直接返回false 比较的二者类型不相同,返回falseif (o == null || getClass() != o.getClass()) return false;//3.o不是空 且一定是学生类型的对象,开始比较内容了Student student = (Student) o;return age == student.age && Objects.equals(name, student.name);}@Overrideprotected Object clone() throws CloneNotSupportedException {//super 去调用父类的Object的clone方法//使用时类要加一个Cloneable的接口 这是一个标记接口//会有报错提醒 需要去抛开return super.clone();}public Student() {}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}package d10_api_Object;public class Text {public static void main(String[] args) {//目标:学习认识API ObjectStudent s1 = new Student("陈平安",19);System.out.println(s1.toString());System.out.println(s1); //s1 默认是调用toString方法//toString默认是显示地址,实际用处不大,常重写为显示内容Student s2 = new Student("陈平安",19);System.out.println(s2.equals(s1));//equals默认是比较两个元素的地址System.out.println(s2 == s1); //一样可以进行地址的比较// 所以还是会需要子类去重写这个方法 去比较内容//克隆//浅克隆 :拷贝出的新对象与原数据中的一模一样(引用类型拷贝的只是地址)//深克隆:对象中的基本数据类型直接拷贝//       字符串数据拷贝的还是地址//       还包含的其他对象,不会拷贝地址,会创建新对象}
}

2.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,反之

 

package d10_api_Object;import java.util.Objects;public class Text2 {public static void main(String[] args) {//目标:掌握Objects类提供的常用方法String s1 = null;String s2 = "楠楠";//System.out.println(s1.equals(s2));//自身是空 有安全问题 会报错System.out.println(Objects.equals(s1, s2));//更加安全System.out.println(Objects.isNull(s1)); //tureSystem.out.println(s1 == null); //原理是一致的System.out.println(Objects.isNull(s2));System.out.println(Objects.nonNull(s1));System.out.println(Objects.nonNull(s2));}
}

3.包装类

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

 介绍:

基本数据类型对应的包装类(引用数据类型)

byte

Byte
short

Short

intInteger
longLong
charCharacter
floatFloat
doubleFloat
booleanBoolean

包装类的相关操作:

         1. 包装类的创建 自动装箱 自动拆箱

package d10_api_Object;import java.util.ArrayList;public class Text3 {public static void main(String[] args) {//目标:掌握包装类的使用//Integer a = new Integer(12);//已过时Integer a = Integer.valueOf(12);System.out.println(a);//自动装箱:可以自动把基本类型的数据转换为对象Integer a3 = 12;//自动拆箱:可以自动把包装数据类型的对象转换为对应的基本数据int a4 = a3;System.out.println(a4); //12//泛型和集合不支持基本数据类型 只能支持引用数据类型//ArrayList<int> list = new ArrayList<int>(); 报错ArrayList<Integer> list  = new ArrayList<>();list.add(12);list.add(13); //自动装箱int rs = list.get(1); //自动拆箱}
}

         2.其他相关操作

    //1.把基本类型的字符串转化为字符串Integer a5 = 23;String s1 = Integer.toString(a5);System.out.println((s1 + 1));//也可以这样String s2 = a5 + "";System.out.println((s2 + 1));//2.把字符串类型的 数值 转化成对应的基本类型String ageStr = "29";//int age = Integer.parseInt(ageStr); //29//直接使用 valueOf 转化int age = Integer.valueOf(ageStr); //29System.out.println((age + 1)); //30String score = "99.5";double sco = Double.parseDouble(score);System.out.println(sco+0.5); //100

4.StringBuilder

   可变字符串对象,相当于一个容器,里面装的字符串可以改变,用来操作字符串的

 介绍:

构造器说明
public StringBuilder()创建一个空白的可变的字符串对象,不包含任何内容
public StringBuilder(String str)创建一个指定字符串内容的可变字符串对象
方法名称说明
public StringBuilder append(任意类型)添加数据并返回StringBuilder对象本身
public StringBuilder reverse()将对象的内容反转
public int length()返回对象内容长度
public String toString()通过toString()就可以实现把String转换为String

package d10_api_Object;public class Text4 {public static void main(String[] args) {//目标:搞清楚StringBuilder的用法和作用//StringBuilder s= new StringBuilder(); //s ""StringBuilder s= new StringBuilder("楠楠");//1.拼接内容s.append("K");s.append(12);System.out.println(s);////支持链式编程s.append(666).append(777).append(888);System.out.println(s);//2.反转内容s.reverse();System.out.println(s);//3.返回字符串长度System.out.println(s.length());//4.把StringBuilder类型转化为String类型String rs = s.toString();System.out.println(rs);}
}

 使用好处:

       相比于String的好处:更适合做字符串频繁的修改,拼接。效率会更高,代码更简洁。 

package d10_api_Object;public class Text5 {public static void main(String[] args) {//目标:掌握StringBuilder 的使用好处//需求:要拼接100万次abc//先用 String 测试性能/*  String rs = "";for (int i = 0; i < 1000000; i++) {rs = rs + "abc";}System.out.println(rs);*///测试性能很差StringBuilder sb = new StringBuilder();for (int i = 0; i < 100000; i++) {sb.append("abc");}System.out.println(sb);//执行效率快}
}

 StringBuffer*

  • StringBuffer的用法和StringBuider是一模一样的
  • 但是StringBuilder是线程不安全的,而StringBuffer是线程安全

  案例 

需求:设计一个方法,用于返回任意整型数组的内容,要求返回的数组内容格式如[11,22,33]

 

package d10_api_Object;public class Text6 {public static void main(String[] args) {//目标:完成遍历数组内容,并拼接或指定格式的案例int [] a = {11,22,33};String s = getArrayData(a);System.out.println(s);}public static String getArrayData(int [] arr){//判空if(arr == null){return null;}//数据存在StringBuilder sb = new StringBuilder();sb.append("[");for (int i = 0; i < arr.length; i++) {if(i == arr.length-1){sb.append(arr[i]);}else{sb.append(arr[i]).append(",");}}sb.append("]");return sb.toString();}
}

5.StringJoiner 

介绍:

(JDK8 后才有)

         和StringBuilder一样,也是用来操作字符串,也可以看做一个容器,内容是可变的。

         好处:可以提高效率,而且更加简洁

常用方法 :

构造器说明
public StringJoiner (间隔符号)创建一个StringJoiner对象,指定拼接时的间隔符号
public StringJoiner (间隔符号,开始符号,结束符号 )创建一个StringJoiner对象,指定拼接时的间隔符号,开始符号,结束符号
方法名称说明
public StringJoiner add(添加内容)添加数据,并返回对象本身
public int length()返回长度(字符出现的个数)
public String toString返回一个字符串(该字符串就是拼接之后的结果)

package d10_api_Object;import java.util.StringJoiner;public class Text7 {public static void main(String[] args) {//目标:掌握StringJoiner的使用StringJoiner s = new StringJoiner(" ");s.add("楠楠");s.add("等你");System.out.println(s);StringJoiner s1 = new StringJoiner(" ","[","]");s1.add("会的");s1.add("是嘛");System.out.println(s1);}
}

                                                                                                                     学习时间:2024.8.5

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

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

相关文章

C# Unity 面向对象补全计划 七大原则 之 里氏替换(LSP) 难度:☆☆☆ 总结:子类可以当父类用,牛马是马,骡马也是马

本文仅作学习笔记与交流&#xff0c;不作任何商业用途&#xff0c;作者能力有限&#xff0c;如有不足还请斧正 本系列作为七大原则和设计模式的进阶知识&#xff0c;看不懂没关系 请看专栏&#xff1a;http://t.csdnimg.cn/mIitr&#xff0c;尤其是关于继承的两篇文章&#xff…

3个步骤上⼿Midjourney表情包教程,并上传到微信实现变现!

羡慕别⼈设计的表情包,有趣⼜好玩~也想拥有⾃⼰的个性表情包,可是⾯对复杂的设计流程,却不知从何开始?现在⽤Midjourney,你就可以轻松制作,各种⻛格的表情包,变钱赚钱,这些⽅法分享给 你~ 通⽤公式: 我们⽤表情包魔法公式,加⼊你想要的风格,⽐如漫画、卡通、插画、…

AI答题应用平台相关面试题

目录 1、请介绍整个系统后端的架构设计&#xff0c;有哪些模块以及各模块之间的关系&#xff1f; 2、你在项目中是如何设计库表的&#xff1f;可以从字段、索引、关联等方面回答。 3、为什么使用策略模式来封装不同的应用评分算法&#xff1f;它有哪些好处&#xff1f;具体如…

源码厂商数字人直播系统搭建体系解析:如何提升系统竞争力?

随着人工智能时代的来临&#xff0c;以数字人直播为代表的AI技术应用逐渐成为流行&#xff0c;越来越多的企业都开始引进或计划引进数字人直播&#xff0c;以实现其在直播板块的降本增效。在此背景下&#xff0c;各大数字人源码厂商接收到的数字人直播系统搭建订单量成倍增长&a…

计算机组成原理(1):计算机系统概述

计算机底层和计算机原理&#xff01;&#xff01;&#xff01;&#xff01; 研究计算机硬件在底层是怎末运行的&#xff01; 计算机硬件能识别的数据 用低电平表示0 用高电平表示1 皮卡丘使高电压&#xff01; 计算机传递数据是用的电信号&#xff01;&#xff01;&#xff…

Java ExecutorService:你真的了解它吗?

文章目录 一、什么是ExecutorService&#xff1f;二、ExecutorService的核心功能三、如何创建和使用ExecutorService&#xff1f; 时光匆匆&#xff0c;又来到另一个里程碑&#xff0c;感谢粉丝们的陪伴&#xff0c;有你们真好~ 不水文啦&#xff0c;一起加油叭~ 一、什么是Exe…

C语言基础知识点(十三)结构体的深拷贝与浅拷贝

在C或C等语言中&#xff0c;结构体&#xff08;Struct&#xff09;是一种用户自定义的数据类型&#xff0c;它允许将不同类型的数据项组合成一个单一的类型。对于结构体的拷贝&#xff0c;存在深拷贝&#xff08;Deep Copy&#xff09;和浅拷贝&#xff08;Shallow Copy&#x…

2024年,pdf文献热门翻译软件总结推荐

对于如今的时代&#xff0c;市面上存在各式各样的学术资料&#xff0c;对于没有语言天赋的我&#xff0c;看得眼花缭乱。看个学术资料都不知道要用哪个工具&#xff0c;试来试去和睦浪费时间。今天就我使用过的翻译软件中&#xff0c;整理了四款能帮助我们解决文献翻译难题的四…

免费自动化AI视频剪辑工具

下载地址&#xff1a;https://pan.quark.cn/s/3c5995da512e FunClip是一款完全开源、本地部署的自动化视频剪辑工具&#xff0c;通过调用阿里巴巴通义实验室开源的FunASR Paraformer系列模型进行视频的语音识别&#xff0c;随后用户可以自由选择识别结果中的文本片段或说话人&…

RocketMQ5.0 生产者

生产者消息类型&#xff1a; ​​​​​​​ 延迟队列的生产者 package mainimport ("context""fmt""github.com/apache/rocketmq-clients/golang/v5""github.com/apache/rocketmq-clients/golang/v5/credentials"errgroup2 "go…

学习记录——day26 进程间的通信(IPC)无名管道 无名管道 信号通信 特殊的信号处理

目录 一、进程间通信引入 二、无名管道 1、无名管道相关概念 2、无名管道的API接口函数 pipe(int pipefd[2]); 3、管道通信的特点 4、管道的读写特点 三、无名管道 1、有名管道&#xff1a;有名字的管道文件&#xff0c;其他进程可以调用 2、可以用于亲缘进程间的通信&…

代码随想录训练营第五十二天 孤岛的总面积

第一题&#xff1a;孤岛的总面积 第二题&#xff1a;沉没孤岛 思路&#xff1a; 将所有在边界的岛屿所在的visited数组位置都置为true&#xff0c;剩下的visited[i][j] true && grid[i][j] 1的位置就是孤岛&#xff0c;将其置为1即可。 代码如下 #include <io…

【限免】通信信号与干扰信号【附MATLAB代码】

微信公众号&#xff1a;EW Frontier 关注可了解更多的雷达、通信、人工智能相关代码。问题或建议&#xff0c;请公众号留言; 个人博客&#xff1a;106.54.201.174 QQ交流群&#xff1a;949444104 摘要 本项目主要模拟仿真常见通信信号及干扰信号&#xff0c;高斯白噪声、噪声调…

NSF共享目录未授权访问

NSF共享目录未授权访问 Network File System(NFS)&#xff0c;是由SUN公司研制的UNIX表示层协议(pressentation layer protocol)&#xff0c;能使使用者访问网络上别处的文件就像在使用自己的计算机一样。服务器在启用nfs服务以后&#xff0c;由于fs服务未限制对外访问&#x…

无人机之导航系统篇

一、导航系统组成 包括惯性导航系统、卫星导航系统、视觉导航系统等。 二、导航原理 利用传感器感知无人机的位置、速度和姿态信息&#xff0c;结合地图数据和导航算法&#xff0c;计算出无人机当前的位置和航向&#xff0c;从而引导无人机按照预设的航线飞行。 三、导航精…

使用SpringBoot+Vue3开发项目(2)---- 设计文章分类的相关接口及页面

目录 一.所用技术栈&#xff1a; 二.后端开发&#xff1a; 1.文章分类列表渲染&#xff1a; 2.新增文章分类&#xff1a; 3.编辑文章分类&#xff1a; 4.删除文章分类 &#xff1a; 5.完整三层架构后端代码&#xff1a; &#xff08;1&#xff09;Controller层&#xff1a…

优化if-else的11种方案

优雅永不过时&#xff01; 1. 使用早返回&#xff08;Early Return&#xff09;&#xff1a;尽可能早地返回&#xff0c;避免嵌套的if-else。 优化前&#xff1a; public class NoEarlyReturnExample {public boolean hasPositiveNumber(int[] numbers) {boolean foundPositi…

学习大数据DAY31 Python基础语法4和基于Python中的MySQL 编程

目录 Python 库 模块 time&datetime 库 连接 MySQL 操作 结构操作 数据增删改操作 数据查询操作 上机练习 7 面向对象 OOP 封装 继承 三层架构---面向对象思想模型层 数据层 业务逻辑显示层 上机练习 8 三层架构开发豆瓣网 关于我对 AI 写代码的看法&#xf…

客户数据分析模型:RFM模型的深度解析与应用探索

RFM模型&#xff0c;作为客户数据分析中的经典工具&#xff0c;凭借其简单而强大的分析能力&#xff0c;被广泛应用于各行各业。本文旨在深入探讨RFM模型的核心原理、应用价值&#xff0c;并详细阐述其在2C&#xff08;面向消费者&#xff09;和2B&#xff08;面向企业&#xf…

使用ThreadLocal来存取单线程内的数据

一.什么是ThreadLocal&#xff1f; ThreadLocal&#xff0c;即线程本地变量。如果你创建了一个 ThreadLocal变量&#xff0c;那么访问这个变量的每个线程都会有这个变量的一个本地拷贝&#xff0c;多个线程操作这个变量的时候&#xff0c;实际是在操作自己本地内存里面的变量&…