十一. 常用类

news2024/9/24 11:31:42

文章目录

  • 一、包装类
    • 1.1 包装类的继承关系
    • 1.2 包装类和基本数据类型的转换
    • 1.3 包装类与String之间的转换
    • 1.4 包装类的常用方法
  • 二、String类
    • 2.1 String类的理解和创建对象
    • 2.2 String的创建方式
    • 2.3 字符串的特性
    • 2.4 String的常用方法
  • 三、StringBuffer和StringBuilder类
    • 3.1 StringBuffer类
      • 3.1.1 StringBuffer类基本介绍
      • 3.1.2 String VS StringBuffer
      • 3.1.3 StringBuffer的构造器
      • 3.1.4 String与StringBuffer之间的转换
      • 3.1.5 StringBuffer类常见方法
    • 3.2 StringBuilder类
    • 3.3 String、StringBuffer与StringBuilder的比较
  • 四、Math类
  • 五、Date日期类、Calender日历类以及新的日期
    • 5.1 第一代日期类
    • 5.2 第二代日期类
    • 5.3 第三代日期类
  • 六、System类
  • 七、Arrays类
  • 八、BigInterger类和BigDecimal
  • 九、经典例题
    • 9.1 Integer的创建机制
    • 9.2 String 相关题

一、包装类

1.1 包装类的继承关系

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1.2 包装类和基本数据类型的转换

在这里插入图片描述

public class Test{
    public static void main(String[] args){
        int n1 = 12;
        Integer n2 = n1; // 底层使用 valueOf 方法
        int n3 = n2; // 底层使用 intValue 方法
    }
}

1.3 包装类与String之间的转换

public class WrapperVSSring{
    public static void main(String[] args){
        
        // 包装类 (Integer) -> String
        Integer i = 100; // 自动装箱
        // 方式1
        String str1 = i + "";
        // 方式2
        String str2 = i.toString();
        // 方式3
        String str3 = String.valueOf(i);
    
        // String -> 包装类(Integer)
        String str4 = "12345";
        Integer i2 = Integer.parseInt(str4); // 使用到自动装箱
        Integer i3 = new Integer(str4);
    }
}

1.4 包装类的常用方法

在这里插入图片描述

二、String类

2.1 String类的理解和创建对象

在这里插入图片描述

在这里插入图片描述

package com.str_;

/**
 * @author Gao YongHao
 * @version 1.0
 */
public class String01 {
    public static void main(String[] args) {
        // 1. String 对象用于保存字符串,也就是一组字符序列
        // 2. "jack" 字符串常量,双引号括起来的字符序列
        // 3. 字符串的字符使用Unicode字符编码,一个字符(不区分字母还是汉字)占两个字节
        // 4. String 类有很多构造器,构造器的重载
        //    常用的有 String s1 = new String();
        //    String s2 = new String(String original);
        //    String s3 = new String(char[] a);
        //    String s4 = new String(char[] a,int startIndex,int count)
        //    String s5 = new String(byte[] b)
        // 5. String 类实现 接口 Serializable 【String 可以串行化:可以在网络传输】
        //                 接口 Comparable [String 对象可以比较大小]
        // 6. String 是final类,不能被其他类继承
        // 7. String 有属性 private final char value[];用于存放字符串内容
        // 8. 一定要注意: value 是一个final类型,赋值后,不可以修改(需要功力):
        // 即:value不能指向新的地址,但是单个字符内容是可以变化的
        String name = "jack";
        name = "tom";

        final char[] value = {'a','b','c'};
        char[] v2 = {'t','o','m'};
        value[0] = 'H'; // 可以修改堆中字符数组空间中的元素
//        value = v2; // 不能修改value的指向
    }
}

2.2 String的创建方式

在这里插入图片描述

在这里插入图片描述

2.3 字符串的特性

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

package com.str_;

/**
 * @author Gao YongHao
 * @version 1.0
 */
