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类的常用方法全部记下来,包括方法名称,参数作用以及类型 一个成熟的编程语言,除了它的语法非常完善之外,那么也需要提供有大量的开发类库 ...
随机推荐
- linux 进程消耗查看
Linux下如何查看哪些进程占用的CPU内存资源最多 linux下获取占用CPU资源最多的10个进程,可以使用如下命令组合: ps aux|head -1;ps aux|grep -v PID|sor ...
- helm部署Filebeat + ELK
helm部署Filebeat + ELK 系统架构图: 1) 多个Filebeat在各个Node进行日志采集,然后上传至Logstash 2) 多个Logstash节点并行(负载均衡,不作为集群),对 ...
- 平行世界中的你还是你吗?--java中的==是否相等
故事背景 <宇宙追缉令>是黄毅瑜执导的动作科幻类电影,由哥伦比亚三星公司出品,戴尔里·林多.李连杰.杰森·斯坦森领衔主演.影片于2001年11月2日在美国上映.该片讲述了邪恶尤兰,为了成为 ...
- JsonConfig的jsonConfig.setExcludes的用法
1.问题描述 在项目中经常会有两个类存在一对多或者多对一的关联关系,这样在查询多的一方时,会深入查询关联的一方,而我们可能并不需要去深入查询那些数据,此时使用JsonConfig的jsonConfig ...
- linux mint 17编译android 2.3.1错误记录
有转载这里的也有添加的. ################# Fix 1 ########################## Error: frameworks/base/include/utils ...
- 【Python】机器学习之单变量线性回归练习(计算Cost Function)
注:练习来自于吴恩达机器学习 翻译后的题目: 你是一个餐厅的老板,你想在其他城市开分店,所以你得到了一些数据(数据在本文最下方),数据中包括不同的城市人口数和该城市带来的利润.第一列是城市的人口数,第 ...
- [LeetCode] 704. Binary Search
Description Given a sorted (in ascending order) integer array nums of n elements and a target value, ...
- DrawerLayout(抽屉效果)
DrawerLayout是V4包下提供的一种左滑右滑抽屉布局效果. 实现效果如下: 因为是官方提供的,所以使用起来也相对的比较简单. DrawerLayout 提供 1.当界面弹出的时候,主要内容区会 ...
- 修复IScroll点击无效,增加scrollTo数值容错处理
个人博客: https://chenjiahao.xyz ============== 最近半年都处于一个非常忙碌的状态,直到现在才有功夫腾出时间记录这段时间以来踩过的一个个坑. 今天先记录关于ISc ...
- Hadoop-2.7.3-本地模式安装-wordcount例子
准备虚拟机:linux-rhel-7.4-server,由于不使用虚拟机进行联网,所以选择host-only网络模式.此处,需要再VitralBox的管理菜单中的主机网络管理器新建一个虚拟网卡.安装完 ...