Java学习16

目录

一.StringBuffer类:

1.基本介绍:

2.StringBuffer的构造器:

3.String与StringBuffer的相互转换:

(1)String->StringBuffer

(2)StringBuffer->String

4.StringBuffer的方法:

二.StringBuilder:

1.基本介绍:

2.String、StringBuilder、StringBuffer的比较:

三.Math类:

1.基本介绍:

2.Math的常用方法:

四.Arrays类:

1.基本介绍:

2.Arrays的基本方法:


一.StringBuffer类:

1.基本介绍:

  • StringBuffer代表可变的字符序列,可以对字符串内容进行增删。StringBuffer是可变长度的。StringBuffer是一个final类,不能被继承。
  • StringBuffer实现了Serializable,即StringBuffer的对象可以串行化(串行化:可以在网络中传输)。
  • StringBuffer的直接父类是AbstractStringBuilder,在父类中有属性char [ ] value,不是final ,该value数组存放字符串内容,引出存放在堆中的。
  • StringBuffer的更新不用每次更改地址,效率较高。因为StringBuffer的字符序列是存在char [ ] value,不是每次都创建新的对象。(String的value数组更新时,value指向的常量池的地址会发生改变,value自己本身的地址不会发生改变,会产生一个新的对象去指向value)

2.StringBuffer的构造器:

3.String与StringBuffer的相互转换:

(1)String->StringBuffer

方式一:返回的是才StringBuffer对象,对String本身没有影响。

方式二:使用的是append方法

(2)StringBuffer->String

方式一:使用StringBuffer提供的toString方法

方法二:使用构造器

4.StringBuffer的方法:

String str = nill;
StringBuffer sb = new StringBuffer();
sb.append(str);//底层调用的是AbstractStringBuilder的appendNull方法,将null添加到字符数组里面
System.out.println(sb.length());//4
StringBuffer sb = new StringBuffer(str);//底层源码super.(str.length()+16);抛出空指针异常。

二.StringBuilder:

1.基本介绍:

  • StringBuilder是一个可变的字符序列,用在字符缓冲区被单个线程使用的时候。(但是不可以保证线程安全,在单线程的时候使用)。
  • StringBuffer实现了Serializable,即StringBuffer的对象可以串行化(串行化:可以在网络中传输,也可以保存到文件)。
  • StringBuffer是一个final类,不能被继承。StringBuffer的直接父类是AbstractStringBuilder,在父类中有属性char [ ] value,不是final ,该value数组存放字符串内容,引出存放在堆中的。

2.String、StringBuilder、StringBuffer的比较:

三.Math类:

1.基本介绍:

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

2.Math的常用方法:

  • ceil向上取整,返回大于等于该参数的最小整数(double)
  • floor向上取整,返回小于等于该参数的最大整数(double)
  • random返回的是0-1之间的随机小数(0<=x<1),获取a-b之间的随机整数:(int)(a+Math.random()*(b-a+1));

四.Arrays类:

1.基本介绍:

Arrays里面包含了一系列静态方法,用于管理或操作数组(比如排序和收缩)。

2.Arrays的基本方法:

