包装类--Math 类--Arrays 类--System 类

news2024/11/15 17:54:02

包装类–Math 类–Arrays 类–System 类

包装类

包装类的分类

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

包装类和基本数据的转换

演示包装类和基本数据类型的相互转换,这里以int和Integer演示。

1)jdk5前的手动装箱和拆箱方式,装箱:基本类型->包装类型,反之,拆箱

2)jdk5以后(含jdk5)的自动装箱和拆箱方式

3)自动装箱底层调用的是valueOf方法,比如Integer.valueOf()

4)其它包装类的用法类似,

演示 int <–> Integer 的装箱和拆箱

jdk5 前是手动装箱和拆箱

手动装箱 int->Integer

​ int n1 = 100;

​ Integer integer = new Integer(n1);

​ Integer integer1 = Integer.valueOf(n1);

手动拆箱 Integer -> int

​ int i = integer.valueOf(n1);

自动装箱 int->Integer

​ Integer integer2 = n2;

底层使用的是

​ Integer.valueOf(n2)

自动拆箱

​ Integer->int

​ int n3 = integer2;

底层仍然使用的是valueOf

Integer主要是看范围 -128 ~ 127 就是直接返回 ,否则,就 new Integer(xx)

Integer 类和 Character

System.out.println(Integer.MIN_VALUE); //返回最小值

System.out.println(Integer.MAX_VALUE);//返回最大值

System.out.println(Character.isDigit(‘a’));//判断是不是数字

System.out.println(Character.isLetter(‘a’));//判断是不是字母

System.out.println(Character.isUpperCase(‘a’));//判断是不是大写

System.out.println(Character.isLowerCase(‘a’));//判断是不是小写

System.out.println(Character.isWhitespace(‘a’));//判断是不是空格

System.out.println(Character.toUpperCase(‘a’));转成大写

System.out.println(Character.toLowerCase(‘A’));//转成小写

String 类

String 类的理解和创建对象

在这里插入图片描述

在这里插入图片描述

创建 String 对象的两种方式

1)方式一:直接赋值 String s= "wyx”

2)方式二:调用构造器 String s = new String(“wyx”);

区别

方式一:直接赋值 String s= "wyx";

方式二:调用构造器 String s2 = new String("wyx");

1.方式一:先从常量池查看是否有"wyx"数据空间,如果有,直接指向;如果没有则重新创建,然后指向。s最终指向的是常量池的空间地址

2.方式二:先在堆中创建空间,里面维护了value属性,指向常量池的wyx空如果常量池没有"wyx",重新创建,如果有,直接通过value指向。最终指的是堆中的空间地址。

3.画出两种方式的内存分布图
在这里插入图片描述

字符串的特性

说明

1)String是一个final类,代表不可变的字符序列

2)字符串是不可变的。一个字符串对象一旦被分配,其内容是不可变的1.以下语句创建了几个对象?画出内存布局图。
在这里插入图片描述

String s1 = "hello";

s1="haha"; //1min

/创建了2个对象

小结:

​ 底层是 StringBuilder sb = new StringBuilder();

​ sb.append(a); sb.append(b);sb是在堆中,

​ 并且append是在原来字符串的基础上追加的

重要规则:

​ String c1 = “ab” + “cd”;常量相加,看的是池。

​ String c1 = a+b;变量相加,是在堆中

String 类的常见方法

说明

String类是保存字符串常量的。每次更新都需要重新开辟空间,效率较低,因此jawa设计者还提供了StringBuilder 和 StringBuffer 来增强String的功能并提高效率。

String 类的常见方法一览

在这里插入图片描述

在这里插入图片描述

StringBuffer 类

基本介绍

  1. Java.lang.StringBuffer代表可变的字符序列,可以对字符串内容进行增删

  2. 很多方法与String相同,但StringBuffer是可变长度的。

  3. StringBuffer是一个容器。

在这里插入图片描述

