Nrich's blog Nrich's blog
首页
  • Java
  • Golang
  • 深度学习
  • Git
  • Linux
  • DataStructure
  • CloudNative
  • Redis
  • MySQL
  • 路由劫持
GitHub (opens new window)

Nrich

小聪明
首页
  • Java
  • Golang
  • 深度学习
  • Git
  • Linux
  • DataStructure
  • CloudNative
  • Redis
  • MySQL
  • 路由劫持
GitHub (opens new window)
  • Java

    • 黑马Java入门基础-学习笔记

      • Java 基础语法
      • 数组
      • 方法
      • 面向对象基础
      • 常用API(String、ArrayList)
      • 面向对象进阶1(static、单例、代码块、继承)
      • 面向对象进阶2(包、权限修饰符、抽象类、接口)
      • 面向对象进阶3(多态、内部类、常用API)
      • 面向对象进阶4(常用日期API、正则、Arrays类、Lambda)
      • 面向对象进阶5(集合体系)
      • 面向对象进阶6(集合体系之Map)
      • 面向对象进阶-补充(可变参数)
    • 面向对象
    • 常用API
      • 1. Object
      • 2. Objects
      • 3. StringBuilder
      • 4. Math
      • 5. System
      • 6. BigDecimal
    • 并发、并行、异步、同步(暂存)
    • 《Spring Boot 进阶-郑天民》

  • GoLang

  • 开发
  • Java
Nrich
2022-04-02
目录

常用API

# 常用API

# 1. Object

  • toString方法

    // 直接输出对象变量,默认可以省略toString调用不写的
    System.out.println(s);
    // 和下面这句话同义
    System.out.println(s.toString());
    
    1
    2
    3
    4

    toString 存在的意义

    父类toString()方法存在的意义就是为了被子类重写,以便返回对象的内容信息,而不是地址信息!!

    快捷方式:

    输入tos, IDEA 会自动提示 Generate 自动生成返回内容的信息。

  • equals方法

    直接比较两个对象的地址是否相同完全可以用“==”替代equals。

    System.out.println(s1.equals(s2));
    // 此时s1若==null,会报错空指针异常。
    
    1
    2

    equals 存在的意义

    父类equals方法存在的意义就是为了被子类重写,以便子类自己来定制比较规则。

# 2. Objects

  • equals 方法

    比 Object API 中的 equals 方法更安全,不会有空指针异常。

    System.out.println(Objects.equals(s1, s2));
    
    1

    但此时还是得重写 Object 中的 equals 方法,因为此时 Objects 源码中调用的 equals 方法还是重写的那个方法。

    对象进行内容比较的时候建议使用什么?为什么?

    建议使用 Objects 提供的 equals 方法。比较的结果是一样的,但是更安全。

  • isNull 方法

    System.out.println(Objects.isNull(s1)); 
    System.out.println(s1 == null); 
    
    1
    2

    这俩写法完全一样,但是调用 API 更专业。

# 3. StringBuilder

StringBuilder 是个可变的字符串类,可以把它看成一个对象容器。

作用:提高字符串的操作效率,如拼接、修改等。

常用方法:

  • append(任意类型)

    // 支持链式编程
    sb1.append("a").append("b").append("c").append("我爱你中国");
    // 反转+append也可以
    sb1.reverse().append("110");
    
    1
    2
    3
    4

    以上操作都可行是因为append和reverse都是返回 this 这个当前的对象。

  • reverse()

  • length()

  • toString()

    可用来把 StringBuild 恢复成 String 类型。StringBuild 已重写了 toString 方法。

    // 例1
    String rs = sb2.toString();
    check(rs);
    public static void check(String data) {
        System.out.println(data);
    }
    
    1
    2
    3
    4
    5
    6
    // 例2
    /**
       1、定义方法接收任意整型数组,返回数组内容格式
     */
    public static String toString(int[] arr){
       if(arr != null){
            // 2、开始拼接内容。
           StringBuilder sb = new StringBuilder("[");
           for (int i = 0; i < arr.length; i++) {
               sb.append(arr[i] ).append(i == arr.length - 1 ? "" : ", ");
           }
           sb.append("]");
           return sb.toString(); // 转成String类型返回去
       }else {
           return null;
       }
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17

StringBuilder 和 String

StringBuilder只是拼接字符串的手段:效率好,最终的目的还是要恢复成String类型。

并且 String 类型和 StringBuild 不同,String 类型的参数不能直接传 StringBuild 对象。String 是不可变字符串,而 StringBuilder 是个可变的字符串类。

为什么拼接、反转字符串建议使用StringBuilder?

String :内容是不可变的、拼接字符串性能差。 StringBuilder:内容是可变的、拼接字符串性能好、代码优雅。

定义字符串使用String 拼接、修改等操作字符串使用StringBuilder

StringBuilder 高效的原因,如下原理图:

image-20220402164512399

image-20220402164526875

# 4. Math

是个工具类,没有公开构造器。其中的方法都是静态的,直接用类名调用即可,不需要创建对象,即不能实例化。

image-20220402183903995

# 5. System

是个工具类,不能实例化。直接用类名调用。

image-20220402184111837

# 6. BigDecimal

用于解决浮点型运算精度失真的问题。

实际开发中并不创建 BigDecimal 对象,而是调用方法来使其成为 BigDecimal 对象。如:public static BigDecimal valueOf(double val): 包装浮点数成为BigDecimal对象。或者传进来字符串类型的值。直接用构造器可能还是会损失精度。

double 和 BigDecimal

double 是目的,BigDecimal 是手段。

double rs = c1.doubleValue();
1

BigDecimal 是一定要精度运算的,除不尽的会崩,因此需要指定的小数位数。

编辑 (opens new window)
上次更新: 2022/04/07, 08:01:03
面向对象
并发、并行、异步、同步(暂存)

← 面向对象 并发、并行、异步、同步(暂存)→

最近更新
01
YAML、Pod、Job、CronJob、ConfigMap、Secret
06-06
02
Kubernetes 的安装与基本架构
06-04
03
初识容器
05-30
更多文章>
Theme by Vdoing | Copyright © 2022-2023 Nrich | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式