public class String02 {
    public static void main(String[] args) {
        String a = "a"; // 在常量池中创建"a"对象
        String b = "b"; // 在常量池中创建"b"对象
        // 解读
        // 1. 先 创建一个 StringBuilder sb = new StringBuilder();
        // 2. 执行 sb.append("a");
        // 3. sb.append("abc");
        // 4. String c = sb.toString()
        // 最后其实 c 指向堆中的对象(String),value[] -> 池中 "ab"
        String c = a + b;
        String d = "ab";
        System.out.println(c == d); // false
    }
}

2.4 String的常用方法

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

三、StringBuffer和StringBuilder类

3.1 StringBuffer类

3.1.1 StringBuffer类基本介绍

在这里插入图片描述

package com.str_;

/**
 * @author Gao YongHao
 * @version 1.0
 */
public class StringBuilder01 {
    public static void main(String[] args) {
        // 老韩解读
        // 1. StringBuilder 的直接父类 是 AbstractStringBuilder
        // 2. StringBuilder 实现了 Serializable,即StringBuffer的对象可以串行化
        // 3. 在父类中 AbstractStringBuilder 有属性 char[] value,不是final!
        // 该 value 数组存放 字符串内容,指向堆中的对象(不同于String 的 value 指向常量池)
        // 4. String 是 final 类,不能被继承
        // 5. 因为 StringBuffer 字符内容是存在 char value, 所以在变化(增加/删除)
        // 不用每次都更换地址(即不是每次创建新对象),所以效率高于 String
        StringBuilder stringBuilder = new StringBuilder;

    }
}

3.1.2 String VS StringBuffer

在这里插入图片描述

3.1.3 StringBuffer的构造器

在这里插入图片描述

3.1.4 String与StringBuffer之间的转换

在这里插入图片描述

3.1.5 StringBuffer类常见方法

在这里插入图片描述

3.2 StringBuilder类

在这里插入图片描述

在这里插入图片描述

package com.str_;

/**
 * @author Gao YongHao
 * @version 1.0
 */
public class StringBuilder01 {
    public static void main(String[] args) {
        // 1. StringBuilder 继承 AbstractStringBuilder 类
        // 2. 实现了 Serializable ,说明 StringBuilder对象时可以串行化(对象可以网络传输,可以保存到文件)
        // 3. StringBuilder 是final类,不被继承
        // 4. StringBuilder 对象字符序列是存放在其父类 AbstractStringBuilder 的 char[] value;
        // 5. StringBuilder 的方法,没有做互斥的处理,即没有synchronized 关键字,因此在单线程的情况下使用
        // StringBuilder
        StringBuilder stringBuilder = new StringBuilder();
    }
}

3.3 String、StringBuffer与StringBuilder的比较

在这里插入图片描述

在这里插入图片描述

四、Math类

在这里插入图片描述

五、Date日期类、Calender日历类以及新的日期

5.1 第一代日期类

在这里插入图片描述

在这里插入图片描述

5.2 第二代日期类

在这里插入图片描述

在这里插入图片描述

5.3 第三代日期类

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

六、System类

在这里插入图片描述

七、Arrays类

在这里插入图片描述

在这里插入图片描述

八、BigInterger类和BigDecimal

在这里插入图片描述

在这里插入图片描述

九、经典例题

9.1 Integer的创建机制

public void main(String[] args){
    Integer i = new Integer(1);
    Integer j = new Integer(1);
    System.out.println(i == j); // 创建两个对象空间,false
    
    Integer m = 1; // 底层 Integer.valueOf(1)
    Integer n = 1; //  底层 Integer.valueOf(1)
    System.out.println(i == j); // -128 ~ 127 范围内返回的是缓存中的 Integer 对象,true
    
    Integer x = 128;
    Integer y = 128;
    System.out.println(x == y); //  -128 ~ 127 范围内返回的是缓存中的 Integer 对象,false


    Integer i1 = 127; // 底层 Integer.valueOf()
    int i2 = 127;
    System.out.print(i1 == i2); // 只要有基本数据类型,判断的是值是否相等(即:转换为基本数据类型相比较)
}

