Java常用类2

StringBuffer和StringBuilder

StringBuffer与StringBuilder类介绍

StringBuffer是String的对等类,提供了许多字符串功能。您可能知道,String表示长度固定、不可修改的字符序列。与之相对应,StringBuffer表示可增长、可写入的字符序列。StringBuffer允许在中间插入字符和子串,或在末尾追加字符和子串。StringBuffer能够自动增长,从而为这类添加操作准备空间,并且通常预先分配比实际所需更多的字符空间,以允许空间增长。

StringBuilder类是由JDK 5引入的,以增加Java的字符串处理能力,提供与StringBuffer相同的功能。

StringBuffer与StringBuilder的区别:

StringBuffer类是线程安全的,而StringBuilder则不是,即不保证其对象的同步性,在多线程环境中是不安全的。

StringBuilder在性能上要比StirngBuffer好一些。

StringBuffer类的构造方法

StringBuffer( )    //默认预留16个字符的空间

StringBuffer(int  size)  //size指定预留的字符空间

StringBuffer(String  str)  //额外预留16个字符的空间  abc+16

StringBuffer(CharSequence  chars)  //额外预留16个字符的空间

提示:

再次分配内存空间是很耗时的操作。此外,频繁分配空间会产生内存碎片。

StringBuffer类的常用方法

1.append ()

append()方法将各种其他类型数据的字符串表示形式连接到调用StringBuffer对象的末尾。该方法有多个重载版本,下面是其中的几个:

StringBuffer  append(String  str)

StringBuffer  append(int  num)

StringBuffer  append(Object  obj)

2.insert ()

在指定位置插入参数提供的内容,返回修改后的该StringBuffer对象引用。该方法有多个重载版本,下面是其中的几个:

StringBuffer  insert(int index, String str)

StringBuffer  insert(int index, char ch)

StringBuffer  insert(int index, Object obj)

3.StringBuffer  delete (int start,int end) 10    包含5   不包含10

删除从start开始到end-1为止的一段字符序列,返回修改后的该StringBuffer对象引用。

4.StringBuffer  deleteCharAt(int index)  8

移除指定位置的字符,返回修改后的该StringBuffer对象引用。

5.StringBuffer  reverse()

将字符序列逆序,返回修改后的该StringBuffer对象引用。

