Java基础(三十四)String、StringBuffer类和数据缓冲区Buffer类

摘要:
LastIndexOf:用于获取原始字符串中指定索引位置处指定字符最后一次出现的索引。不能修改string类创建的字符串对象,即string字符串不能修改、删除或替换字符串中的字符。可以修改StringBuffer类创建的字符串对象。StringBuffer//分配给对象的初始容量可以容纳16个字符。3.常用的方法是附加字符串。使用append方法,可以将其他Java类型的数据转换为字符串,然后将它们附加到StringBuffer对象。StringBufferappend:将字符串对象附加到当前StringBuffer对象,并返回当前的S

  一、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类》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇idea 2018 配置lombok插件及使用lombok设置实体类的getter和setterlinux环境下java调用C/C++动态库(JNI技术:参数为指针与结构体)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

linux下的二进制文件的编辑和查看

linux下的二进制文件的编辑和查看 一、在Linux下查看二进制文件的软件: xxd (默认2进制) hexdump  (默认16进制,可转其他进制)  od (默认8进制,可转其他进制) 二、编辑: 1、biew 2、hexedit 3、vim Vim 来编辑二进制文件。Vim 本非为此而设计的,因而有若干局限。但你能读取一个文件,改动一个字符,...

读取FTP上的excel文件,并写入数据库

今天遇到一些问题,需要从ftp上读取一些excel文件,并需要将excel中的数据写入到数据库,这样就可以通过管理页面查看这些数据。 我将相关工作分为三步,1、从ftp上读取相关文件,并将excel文件下载到本地。2、读取本地下载完成的excel,读取相关信息 3、将读取的信息存储到数据库中。 1、获取java操作ftp操作,首先要从maven仓库http...

CString之Find()、FindOneOf()、ReverseFind()

一、CString之Find()、FindOneOf()、ReverseFind() 此三个函数返回值均为整数int。 1、Find() 该函数从左侧0索引开始,查找第一个出现的字符位置,返回position。示例如下: 1 CString s("abcd"); 2 ASSERT( s.Find('b') == 1 ); 返回值:...

C#WebBrowser控件使用教程与技巧收集

C#WebBrowser控件使用教程与技巧收集--苏飞收集 先来看看常用的方法 Navigate(string urlString):浏览urlString表示的网址 Navigate(System.Uri url):浏览url表示的网址 Navigate(string urlString, string targetFrameName, byt...

实用向—总结一些唯一ID生成方式

在日常的项目开发中,我们经常会遇到需要生成唯一ID的业务场景,不同的业务对唯一ID的生成方式与要求都会不尽相同,一是生成方式多种多样,如UUID、雪花算法、数据库递增等;其次业务要求上也各有不同,有的只要保证唯一性即可,有的需要加上时间戳,有的要保证按顺序递增等。以下是我结合实际业务中的使用总结了几种唯一ID的生成方式,  要求就是在一般的应用场景下一方面...

Java多线程学习之任务的创建以及在线程中执行任务

传统的创建任务、驱动任务的方式 1.继承Thread类   通过继承Thead类,并重写run方法,在run方法里面编码具体的任务,调用对象的start方法驱动任务。    public class TestThread extends Thread{ private int count = 5;   //创建介绍String形参的构造器,一般...