String VS StringBuffer

  1. String保存的是字符串常量,里面的值不能更改,每次String类的更新实际上就是更改地址,效率较低//private final char value[];
  2. StringBuffer保存的是字符串变量,里面的值可以更改,每次
  3. StringBuffer的更新实际上可以更新内容,不用每次更新地址,效率较高/char[] value;//这个放在堆

String 和 StringBuffer 相互转换

//方式 1 使用构造器

//注意: 返回的才是 StringBuffer 对象,对 str 本身没有影响

​ StringBuffer stringBuffer = new StringBuffer(str);

//方式 2 使用的是 append 方法

​ StringBuffer stringBuffer1 = new StringBuffer();

​ stringBuffer1 = stringBuffer1.append(str)

​ StringBuffer ->String

//方式 1 使用 StringBuffer 提供的 toString 方法

​ String s = stringBuffer3.toString();

//方式 2: 使用构造器来搞定

​ String s1 = new String(stringBuffer3)

StringBuilder 类

1)一个可变的字符序列。此类提供一个与StringBuffer兼容的API,但不保证同步(StringBuilder 不是线程安全)。该类被设计用作 StringBuffer的一个简易替换,用在字符串缓冲区被单个线程使用的时候。如果可能,建议优先采用该类因为在大多数实现中,它比StringBuffer要快[后面测]。

2)在 StringBuilder上的主要操作是 append 和 insert方法,可重载这些方法,以接受任意类型的数据。

在这里插入图片描述
在这里插入图片描述

  1. StringBuilder 和 StringBuffer 均代表可变的字符序列,方法是一样的,所以使用和StringBuffer一样,
  1. StringBuilder 继承 AbstractStringBuilder 类

  2. 实现了 Serializable ,说明 StringBuilder 对象是可以串行化(对象可以网络传输,可以保存到文件)

  3. StringBuilder 是 final 类, 不能被继承

  4. StringBuilder 对象字符序列仍然是存放在其父类 AbstractStringBuilder 的 char[] value; 因此,字符序列是堆中

  5. StringBuilder 的方法,没有做互斥的处理,即没有 synchronized 关键字,因此在单线程的情况下使用 // StringBuilder stringBuilder = new StringBuilder()

String、StringBuffer 和 StringBuilder 的比较

1)StringBuilder 和 StringBuffer非常类似,均代表可变的字符序列,而且方法也一样

2)String:不可变字符序列,效率低,但是复用率高。

3)StringBuffer:可变字符序列、效率较高(增删)、线程安全,看源码

4)StringBuilder:可变字符序列、效率最高、线程不安全

5)String使用注意说明:

string s="a";//创建了一个字符串

s+="b";/实际上原来的"a"字符串对象已经丢弃了,现在又产生了一个字符串s+"b"(也就是"ab")。如果多次执行这些改变串内容的操作,会导致大量副本字符串对象存留在内存中,降低效率。如果这样的操作放到循环中,会极大影响程序的性能=>结论:如果我们对String做大量修改,不要使用String

String、StringBuffer 和 StringBuilder 的选择

在这里插入图片描述

Math 类

基本介绍

Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数

方法一览

在这里插入图片描述

Arrays 类

Arrays 类常见方法

在这里插入图片描述

在这里插入图片描述

System 类

System 类常见方法

1)exit退出当前程序

2)arraycopy:复制数组元素,比较适合底层调用,一般使用Arrays.copyOf完成复制数组

int[] src={1,2,3};

int[] dest = new int[3];

System.arraycopy(src, 0, dest, 0, 3);

3)currentTimeMillens:返回当前时间距离1970-1-1的毫秒数

4)gc:运行垃圾回收机制 System.gc();

BigInteger 和 BigDecimal 类

应用场景:

1)Biglnteger适合保存比较大的整型

2)BigDecimal适合保存精度更高的浮点型(小数)

BigInteger BigDecimal常见方法

1)add加 2)subtract减
3)multiply乘 4) divide除

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

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

相关文章

OpenAI收费标准,ChatGPT调用须知!

