Java基础(三十四)String、StringBuffer类和数据缓冲区Buffer类
一、String类
1.创建字符串对象
创建字符串对象有两种方法:直接用“=”或者使用“new String(...)”
String aStr = "TMZ";
String bStr = new String("TMZ"); String nullStr = "";
String nullStr_1 = new String();
String nullStr_2 = new String("");
2.连接字符串
使用“+”运算符可以连接字符串。字符串可以和任意类型的数据进行字符串连接操作,若该数据为基本类型,则会自动转换为字符串;若为引用类型,则会自动调用所引对象的toString()方法获得一个字符串,然后再进行字符串的连接操作。
System.out.println("TMZ" + 1996); //TMZ1996
System.out.println("10" + 7.5F); //107.5
System.out.println("TMZ" + true); //TMZtrue
System.out.println("TMZ" + "SJY"); //TMZSJY
System.out.println("SJY" + "TMZ"); //SJYTMZ
在判断是字符串连接符还是加法运算符时,按照先左后右的顺序,根据运算符两边的类型来决定是进行加法运算还是进行字符串连接。
System.out.println("TMZ" + 1996 + 2.2); //TMZ19962.2
System.out.println(1996 + 2.2 + "TMZ"); //1998.2TMZ
3.字符串操作
(1)比较字符串
equals():区分字母大小写
equalIgnoreCase():不区分大小写
startWith(String prefix):判断字符串是否以prefix字符串开始
endsWith(String prefix):判断字符串是否以prefix字符串结束
startWith(String prefix, int offset):判断字符串是否从第offset起始位置以prefix字符串开始
compareTo(): 比较两个字符串,大于返回一个正数,小于返回一个负数,相等返回0
(2)获取字符串的长度:str.length()
(3)字符串的大小写转换:str.toLowerCase(); str.toUpperCase();
(4)查找字符串
(1)indexOf(int ch):用于获取指定字符在原字符串中第一次出现的索引。
(2)lastIndexOf (int ch):用于获取指定字符在原字符串中最后一次出现的索引。
(3)indexOf(String str):用于获取指定字符串在原字符串中第一次出现的索引。
(4)lastIndexOf(String str):用于获取指定字符在原字符串中最后一次出现的索引。
(5)indexOf(int ch, int startIndex):用于获取指定字符在原字符串中指定索引位置开始第一次出现的索引。
(6)lastIndexOf (int ch, int startIndex):用于获取指定字符在原字符串中指定索引位置开始最后一次出现的索引。
(7)indexOf(String str, int startIndex):用于获取指定字符串在原字符串中指定索引位置开始第一次出现的索引。
(8)lastIndexOf(String str, int startIndex):用于获取指定字符在原字符串中指定索引位置开始最后一次出现的索引。
(5)从现有字符串中截取子字符串
public String substring(int beginIndex)
public String substring(int beginIndex, int endIndex)
(6)去掉字符串的首位空格
public String trim()
(7)替换字符串中的字符或子串
public String replace(char oldChar, char newChar):替换所有字符
public String replaceAll(String regex, String replacement):替换所有子字符串
public String replaceFirst(String regex, String replacement):替换第一个子字符串
(8)分割字符串
public String[] split(String regex, int limit)
regex:表示分割规则
limit:表示分割规则的应用次数,如果limit>0,则得到的String数组的长度不会大于limit
limit为0时,String数组中位于最后的所有空字符串元素将被丢弃,等价于public String[] split(String regex)
4.格式化字符串
(1)两种format方法
public static String format(String format, Object... args) // 依据本地的语言环境进行格式化
public static String format(Locale locate, String format, Object... args) // 依据设定的语言环境locate进行格式化
5.对象的字符串表示
(1)如果用来构建对象的类中没有toString方法,那么就调用默认的Object类中的toString()方法返回“包名.类名@内存的引用地址”
(2)如果用来构建对象的类中实现了toString()方法,那么就使用这个对象调用这个toString()方法并返回“包名.类名@对象.toString()”
二、StringBuffer类
StringBuffer类和String类都是用来代表字符串的,但是它们的内部实现方式不同。String类创建的字符串对象是不可修改的,也就是说,String字符串不能修改、删除或替换字符串中的某个字符。而StringBuffer类创建的字符串对象是可以修改的。
1.StringBuffer的初始化
StringBuffer s = new StringBuffer(); //初始化的StringBuffer对象是一个空对象
StringBuffer s = new StringBuffer("123"); //初始化的StringBuffer对象不是一个空对象
2.StringBuffer构造方法
StringBuffer() // 分配给该对象的初始容量可以容纳16个字符。当该对象的实体存放的字符序列的长度大于16时,实体的容量自动增加,以便存放所有增加的字符。
StringBuffer(int size) //分配给该对象的初始容量可以容纳16个字符。当该对象的实体存放的字符序列的长度大于16时,实体的容量自动增加,以便存放所有增加的字符。
StringBuffer(String s) //分配给该对象的初始容量为参数字符串s的长度额外在增加16个字符。
3.常用方法
(1)追加字符串
使用append方法可以将其他Java类型数据转化为字符串后,再追加到StringBuffer对象中。
StringBuffer append(String s):将一个字符串对象追加到当前StringBuffer对象中,并返回当前StringBuffer对象的引用。
StringBuffer append(int n):将一个int型数据转化为字符串对象后再追加到当前StringBuffer对象中,并返回当前StringBuffer对象的引用。
StringBuffer append(Object o):将一个Object对象o的字符串表示追加到当前StringBuffer对象中,并返回当前StringBuffer对象的引用。
类似的方法还有:
StringBuffer append(boolean b)
StringBuffer append(char c)
StringBuffer append(long n)
StringBuffer append(float f)
StringBuffer append(double d)
(2)获取单个字符或设置指定字符
public char charAt(int n)
// charAt(int n)用来获取参数n指定位置上的单个字符。字符串序列从0开始,即当前对象实体中n的值必须是非负的,并且小于当前对象实体中字符串的序列长度。
public void setCharAt(int n,char ch)
// 用来将当前StringBuffer对象实体中的字符对象位置n处的字符用参数ch指定的字符替换。n的值必须是非负的,并且小于当前对象实体中字符串序列的长度。
(3)插入字符串
StringBuffer insert(int index,String str)
// 将参数str指定的字符串插入到参数index的位置,并返回当前对象的引用。
(4)反转字符串
public StringBuffer reverse()
// StringBuffer对象使用reverse()方法将该对象实体中的字符翻转,并返回当前对象的引用
(5)删除子字符串或字符
StringBuffer delete(int startIndex,int endIndex)
// 用于删除子字符串。参数startIndex指定需删除的第一个字符的下标,而endIndex指定了需删除的最后一个字符的下一个字符的下标。
// 因此要删除的子字符串是从startIndex位置开始到endIndex-1的位置结束。
deleteCharAt(int index)方法删除当前StringBuffer对象实体的字符串中在index位置的字符。
(6)替换子字符串或字符
StringBuffer replace(int startIndex,int endIndex,String str)
// 将当前StringBuffer对象实体中的字符串的一个子字符串用参数str指定的字符串替换。
// 被替换的子字符串由下标startIndex和endIndex指定,即从starIndex到endIndex-1的字符串被替换。该方法返回当前StringBuffer对象的引用。
三、数据缓冲区
数据缓冲区是由具有相同类型的数值构成的数组,Buffer类是一个抽象类,它的子类包括:ByteBuffer、CharBuffer、DoubleBuffer、IntBuffer、LongBuffer和ShortBuffer。
注意:StringBuffer类与这些缓冲区没有关系。
最常使用的是ByteBuffer和CharBuffer类,每个缓冲区的的特征是:
- 一个容量,它永远不能改变。
- 一个读写位置,下一个值将在此进行读写。
- 一个界限,超过它进行读写是没有意义的。
- 一个可选的标记,用于重复一个读入或读写操作。
这些值满足下面的条件:0≤标记≤读写位置≤界限≤容量。
常用方法:
Buffer clear():将位置复位到0,并将界限设置到容量,使这个缓冲区为写出做好准备
Buffer flip():将界限设置到位置,将位置复位到0,使这个缓冲区为读入做好准备
Buffer rewind():将读写位置复位到0,并保持界限不变,使这个缓冲区为重新读入相同的值做好准备
Buffer mark():将这个缓冲区的标记设置到读写位置
Buffer reset():将这个缓冲区的位置设置到标记,从而允许被标记的部分可以再次被读入或写出
int remaining():返回剩余可读写或可写出值的数量,即界限与位置之间的差异
int capacity():返回这个缓冲区的容量
int position():返回这个缓冲区的位置
Java基础(三十四)String、StringBuffer类和数据缓冲区Buffer类的更多相关文章
- Java进阶(三十四)Integer与int的种种比较你知道多少?
Java进阶(三十四)Integer与int的种种比较你知道多少? 前言 如果面试官问Integer与int的区别:估计大多数人只会说到两点:Ingeter是int的包装类,注意是一个类:int的初值 ...
- 孤荷凌寒自学python第三十四天python的文件操作对file类的对象学习
孤荷凌寒自学python第三十四天python的文件操作对file类的对象学习 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.close() 当一个file对象执行此方法时,将关闭当前 ...
- “全栈2019”Java第三十四章:可变参数列表
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- 正则表达式、Calendar类、SimpleDateFormat类、Date类、BigDecimal类、BigInteger类、System类、Random类、Math类(Java基础知识十四)
1.正则表达式的概述和简单使用 * A:正则表达式(一个字符串,是规则) * 是指一个用来描述或者匹配一系列符合某个语法规则的字符串的单个字符串.其实就是一种规则.有自己特殊的应用. * B: ...
- Java基础(十四):泛型
一.Java 泛型: Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型. 泛型的本质是参数化类型,也就 ...
- Java基础(十四)代理(Proxy)
1.为什么要使用代理 代理可以在运行时创建一个实现了一组给定接口的新类.这种功能只有在编译时无法确定需要实现哪个接口时才有必要使用. 假设有一个表示接口的Class对象(有可能只包含一个接口),它的确 ...
- java基础第十四篇之Map
一,Map集合的特点: * * 1.Map集合和Collection集合,没有关系 * * 2.Map集合的元素是成对存在(夫妻关系) * Collection集合的元素是独立存在 ...
- 夯实Java基础(十四)——Java8新的日期处理类
1.前言 Java8之前处理日期一直是Java程序员比较头疼的问题,从Java 8之后,Java里面添加了许多的新特性,其中一个最常见也是最实用的便是日期处理的类——LocalDate.LocalDa ...
- 菜鸡的Java笔记 第十四 String 类常用方法
/*String 类常用方法 将所有String类的常用方法全部记下来,包括方法名称,参数作用以及类型 一个成熟的编程语言,除了它的语法非常完善之外,那么也需要提供有大量的开发类库 ...
随机推荐
- Centos安装PhantomJS
1.下载PhantomJS [root@liuge ~]# wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-l ...
- APP设计与开发(ui篇)
这篇文章是我个人在开发与设计APP的所用的一些设计思路,仅用于和大家分享知识并不是什么设计标准之类的.主要说明App的开发中是如何来开发与组织UI部分. UI模块结构 在项目中建立ui包用于存放ui类 ...
- 使用apache的poi来实现数据导出到excel的功能——方式二
此次,介绍利用poi与layui table结合导出excel.这次不需要从数据库中查询出来的数据进行每一行的拼接那么麻烦,我们这次将标题定义一个id值,对应从数据库中查找出来的字段名即可. 1.po ...
- java架构之路-(SpringMVC篇)SpringMVC主要流程源码解析(上)源码执行流程
做过web项目的小伙伴,对于SpringMVC,Struts2都是在熟悉不过了,再就是我们比较古老的servlet,我们先来复习一下我们的servlet生命周期. servlet生命周期 1)初始化阶 ...
- 死磕 java线程系列之自己动手写一个线程池(续)
(手机横屏看源码更方便) 问题 (1)自己动手写的线程池如何支持带返回值的任务呢? (2)如果任务执行的过程中抛出异常了该怎么处理呢? 简介 上一章我们自己动手写了一个线程池,但是它是不支持带返回值的 ...
- Network in Network(2013),1x1卷积与Global Average Pooling
目录 写在前面 mlpconv layer实现 Global Average Pooling 网络结构 参考 博客:blog.shinelee.me | 博客园 | CSDN 写在前面 <Net ...
- SpringBoot自动注入分析
我们经常会被问到这么一个问题:SpringBoot相对于spring有哪些优势呢?其中有一条答案就是SpringBoot自动注入.那么自动注入的原理是什么呢?我们进行如下分析. 1:首先我们分析项目的 ...
- BBEdit 13.0 for Mac 打开大文件不吃力
BBEdit 是一款拥有 16 年历史的 HTML 和文本编辑器,拥有高性能且流畅的文本处理能力,适用于 Web 和软件开发者,具备功能丰富且强大的智能搜索.代码折叠.FTP 和 SFTP 管理等功能 ...
- Python爬取猫眼电影100榜并保存到excel表格
首先我们前期要导入的第三方类库有; 通过猫眼电影100榜的源码可以看到很有规律 如: 亦或者是: 根据规律我们可以得到非贪婪的正则表达式 """<div class ...
- STM32SPI连续读写多个字节会产生时间间隔
最近在做一个音频芯片的项目用到SPI接口配置寄存器,发现只要连续两次向从机发送(接收)帧,当STM32处于主机模式时,这两帧数据中间会产生一个时钟的间隙. 起初我想能不能利用状态标志来去除间隙,后来怎 ...