首页 > 其他分享 >【常用API】Object、Objects、包装类、StringBuilder、StringBuffer、StringJoiner

【常用API】Object、Objects、包装类、StringBuilder、StringBuffer、StringJoiner

时间:2024-10-01 09:18:39浏览次数:3  
标签:String StringBuilder Object System 字符串 Objects println out

API:应用程序编程接口
就是java帮我们已经写好了一些程序,如:类、方法等,直接拿过来解决一些问题。

1.Object

它常用的方法:
toString() : 返回对象的字符串形式;存在意义,让子类重写,以便返回子类对象的内容。
equals() : 默认比较两个对象的地址是否相等;存在意义,让子类重写,以便用于比较对象的内容是否相同。
clone() : 当某个对象调用这个方法时,这个方法会复制一个一模一样的新对象返回;浅克隆,对象内容和地址完全一致;深克隆,对象内容一致,当涉及数组时,地址则不同。

2.Objects

它是一个工具类,方法调用者可以为null,而直接equals()要求调用者不能为空,否则NullPointerException
它常用的方法:

package api_use;

import java.util.Objects;

public class Test1_Objects {
    public static void main(String[] args) {
        // 目标:掌握Objects类提供的常用方法
        String s1 = null;
        String s2 = "itheima";

        // System.out.println(s1.equals(s2));// NullPointerException
        System.out.println(Objects.equals(s1,s2)); //更安全

        System.out.println(Objects.isNull(s1)); // true
        System.out.println(s1 == null); // true
        System.out.println(Objects.isNull(s2)); // false

        System.out.println(Objects.nonNull(s2)); // true
        System.out.println(Objects.nonNull(s1)); // false


    }
}

3.包装类

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

基本数据类型对应的包装类(引用数据类型)
byteByte
shortShort
int Integer
longLong
char Character
floatFloat
doubleDouble
booleanBoolean

包装类的常用方法:

package api_use;

import java.util.ArrayList;

public class Test1_Integer {
    public static void main(String[] args) {
        // 目标 :掌握包装类的使用
        Integer a2 = Integer.valueOf(12);
        System.out.println(a2);

        // 自动装箱 :可以把基本数据类型转化成对象
        Integer a3 = 12;

        // 自动拆箱 :可以把自动包装类型的对象转换成对应的基本数据类型
        int a4 = a3;

        // 泛型和集合不支持基本数据类型,只能支持引用数据类型
        ArrayList<Integer> list = new ArrayList<>();
        list.add(12);
        list.add(13);// 自动装箱

        Integer rs = list.get(1);// 自动拆箱
        System.out.println("------------------");

        //1.把基本类型的数据转换成字符串
        Integer a = 23;
        String rs1 = Integer.toString(23);//"23"
        System.out.println(rs1 + 1);// 231

        String rs2 = a.toString();
        System.out.println(rs2 + 1); // 231

        String rs3 = a + "";
        System.out.println(rs3 + 1);

        // 2. 把字符串类型的数值转换成对应的基本类型
        String ageStr = "29";
        int ageI = Integer.valueOf(ageStr);
        System.out.println(ageI + 1);// 30

        String scoreStr = "99.5";
        double score = Double.valueOf(scoreStr);// 99.5
        System.out.println(score + 0.5);


    }
}

4.StringBuilder、StringBuffer

StringBuilder 代表可变字符串对象,相当于一个容器,它里面装的字符串是可以改变的,就是用来操作字符串的。
好处:StringBuilder 比String 更适合字符串的修改操作、效率更高,更简洁;对于字符串的频繁拼接、修改,建议使用StringBuilder,效率更高(相较于String)。
StringBuffer 的用法与 StringBuilder 是一模一样的;
但 StringBuilder 是线程不安全的; StringBuffer 是线程安全的。

它的常用方法:

package api_use;

public class Test2_StringBuilder {
    public static void main(String[] args) {
        // StringBuilder 代表可变字符串对象,相当于一个容器,它里面装的字符串是可以改变的,就是用来操作字符串的
        /*
        * 好处:StringBuilder 比String 更适合字符串的修改操作、效率更高,更简洁
        * 对于字符串的频繁拼接、修改,建议使用StringBuilder,效率更高(相较于String)
        *
        * StringBuffer 的用法与 StringBuilder 是一模一样的;
        * 但 StringBuilder 是线程不安全的; StringBuffer 是线程安全的*/
        // 目标:搞清楚 StringBuilder 的用法和作用
        StringBuilder s = new StringBuilder("itheima");// s  "itheima"

        // 1、拼接内容
        s.append(12);
        s.append("黑马");
        s.append(true);

        // 支持链式编程
        s.append(666).append("黑马2").append(666);
        System.out.println(s);

        // 2、反转操作
        s.reverse();
        System.out.println(s);

        // 3、返回字符串的长度
        System.out.println(s.length());

        // 4、把 StringBuilder 对象又转换成String 类型
        String s1 = s.toString();
        System.out.println(s1);

    }
}

5.StringJoiner