Integer [] integer = {1,20,90};
//遍历数组:
for(int i=0;i<integer;i++){System.out.pritln(integer[i])
}
System.out.pritln(Arrays.toString(integer));//[1,20,90]//sort排序
Integer arr [] = {1,-1,7,0,89};
//冒泡排序:
public static bubble02(Integer [] arr,Comparetor c){Integer temp = 0; for(int i = 0;i<arr.length();i++){for(int j= 0;j<arr.length-1-i;j++){//if(arr[j]>arr[j+1]){//从小到大if(c.compare(arr[j],arr[j+1])>0){temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;}}}
bubble02(arr,new Comparator){public int compare(Object o1,Object o2){int i1 = (Integer)o1;int i2 = (Integer)o2;return i1-i2;//升序//return i2-i1-降序}
)};
Arrays.sort(arr);//数组为引用类型,通过方法排序后会影响到实参 
System.out.pritln(Arrays.toString(arr));默认为升序
//可以通过传入一个接口Comparator实现定制排序
Arrays.sort(arr,new Compatator(){
public int compare(Object o1,Object o2){Integer i1 = (Integer) 01;Integer i2 = (Integer) 02;return i2-i1;}
});
//binarySearch--通过二分搜索进行查找,要求必须排好序Integer [] arr = {1,2,35,67};int index = Arrays.binarySearch(arr,1);//0,返回数组索引的值
//copyOf数组元素的复制:Integer [] arr = {1,2,35,67};Integer [] newarr = Arrays.copyOf(arr,arr.length);Integer [] newarr = Arrays.copyOf(arr,arr.length-1);//{1,2,35}Integer [] newarr = Arrays.copyOf(arr,arr.length+1);//{1,2,35,67,null}System.out.println(Arrays.toString(newArr));//{1,2,35,67}
//数组填充:Integer [] arr = {1,2,35,67};
//fill数组元素的填充Integer [] num = new Integer[]{9,3,2};Arrays.fill(num,5);System.out.println(Arrays.toString(num));//[5,5,5]
//equals比较两个数组元素内容是否完全一致,一致返回true,不一致返回falseInteger [] arr1 = {1,2,3,6};Integer [] arr2 = {1,2,90,123};boolean equals = Arrays.equals(arr1,arr2);System.out.println(equals);
//aslist将一组数据转换为ListList aslist = Arrays.asList(2,3,4,5,6);System.out.println("aslist"+ aslist);//[2,3,4,5,6]System.out.println("aslist的运行类型"+aslist.getClass());//Array类的一个静态内部类ArrayList,编译类型为List

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

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

相关文章

AutoDL中Notebook中无法打开“checkpoints”文件夹

checkpoints是Notebook的关键字&#xff0c;若用户创建文件夹命名为checkpoints&#xff0c;则在JupyterLab上无法打开、重命名和删除。此时可以在Terminal里使用命令行打开checkpoints&#xff0c;或者新建文件夹将checkpoints里的数据移动到新的文件夹下。 操作步骤&#xf…

Linux设置Huggingface镜像代理

打开终端&#xff08;Terminal&#xff09;。使用 vim 编辑 .bashrc 文件&#xff1a;vim ~/.bashrc在 vim 中&#xff0c;按 G 键移动到文件的末尾&#xff0c;然后按 o 键插入新的一行。输入以下内容&#xff1a;export HF_ENDPOINThttps://hf-mirror.com按 Esc 键退出插入模…

Redis篇 数据的编码方式和单线程模型

编码方式和单线程模型 一.redis中的数据类型二. Redis中查询编码方式命令三. 单线程模型四. 经典面试题,redis为何这么快?什么是IO多路复用? 一.redis中的数据类型 在redis中,数据类型大致分为5种 1.字符串类型 2.哈希 3.列表 4.集合 5.有序集合 redis底层在实现这些数据结构…

黑马点评-短信登录

Override public Result sendCode(String phone) { // 1.检验手机号 if (RegexUtils.isPhoneInvalid(phone)) { // 这里抛出异常和return fail有什么区别吗&#xff1f;———> 有区别&#xff0c;抛出异常会被全局异常处理器捕获&#xff0c;返回fail不会 throw ne…

防火墙技术基础篇:NAT转发之——NAPT(同时转换地址和端口)

NAT转发之——NAPT&#xff08;同时转换地址和端口&#xff09; 网络地址端口转换NAPT 网络地址端口转换NAPT&#xff08;Network Address Port Translation&#xff09;是人们比较熟悉的一种转换方式。NAPT普遍应用于接入设备中&#xff0c;它可以将中小型的网络隐藏在一个合…

Vue2和Vue3生命周期的对比

Vue2和Vue3生命周期的对比 Vue2 和 Vue3 生命周期对照表Vue2 和 Vue3 生命周期图示 Vue2 和 Vue3 生命周期对照表 触发时机Vue2.xVue3.x组件创建时运行beforeCreate setup createdsetup 挂载在DOM时运行beforeMountonBeforeMountmountedonMounted响应数据修改时运行beforeUpdat…

线程安全-4 AQSLockReentrantLock

一.什么是AQS&#xff1f; 1.AQS&#xff0c;AbstractQueuedSynchronizer&#xff0c;抽象队列同步器&#xff0c;是一个用于构建锁和同步器的框架。 2.基于AQS实现的锁或同步器有&#xff1a;可重入锁ReentrantLock、计时锁CountDownLatch、信号量Semaphore等 3.AQS三大核心…

x264 码率控制原理:x264_ratecontrol_end 函数

x264_ratecontrol_end 函数 原理 函数功能:编码完一帧数据后,保存状态并更新 ratecontrol 状态。函数参数:x264_t *h:编码器上下文结构体int bits:编码该帧所用的比特数int *filler:用于返回一个填充比特数函数调用关系: 函数内部执行流程:初始化x264_ratecontrol_t结…

关于DDos防御...别在听别人瞎扯了.....

前言 无意间刷文章的时候看到一篇文章&#xff0c;写的是遇到ddos&#xff0c;怎么用iptables封IP....... 然后我就百度搜了一下&#xff0c;好多都是这么说的&#xff0c;但是我发现&#xff0c;大多数人只要遭受过长期Ddos的&#xff0c;就不会再信网上的文章 文笔不太好&…

微信小程序中页面显示时触发子组件的重新渲染

使用生命周期函数&#xff1a; 在页面的 onShow 或 onLoad 生命周期函数中&#xff0c;调用子组件的方法或者改变子组件的数据&#xff0c;从而触发子组件的重新渲染。 例如&#xff0c;在页面的 js 文件中&#xff1a; Page({onShow: function() {// 调用子组件的方法this.sel…

Python内置函数ord()详解

在Python编程中&#xff0c;ord()函数是一个非常实用的内置函数&#xff0c;它用于返回一个字符的Unicode码点&#xff0c;即该字符在Unicode编码表中的数值。这个功能在处理文本数据和国际化应用程序时尤其重要。 函数功能 ord()函数的主要功能是将单个字符转换为其对应的Un…

在64位程序中调用SetWindowLong指定窗口处理过程失效问题排查(附C++编译器数据模型)

C软件异常排查从入门到精通系列教程&#xff08;专栏文章列表&#xff0c;欢迎订阅&#xff0c;持续更新...&#xff09;https://blog.csdn.net/chenlycly/article/details/125529931C/C基础与进阶&#xff08;专栏文章&#xff0c;持续更新中...&#xff09;https://blog.csdn…

剖析vue中nextTick源码

代码逻辑梳理&#xff1a; callbacks 数组用于存储待执行的回调函数&#xff0c;waiting 变量用于标记是否有待执行的回调函数。 flushCallbacks 函数用于执行所有存储在 callbacks 数组中的回调函数&#xff0c;并在执行完成后将 waiting 设置为 false。 timer 函数根据环境…

手把手实现AVL——二叉平衡搜索树

概述&#xff1a;本文介绍AVL树的实现&#xff0c;从零构建一颗AVL树&#xff0c;以及对应的插入、删除、旋转操作 什么是AVL树&#xff1f; AVL树是带有平衡条件的二叉查找树&#xff0c;二叉查找树又区别于二叉树&#xff1a;保证有序 这个平衡条件是每个节点的左右子树高…

[数据集][目标检测]红外人狗检测数据集VOC+YOLO格式185张2类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;185 标注数量(xml文件个数)&#xff1a;185 标注数量(txt文件个数)&#xff1a;185 标注类别…

Python数据分析常用函数

Python基础 数字处理函数 Python提供了用于数字处理的内置函数和内置模块(math)&#xff0c;使用内置模块&#xff0c;需要先导入 import math。 内置函数math模块abs(-5)返回绝对值math.ceil(2.3)返回不小于x的最小整数divmod(9,4)返回商和余数math.floor(2.3)返回不大于x的…

第十三章:C# 封装

第十三章:C# 封装 封装是面向对象编程(OOP)的四大基本原则之一,它强调将数据和行为封装在对象内部,通过访问控制来保护数据的完整性和安全性。封装使得类的实现细节对外部隐藏,只暴露必要的接口,从而提高代码的可维护性和可重用性。 1. 封装的基本概念 封装的核心思想…

xrdp连接ubuntu

要通过xrdp连接Ubuntu&#xff0c;您需要在Ubuntu上安装xrdp服务&#xff0c;并且可能还需要配置一个桌面环境&#xff0c;如GNOME或XFCE。以下是安装和配置xrdp的步骤&#xff1a; 打开终端。 更新软件包列表&#xff1a; sudo apt update安装xrdp服务&#xff1a; sudo ap…

GLCM 特征和LBP特征提取

GLCM 特征 GLCM&#xff08;灰度共生矩阵&#xff09;特征用于描述图像中像素灰度级之间的空间关系&#xff0c;常用于纹理分析。GLCM特征通过统计图像中各个灰度级对之间的出现频率来描述图像的纹理特征。GLCM特征包括能量&#xff08;ASM&#xff09;、对比度&#xff08;Co…

Host头攻击-禁止空主机头请求

1. 原理 空主机头请求&#xff1a;在某些情况下&#xff0c;HTTP请求可能没有包含Host头字段&#xff0c;或者Host头字段的值为空。这可能是由于客户端的错误配置、旧版本的HTTP客户端或恶意攻击导致的。安全风险&#xff1a;服务器在处理没有Host头字段或Host头字段为空的请求…