9.2 String 相关题

  • String.intern方法解读
    在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

package com.str_;

/**
 * @author Gao YongHao
 * @version 1.0
 */
public class String02 {
    public static void main(String[] args) {
        String a = "a"; // 在常量池中创建"a"对象
        String b = "b"; // 在常量池中创建"b"对象
        // 解读
        // 1. 先 创建一个 StringBuilder sb = new StringBuilder();
        // 2. 执行 sb.append("a");
        // 3. sb.append("abc");
        // 4. String c = sb.toString()
        // 最后其实 c 指向堆中的对象(String),value[] -> 池中 "ab"
        String c = a + b;
        String d = "ab";
        System.out.println(c == d); // false
    }
}

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

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

相关文章

重塑PDF编辑体验:最新在线工具深度评测

现在用PDF的场景多了,随之而来的加速了PDF编辑、转换工具的飞速发展,很多时候因为便捷大家更喜欢使用在线的工具。今天我就分享几款pdf在线编辑工具提高你文档处理效率。 1.福昕PDF编辑器 链接一下>>https://editor.foxitsoftware.cn 在沉浸阅…

Datawhale X 李宏毅苹果书 AI夏令营|机器学习基础之线性模型

1. 线性模型 线性模型是机器学习中最基础和常见的模型之一。在线性模型中,预测变量(输入特征)和目标变量(输出)之间的关系被建模为一个线性组合。数学形式可以表示为: 其中:x 是输入特征向量&a…

加速 PyTorch 模型:使用 ROCm 在 AMD GPU 上应用 torch.compile

Accelerate PyTorch Models using torch.compile on AMD GPUs with ROCm — ROCm Blogs 介绍 PyTorch 2.0 引入了一个名为*torch.compile()*的工具,可以极大地加速 PyTorch 代码和模型。通过将 PyTorch 代码转换为高度优化的内核,torch.compile 在现有代…

【深入理解SpringCloud微服务】深入理解微服务配置中心原理,并手写一个微服务配置中心

【深入理解SpringCloud微服务】深入理解微服务配置中心原理,并手写一个微服务配置中心 为什么要使用配置中心配置中心原理如何手写一个配置中心使用PropertySourceLocator监听配置变更,刷新配置 实现一个微服务配置中心服务端库表ConfigCenterController…

全国中学基础信息 API 数据接口

全国中学基础信息 API 数据接口 基础数据,高校高考,提供全国初级高级中学基础数据,定时更新,多维度筛选。 1. 产品功能 2024 年数据已更新;提供最新全国中学学校基本信息;包含全国初级中学与高等中学&#…

JavaWeb:实验一JSP运行环境安装及配置

一、实验目的 1.掌握JSP程序运行环境配置的基本要求。 2.熟悉HTML的常用标签使用以及静态网页的制作。 二、实验性质 验证性实验 三、实验内容 制作一个静态网站的基本页面index.html,要求如下: 1&#xff…

SQL 语言简明入门:从历史到实践

SQL(Structured Query Language)是数据库领域的核心语言。自20世纪70年代中期由IBM公司开发以来,SQL已经成为全球最广泛使用的数据库管理语言。 本文将以简洁明了的方式为您介绍SQL的历史、基本结构、核心语言组成以及其独特的特点和书写规则…

【软件部署】JumpServer堡垒机搭建及使用

目录 一、linux服务器docker搭建 二、linux服务器单机部署 1.环境安装 2.安装数据库和Redis 3.下载linux安装包并部署 4.安装启动后命令 5.通过浏览器访问部署服务器的地址 三、JumpServer产品使用 1、添加系统用户 2、创建资产 3、将主机/资源进行授权给用户 4、登录…

Day 7:条件编译

GCC编译器 预处理阶段: 1.gcc - E 文件名 :预处理文件 2.gcc - o 文件名 :重命名 gcc -E gcc.c gcc-o gcc.i:生成预处理文件。 vi gcc.i: 作用:展开头文件,宏进行替换。 编译阶段: gcc -…

