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类的常用方法全部记下来,包括方法名称,参数作用以及类型 一个成熟的编程语言,除了它的语法非常完善之外,那么也需要提供有大量的开发类库 ...
随机推荐
- 《图解HTTP》读后记
看了一遍又一遍…………不如记一下 用做笔记的方式来看,发现了好多之前没发现的知识点.....感觉前几次看了跟没看一样... 1.1HTTP通常被译为超文本传输协议,但这种译法并不严谨.严谨的译名应该为 ...
- Scala Class etc.
Classes 一个源文件可包含多个类,每个类默认都是 public 类字段必须初始化,编译后默认是 private,自动生成 public 的 getter/setter :Person 示例 pr ...
- 二 mysql库表的详细操作
目录 1.库操作 1.创建数据库 2.数据库相关操作 2.表操作 1.存储引擎 2.表介绍 3.创建表 4.查看表结构 5.MySQL的基础数据类型 6.表的完整性约束 7.修改表 alter tab ...
- $(document).height 与$(window).height的区别
$(document).scrollTop() 获取垂直滚动的距离 (即当前滚动的地方的窗口顶端到整个页面顶端的距离)$(document).scrollLeft() 这是获取水平滚动条的距离 要获取 ...
- python 虚拟环境配置
刚学习 python 的同学经常会遇到一个问题: 已经安装了特定的包或者第三库,但是 pycharm 总是提示没有找到.
- Weex项目快速打包
安装最新稳定版的Node.js 运行 cnpm install -g weex-toolkit 安装Weex 官方提供的 weex-toolkit 脚手架工具到全局环境中 运行 weex create ...
- Eclipse的Debug(一)
本文链接:https://blog.csdn.net/u011781521/article/details/55000066 http://blog.csdn.net/u010075335/ar ...
- XCTF-Misc
最近无聊在做一下杂项,随便总结一下关于杂项的知识. 一. xcaliflag 这个直接拖进stegsolve里面,大约是在Blue的第3位左右就很清楚了 二.
- 在chrome浏览器安装各种前端,后台插件
如果想要在chrome安装插件,首先得先有应用chrome的商城,但是默认情况下是没有应用商店: 默认情况下下面这个界面是空白的,没有任何东西,第一步就先安装[谷歌访问助手] 安装步骤 第一步: 下载 ...
- 跑的比谁都快 51Nod - 1789
香港记者跑的比谁都快是众所周知的常识. 现在,香港记者站在一颗有 nn 个点的树的根结点上(即1号点),编号为 ii 的点拥有权值 a[i]a[i] ,数据保证每个点的编号都小于它任意孩子结 ...