JDK8开始有的,跟StringBuilder 一样,容器,创建后内容是可变的;
好处:不仅能提高字符串的操作效率,并且在有些场景下使用它效率更高,代码更简洁。

它的常用方法:

package api_use;

import java.util.StringJoiner;

public class Test3_StringJoiner {
    public static void main(String[] args) {
       /*
       * JDK8开始有的,跟StringBuilder 一样,容器,创建后内容是可变的
       * 好处:不仅能提高字符串的操作效率,并且在有些场景下使用它效率更高,代码更简洁*/
        StringJoiner s = new StringJoiner(",","[","]");
        s.add("java1");
        s.add("java2");
        s.add("java3");
        System.out.println(s);//[java1,java2,java3]

        System.out.println(getArrayData(new int[]{11,22,33}));

    }
    public static String getArrayData(int[] arr){
        // 1、判断arr是否为null
        if (arr == null){
            return null;
        }
        // 2、arr数组对象存在,arr = [11,22,33]
        StringJoiner s = new StringJoiner(",","[","]");
        for (int i = 0; i < arr.length; i++) {
            s.add(arr[i] + "");
        }
        return s.toString();
    }
}

标签:String,StringBuilder,Object,System,字符串,Objects,println,out
From: https://blog.csdn.net/qq_45173172/article/details/142647529

相关文章

  • Java如何将Object转换成指定Class对象
    在Java中,将Object转换为指定类型的Class对象实际上是两个不同概念的操作:将Object实例转换为特定类型的实例:这通常涉及到类型转换(如(MyType)myObject)或者通过反射机制(Class.cast(Object))来进行。获取特定类型的Class对象:这可以通过.class语法或Class.forName(StringclassName)......
  • Bad or missing usercopy whitelist? Kernel memory overwrite attempt detected to S
    Linux内核有一个usercopywhitelist机制,只允许这里面的region来做usercopy。如果是用kmem_cache_create申请的kmem_cache申请的内存空间来copytouser或者copyfromuser,那么就会报这个错。这时要用kmem_cache_create_usercopy,来将申请的区域加入到usercopywhitelist中。/***......
  • 常用类--Scanner,object
    Scanner`Scanner:一个简单的文本扫描器,可以使用正则表达式解析原始类型和字符串构造方法:Scanner(InputStreamsource)构造一个新的Scanner,产生从指定输入流扫描的值。`获取一个数字:(无法输出空格,只能输出空格前的数字)inti=sc.nextInt();......
  • [机器视觉][轻量化网络]GhostFormer: Efficiently amalgamated CNNtransformer archit
    目的与成果:     本文旨在提出一个轻量化的模型,在减少模型参数量的同时,保持一定的精度,  实验表明,该模型在PascalVOC数据集上的计算成本不到YOLOv7的一半,仅损失约3%[email protected],在MSCOCO数据集上的损失为9.7%[email protected],与GhostNet相比提高了0.95。本文的主要思想: ......
  • COMP 218 Fundamentals of Object-Oriented Programming
    ©Maynotbecopiedorduplicatedwithoutthepermissionoftheowner.COMP218FundamentalsofObject-OrientedProgrammingAssignment1Pleasenote:youareNOTallowedtoposttheassignment/solutionanywhereontheInternet.IntellectualPropertyrightsa......
  • Java中常用类之Object类
    Object类中的常用方法:1.hashCode方法,是对象地址值的另一种表现形式classStudent{Stringname;intage;publicStudent(){}publicStudent(Stringname,intage){this.name=name;this.age=age;}}测试类中是这样进......
  • Qt - QObject设置对象名称和属性
    作用用来作为id选择器和属性选择器,来设置样式setObjectName方法用来设置对象的名字,不同对象可以重复label=QLabel()label.setObjectName("label")objectName方法获取对象的名字QStringstrobj=this->objectName();qDebug()<<"strobj="<<strobj;setProperty方法......
  • 学习011-03-03 Relationships Between Persistent Objects in Code and UI(代码和用户
    RelationshipsBetweenPersistentObjectsinCodeandUI(代码和用户界面中持久对象之间的关系)Whendesigningabusinessmodel,itcanbenecessarytosetspecificrelationshipsbetweenbusinessobjects.Thistopicdescribeshowtosettheserelationshipsbe......
  • AttributeError: ‘ImageDraw‘ object has no attribute ‘textsize‘
    在进行画框的时候发现代码报错了,查询原因后发现我的pillow版本删除了该方法有两种处理办法:1、就是降低版本2、就是根据新版本修改代码,我这里主要来介绍一下新版本如何修改代码,把textsize改为textbbox首先先了解一下原先这个textsize方法的作用查看官方文档给的示例 from......
  • Objective-C (OC) 中 不推荐 使用 true 和 false 分析
    前言:虽然true和YES实际上等效为1,但为了代码的一致性和可读性,最好在Objective-C中用YES和NO 1.类型不同  YES和NO是Objective-C的BOOL类型,它本质上是一个signedchar,YES等于1,NO等于0。 true和false是C语言C99标准中的布尔值类型,来自stdbool.h......