6.StringBuffer  setCharAt( (int index,char ch)   5   a

将指定索引处的字符设置为 ch,返回修改后的该StringBuffer对象引用。

public static void main(String[] args){

StringBuffer sb = new StringBuffer();

sb += “I”;

sb.append(“am”);

sb.append(true);

System.out.println(sb);

}

几点说明:

(1)StringBuffer对象不能使用 += 赋值

(2)注意使用StringBuffer的append()方法连接字符串与使用“+”运算符直接连接String对象的区别。

案例:StringBufferDemo

长度与容量的概念

长度是指StringBuffer中实际保存的字符的个数,容量是指已经分配的空间大小。

1.int  length()

获取StringBuffer对象的当前长度

2.void  setLength(int len)    50    20   6    50   10

设置StringBuffer对象中字符串的长度。当增加字符串的大小时,会向末尾添加空字符。如果调用setLength()时使用的值小于length()返回的当前值,则超出新长度的字符将丢失。

3.int capacity( )

获取StringBuffer对象的当前容量

4.void ensureCapacity(int minCapacity)

设置缓存的大小。minCapacity指定了缓存的最小尺寸。(出于效率考虑,可能会分配比minCapacity更大的缓存。)

扩容后的数组长度为字节数组定长*2 +2 ,扩容不够时直接扩容到最大(指定大小)。

Math类

常用方法

abs(a)返回绝对值

max(a,b)返回较大值

min(a,b)返回较小值

Random类

常用方法

nextInt(a)生成并返回0~a之间的整数,不包含a

Date类

Date类封装了当前日期和时间。位于java.util包。

(1)类构造方法

public Date()   //使用当前日期和时间初始化对象

public Date(long date) //参数date为自从1970年1月1日子时经历的毫秒数

(2)常用方法

long getTime()

返回从1970年1月1日午夜开始已经流逝毫秒数

void setTime(long time)

将日期和时间设置为time所指定的值,time是是自从1970年1月1日午夜开始已经流逝的毫秒数

String toString()

将调用Date对象转换成字符串并返回结果

(3)Date类示例

package com.bw;

import java.util.Date;

public class DateTest {

public static void main(String[] args) {

Date d = new Date();

System.out.println(d);

//System.out.println(d.toLocaleString());

long time1 = d.getTime();//1970-1-1 00:00:00 GMT  到现在的  总毫秒数

System.out.println(time1);

long time2 = System.currentTimeMillis();

System.out.println(time2);//1970-1-1 00:00:00 GMT  到现在的  总毫秒数

Date d2 = new Date(time2);

System.out.println(d2);

}

}

Calendar与GregorianCalendar类

        Calendar是抽象类,提供了一套方法将毫秒数形式的时间转换成大量有用的组分,例如年、月、日、小时、分和秒。

        GregorianCalendar是Calendar的具体实现,它实现了您熟悉的常规的格林尼治日历。Calendar类的getInstance()方法通常会返回一个使用默认地区和时区下的当前时间初始化的GregorianCalendar对象。

SimpleDateFormat类

      SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。

SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

1.字符串转日期  2008-07-10 19:20:00 要把它转成日期,可以用

sf.format(date)

2. 日期转字符串假如把今天的日期转成字符串可用 String str = sf.format(new Date());

3. 这个字符串内容的格式类似2008-07-10 19:20:00。

JDK1.8新增日期常量类

Jdk1.8新增三大日期常量类,与String类相同都是通过final来修饰,线程安全。

LocalDate:表示日期(年月日)

LocalTime :表示时间(时分秒)

LocalDateTime:表示时间+ 日期 (年月日时分秒),是java8最常用的日期类

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

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

相关文章

重写equals为什么要重写hashCode???

当你在Java中重写了equals()方法后,通常建议你也应该重写hashCode()方法。这是基于Java集合框架的设计原则,具体来说是基于Object类中的equals()和hashCode()方法之间的约定。以下是为什么需要这样做的一些关键原因: 一致性原则:…

[Redis]缓存常见问题解决(缓存穿透、击穿、雪崩一文解决!通俗易懂、代码实战!手把手教你解决缓存问题三兄弟!)

Redis常见问题解决 要求 只用一种缓存技术,从实验点中挑一些试验进行试验原理。 1.缓存原理 目标:理解缓存的基本原理和工作机制。 实验步骤: 阅读各缓存技术机制的文档和官方资料。实现一个简单的应用程序,模拟数据的读写和…

音视频入门基础:H.264专题(4)——NALU Header:forbidden_zero_bit、nal_ref_idc、nal_unit_type简介

音视频入门基础:H.264专题系列文章: 音视频入门基础:H.264专题(1)——H.264官方文档下载 音视频入门基础:H.264专题(2)——使用FFmpeg命令生成H.264裸流文件 音视频入门基础&…

试析C#编程语言的特点及功能

行步骤,而不必创建新方法。其声明方法是在实例化委托基础上,加一对花括号以代表执行范围,再加一个分号终止语句。 2.3.3 工作原理 C#编译器在“匿名”委托时会自动把执行代码转换成惟一命名类里的惟一命名函数。再对存储代码块的委托进行设…

【C语言】16 位的值,通过几种不同的方式将其拆分为高 8 位和低 8 位

当我们想要将一个16位的 Register_Value 拆分成高8位和低8位,并存储到 Send_Data_Uart5 数组中时,有几种常见的方法可以实现。让我们逐一优化和详细分析每种方法: 方法 1: 使用位移和位掩码(常用方法) Send_Data_Uar…

Erlang 在处理高并发实时通信场景时,相比其他编程语言有哪些独特的优势和局限性?

Erlang 在处理高并发实时通信场景时具有以下独特的优势: 轻量级进程模型:Erlang 使用轻量级进程模型,每个 Erlang 进程占用非常少的内存,并且可以创建数百万个进程,使得系统可以支持大规模的并发连接。 纯函数式语言&…

最热门的智能猫砂盆好不好用?这期统统告诉你!

身为上班族的我们,常常被工作和出差填满日程。忘记给猫咪铲屎也不是一次两次了。但我们必须意识到,不及时清理猫砂盆不仅会让猫咪感到不适,还可能引发泌尿系统感染、皮肤疾病等健康问题。为了解决这个问题,越来越多的铲屎官开始将…

快速上手golang(持续更新)

由于项目需要,我不得不快速掌握go语言来帮助我进行项目的开发。时间紧迫到我来不及去了解语言的特性就直接项目上手了。我决定就先熟悉一个主流的go框架和go语言的一些日常用法,之后就得滑着这只破船摇摇晃晃上路了。 1 基础命令 就说几个用的多的&…

【Linux】使用信号进行进程间通信

🔥博客主页: 我要成为C领域大神🎥系列专栏:【C核心编程】 【计算机网络】 【Linux编程】 【操作系统】 ❤️感谢大家点赞👍收藏⭐评论✍️ 本博客致力于知识分享,与更多的人进行学习交流 ​ ​ 实现原理&a…

[机器学习]-2 经典机器学习算法

一 线性模型 线性模型是机器学习中最基本和最常用的一类模型,假设输出变量是输入变量的线性组合。线性模型在许多实际应用中表现良好,并且为更复杂的模型(如非线性模型、深度学习模型)奠定了理论基础;优点是简单易懂&…

江苏隆昌化工上线隆道平台 采购管理迎来全面升级

当前,传统产业与数字产业深度加速融合,大数据、云计算、人工智能等新技术推动产业深刻变革,能源化工行业迎来战略转型加速期。数字化转型已成为能源化工企业提升运营效率、控制运营成本、提高产品质量、打造竞争优势的强大引擎。为实现传统采…

在C#中使用事务

文章目录 一、概述1、事务ACID特性2、.NET开发者用到的5种事务机制:二、数据库事务1、不同数据库的事务规则2、数据库事务的优势和限制三、ADO.Net事务四、System.EnterpriseServices自动事务处理五、System.Transactions事务1、显式事务(Explicit Transaction)2、Transacti…

数据库管理-第213期 HaloDB-Oracle兼容性测试03(20240625)

数据库管理213期 2024-06-25 数据库管理-第213期 HaloDB-Oracle兼容性测试03(20240625)1 索引1.1 B-Tree索引1.2 Hash索引1.3 复合索引1.4 唯一索引1.5 表达式索引1.6 部分索引 2 视图3 表连接3.1 内连接3.2 左/右外连接3.3 全连接清理环境: …

Linux内核测试技术

Linux 内核是Linux操作系统的核心部分,负责管理硬件资源和提供系统调用接口。随着 Linux 内核的不断发展和更新,其复杂性和代码规模也在不断增加。因此,确保内核的稳定性和可靠性变得尤为重要。内核测试技术是实现这一目标的关键手段。本文将…

css中定义鼠标指针样式的属性cursor

在CSS中,cursor 属性用于定义鼠标指针在元素上移动时的样式。它允许你改变默认的鼠标指针样式,以提供关于用户可以进行哪些操作的视觉反馈。 以下是cursor属性的一些常见值和用法: 默认值:auto 这是大多数元素的默认设置。浏览器…

学懂C#编程:常用高级技术——学会C#多线程开发(一)

多线程基本概念 在C#中,多线程允许你同时执行多个代码路径。每个线程代表一个独立的执行流,操作系统可以在不同的处理器核心上并行执行这些线程,或者在单个核心上通过时间分片来模拟并行执行。 关键概念: Thread:代…

iptables配置NAT实现端口转发

加载防火墙的内核模块 modprobe ip_tables modprobe ip_nat_ftp modprobe ip_conntrack 1.开启路由转发功能 echo net.ipv4.ip_forward 1 >> /etc/sysctl.conf sysctl -p2、将本地的端口转发到本机端口 将本机的 7777 端口转发到 6666 端口。 iptables -t nat -A PR…

面试题:HTTP的body是二进制还是文本

实际上,HTTP的body可以是二进制数据,也可以是文本。HTTP协议本身不对body内容的格式做限制,具体格式取决于Content-Type头字段的定义。 文本数据: 当Content-Type头字段指定为文本类型时(如text/plain、text/html、ap…

C# Winform 开源UI库

WinForms,作为微软.NET框架下的一个桌面应用程序开发工具,自1999年首次亮相以来,已经走过了二十多年的发展历程。它以其简单直观的拖拽式界面设计和丰富的控件库,成为了大众喜爱的入门学习编程工具。由于它是比较基础的开发工具&a…