OpenAI收费标准&#xff0c;ChatGPT调用须知&#xff01; 免费镜像站价格说明GPT4GPT3.5图片模型如何付费 免费镜像站 ChatGPT有很多镜像站&#xff0c;需要输入API-KEY才可以使用&#xff0c;镜像站不会进行收费&#xff0c;而是OpenAI会对您进行收费。本文主要说明OpenAI的收…

【好书精读】网络是怎样连接的 —— IP 与以太网的包收发操作

&#xff08; 该图由AI制作 &#xff09; 目录 包的基本知识 包收发操作概览 生成包含接收方 IP 地址的 IP 头部 生成以太网用的 MAC 头部 通过 ARP 查询目标路由器的 MAC 地址 以太网的基本知识 将 IP 包转换成电或光信号发送出去 给网络包再加 3 个控制数据 向集线…

代码随想录算法训练营第四十一天 | 背包问题(一维、二维)、416. 分割等和子集

01背包&#xff1a;n种物品&#xff0c;每种物品只有1个&#xff0c;有相应的重量和价值 最多只能装m的重量&#xff0c;最多价值为多少&#xff1f; dp[i][j] : [0, i]物品任取放进容量为j的背包里 不放物品i&#xff1a;dp[i-1][j] 放物品i&#xff1a;dp[i-1][j-weight[…

如何系统性的学习Python语言

零基础同学的福音来了&#xff0c;如果你对Python语言的学习感兴趣&#xff0c;接下来可以由浅入深的了解下Python语言&#xff0c;哪怕你是零基础的小白也完全可以学会的&#xff0c;最后也会给大家放出学习和实例相结合的教程及方法&#xff0c;给到各位同学系统性的教学&…

ES-索引管理

前言 数据类型 ​ 搜索引擎是对数据的检索&#xff0c;所以我们先从生活中的数据说起。我们生活中的数据总体分为两种&#xff1a; 结构化数据非结构化数据 结构化数据&#xff1a; 也称作行数据&#xff0c;是由二维表结构来逻辑表达和实现的数据&#xff0c;严格地遵循数…

<C语言> 数组

1.一维数组的创建和初始化。 1.1 数组的创建 数组是一组相同类型元素的集合。 使用以下方式声明一个一维数组&#xff1a; type arrayName[arraySize];type是数组中元素的类型&#xff0c;arrayName是数组的名称&#xff0c;arraySize是数组的大小&#xff08;即元素的个数&a…

linux系统中如何制作rootfs?详细教程

如何制作rootfs&#xff1f;安排&#xff01;想直奔主题的&#xff0c;直接跳到第四部分。 一、分析 1. 文件系统简介 理论上说一个嵌入式设备如果内核能够运行起来&#xff0c;且不需要运行用户进程的话&#xff0c;是不需要文件系统的&#xff0c;文件系统简单的说就是一种…

硬件入门之什么是mos管

硬件入门之什么是mos管 文章目录 硬件入门之什么是mos管一、mos管是什么&#xff1f;MOS管常用于&#xff1a; 驱动大功率电路中。MOS选型参数mos管调参数 二、实际应用场景1.防反接保护电路&#xff09;2.防过压保护电路3.防反接防过压电路一体电路4.驱动电路 总结 一、mos管是…

VS+QT+VTK三维网格显示-点面选择-法线法向量显示-配准-分割窗体程序

程序示例精选 VSQTVTK三维网格显示-点面选择-法线法向量显示-配准-分割窗体程序 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对<<VSQTVTK三维网格显示-点面选择-法线法向量显示-配准-分…

Quartz使用H2数据库(嵌入模式)进行持久化

使用H2(嵌入模式)持久化Quartz任务 &#x1f51d;前言&#xff1a; Quartz在包内提供了多种数据库的sql文件&#xff0c;大家可以选择方便的使用。路径如下。 1.初始化h2(不使用Server模式) public class InitH2 {private static String USER_NAME "lee";private…