希尔排序的图解展示与实现

什么是希尔排序 对整个数组进行预排序,即分组排序:按间距为gap分为一组,分组进行插入排序。 预排序的作用与特点 大的数更快地到后面,小的数更快地到前面; gap越大,跳得越快,排完接近有序慢&…

数据结构与算法---排序算法

文章目录 排序选择排序冒泡排序插入排序 希尔排序归并排序快速排序桶排序计数排序基数排序堆排序 排序 排序是指将一组数据按照特定的规则或顺序进行排列,比如一个数组[1, 5, 2, 4, 3]按照从小到大的顺序排列后就是[1,2,3,4,5]。 排序算法(Sorting alg…

lay数据表格(table)的多选框限制单选

TOC lay数据表格(table)的多选框限制单选 使用layui弹窗显示表格数据提供选择,最初使用单选框,选中后无法取消勾选,后该成多选框限制成单选,可点击已勾选复选框实现取消功能。 PS:easyui数据表格提供简单实现 多选框…

有哪些数据分析类的软件可供参考?

对于数据分析师来说,掌握以下数据分析工具很有必要,一个好的数据分析工具,可以使得数据分析工作事半功倍,相对于整个数据分析学习流程来说,掌握数据分析工具是学习数据分析的关键。 日常数据分析中,有80%的…

【电力系统】使用电力系统稳定器 (PSS) 和静态 VAR 补偿器 (SVC) 提高瞬态稳定性

摘要 电力系统在面对故障和扰动时,其瞬态稳定性是确保系统安全运行的关键因素。本文探讨了通过使用电力系统稳定器(PSS)和静态VAR补偿器(SVC)来提高电力系统瞬态稳定性的策略。通过仿真分析,证明了PSS和SV…

折腾 Quickwit,Rust 编写的分布式搜索引擎 - 可观测性之分布式追踪

概述 分布式追踪是一种跟踪应用程序请求流经不同服务(如前端、后端、数据库等)的过程。它是一个强大的工具,可以帮助您了解应用程序的工作原理并调试性能问题。 Quickwit 是一个用于索引和搜索非结构化数据的云原生引擎,这使其非常适合用作追踪数据的后端…

提升农业信息化水平,C# ASP.NET Vue果树生长信息管理系统带来全新管理体验

🍊作者:计算机毕设匠心工作室 🍊简介:毕业后就一直专业从事计算机软件程序开发,至今也有8年工作经验。擅长Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等。 擅长:按照需求定制化开发项目…

【算法每日一练及解题思路】找出模式匹配字符串的异位词在原始字符串中出现的索引下标

【算法每日一练及解题思路】找出模式匹配字符串的异位词在原始字符串中出现的索引下标 一、题目:找出模式匹配字符串的异位词在原始字符串中出现的索引下标 二、举例: 两个字符串原始字符串initStr123sf3rtfb,模式匹配字符串regxf3s,找到模…

【读书笔记-《30天自制操作系统》-12】Day13

本篇的内容仍然是定时器的相关讲解。上一篇内容中对于中断程序做了许多优化,但是这些优化到底起了多少作用呢?本篇用一种测试方法来进行测试。然后本篇继续引入链表与哨兵的概念,进一步加快超时的中断处理。 1. 主程序简化 开发过程到了这…

nacos获取服务实例流程

一、客户端获取服务实例流程(以dubbo为例) 1.dubbo元数据服务初始化需要订阅的服务列表 1.1.获取与当前服务相同分组和集群的NACOS的注册服务列表。 1.2 首先是从spring-cloud-common的通用注册中心中,使用组合注册客户端类获取服务,此组合会逐个调用注…

Linux awk案例

目录 1. 查询时间超过2000毫秒的请求2. 查询指定列组合出现的次数3. 统计所有文件的大小4. 获取大于指定大小的文件名,并按照从大到小排序5. grep指定字段后,使用awk列转行6. 查询第四个字段等于指定值的内容 1. 查询时间超过2000毫秒的请求 ✅log: 202…