Unity简单操作:InputSystem获取WASD键盘输入 移动人物

目录 安装InputSystem 在编辑的脚本中使用 InputSystem生成的脚本 Unity版本&#xff1a;2019.2.3f1 安装InputSystem 菜单栏/Window/Package Manager/Input System 工程面板内 右键-->创建Input Actions 选中New Controls改名为PlayerControls 然后属性 面板按下Edit as…

软件项目管理 第七章 软件项目的质量管理与配置管理 课后习题参考答案——主编:李冰、张桥珍、刘玉娥

第七章 软件项目的质量管理与配置管理 课后习题参考答案 1.选择题 (1)项目质量管理的最终责任由谁来承担?&#xff08;D&#xff09; A.项目开发人员 B.采购经理 C.质量经理 D.项目经理 (2)“质量成本”是一个项目管理概念,它说明了下列哪项成本?…

HDFS 写流程源码分析

HDFS 写流程源码分析 一、客户端&#xff08;一&#xff09;文件创建及Pipeline构建阶段&#xff08;二&#xff09;数据写入&#xff08;三&#xff09;输出流关闭 二、NameNode端&#xff08;一&#xff09;create 环境为hadoop 3.1.3 一、客户端 以下代码创建并写入文件。 …

如何优雅地安装 Android Studio

&#x1f4ad; 写在前面&#xff1a;我们假设读者已经搞定 JDK 了&#xff0c;如果没搞定请先搜索 JDK 的安装教程。访问 Oracle JDK 下载页面&#xff1a;访问 Java Downloads | Oracle &#xff0c;点击 "JDK Download" 按钮。选择适合您操作系统的 JDK 版本&#…

设计模式之模板方法模式笔记

设计模式之模板方法模式笔记 说明Template Method(模板方法)目录模板方法模式示例类图抽象类包菜类菜心类测试类 说明 记录下学习设计模式-模板方法模式的写法。JDK使用版本为1.8版本。 Template Method(模板方法) 意图:定义一个操作中的算法骨架&#xff0c;而将一些步骤延…

yolo格式visdrone转换

目录 yolo格式转换1. Visdrone2019格式转换 yolo格式转换 1. Visdrone2019格式转换 数据集下载地址https://aistudio.baidu.com/aistudio/datasetdetail/115729 如果是visdrone数据集&#xff0c;直接使用txt2xml.py去转换&#xff0c;修改annotation和img的路径&#xff0c…

<Linux开发>驱动开发 -之- Linux LCD 驱动

&#xff1c;Linux开发&#xff1e;驱动开发 -之- Linux LCD 驱动 交叉编译环境搭建&#xff1a; &#xff1c;Linux开发&#xff1e; linux开发工具-之-交叉编译环境搭建 uboot移植可参考以下&#xff1a; &#xff1c;Linux开发&#xff1e; -之-系统移植 uboot移植过程详细…

网络基础一

网络发展 独立模式&#xff1a;计算机之间相互独立。 网络互联&#xff1a;多台计算机连接在一起&#xff0c;完成数据共享。 局域网LAN&#xff1a;计算机数量更多了&#xff0c;通过交换机和路由器连接在一起&#xff1b; 广域网WAN&#xff1a;将远隔千里的计算机都连在…

[BPU部署教程] 万字长文!通透解读模型部署端到端大流程——以终为始,以行为知

去年6月份拿到开发板到现在&#xff0c;转眼已经过去大半年了&#xff0c;这个博客11月初就在写&#xff0c;断断续续写到现在。C部署需要考虑的问题很多&#xff0c;如果只给个简单部署教程的话&#xff0c;就算整理出来&#xff0c;感觉帮助也不大&#xff0c;各位开发时候我…

YOLOv5改进系列(11)——添加损失函数之EIoU、AlphaIoU、SIoU、WIoU

【YOLOv5改进系列】前期回顾: YOLOv5改进系列(0)——重要性能指标与训练结果评价及分析 YOLOv5改进系列(1)——添加SE注意力机制