Java中String和StringBuilder类

简介: 浅浅了解,学习一下Java中String,StringBuffer,StringBuilder的相关知识。

String类

创建字符串

项目中,字符串不可避免使用。字符串是引用类型,但是可以不用new,可以直接创建字符串

Strings="ABC123"//String直接创建Strings1="ABC123"//String直接创建StringS=newString("ABC123";//String 对象创建char[] a= { 'A', 'B', 'C', '1', '2', '3'};
Stringa=newString(a);  
System.out.println( a );//输出同样为ABC123

拼接字符串

string1.concat(string2);
Strings1="hello";
Strings2="world";
s1.concat(s2);
或者使用"+""hello"+"world"

格式化字符串

一,格式化

1,格式化指令:描述要输出的特殊格式

2,要格式化的值

formact("%,d",2000000);
Strings=String.formact("%,d",2000000);
//逗号表示数字以逗号分开 System.out.println(s);//2,000,000//format()方法第一个参数被称为‘格式化串’,//他可以带有实际上要这么输出而不用转译的字符,而%符号会被方法其余参数替换掉的位置。//%表示第二个参数放置的位置,“.2f”表示要使用的格式,其余照常输出。format("there are %.2f apples",11.0987);
//输出 there are 11.10 apples

3.格式化语法

%,d表示以十进制整数带有逗号方式来表示。%.2f代表小数点后两位的方式来格式化此浮点数%,.2f代表整数部分以带有逗号方式来表示,小数部分以后两位来格式化。

4.“格式化说明”的格式

%[argument_index$][flags][width][.precision]conversion


1.argument_index ⽤于表明参数在参数列表中的位置。

2. flags 特定类型的特定选项,例如数字要加逗号或者正负号。

3.width 最小字符数。

4. .precision 精确度(前面有圆点符号)

5.conversion 一定要指定的类型标识别

format("%,4.2f",36.789);

String方法

substring()

//截取字符串Stringsubstring (intstart ,intend);
//String str="think in java"//传两个参数,含头不含尾,从指定位置开始到指定位置结束。//指定位置头包含,但尾不包含。Stringsub=str.substring(5,8);
System.out.println("sub:"+sub);//sub:ing//传一个参数 ,从指定位置开始截取到末尾sub=str.substring(4);
System.out.println("sub:"+sub);//sub:king in java

indexOf()

String indexOf()方法

int indexOf(String str): 返回指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。

int indexOf(String str, int fromIndex): 返回从指定位置开始查找指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。

Stringstr="thinking in java";
intindex=str.indexOf("in");
System.out.println("index:"+index);//index:2//从指定位置开始找index=str.indexOf("in",3);
System.out.println("index:"+index);//index:5//查找最后一次出现指定字符串位置index=str.lastIndexOf("in");
System.out.println("index:"+index);//index:9

int lastIndexOf(String str):返回指定子字符串在此字符串中最右边出现处的索引,如果此字符串中没有这样的字符,则返回 -1。

int lastIndexOf(String str, int fromIndex):返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索,如果此字符串中没有这样的字符,则返回 -1。

StringStr=newString("www.baidu.com");
System.out.print("从第10个位置查找字符 u最后出现的位置 :" );
System.out.println(Str.lastIndexOf( 'u', 10 ));
//从第10个位置查找字符 u最后出现的位置 :8

charAt()

charAt() 方法用于返回指定索引处的字符。

索引范围为从 0 到 length() - 1。

Stringstr="thinking in java";
charc=str.charAt(4);
System.out.println(c);//k

trim()

trim() 方法用于删除字符串的头尾空白符。

返回删除头尾空白符的字符串

publicStringtrim()
StringStr=newString("    www.baidu.com    ");
System.out.print("原始值 :" );
System.out.println( Str );
System.out.print("删除头尾空白 :" );
System.out.println( Str.trim() );
//原始值 :    www.baidu.com    //删除头尾空白 :www.baidu.com

toUpperCase(),toLowerCase()

大小写转换

Stringstr="java"Stringupper=str.toUpperCase();//JAVAStringlower=str.toLowerCase();//java

StringBuffer 和 StringBuilder 类

StringBuilder 用于提供修改字符串内容相关方法。

在使用 StringBuffer 类时,每次都会对 StringBuffer 对象本身进行操作,而不是生成新的对象。其内部维护的是一个可变的字符数组,所以修改的对象都是在当前对象内部完成的,当前频繁修改字符串内容是应当是在使用当前类完成的。

Strings="学好java";
//将String转换为StringBuilder可以使用有参的构造方法, //StringBuilder也有无参构造方法,默认表示空字符串StringBuilderbuilder=newStringBuilder(s);
//从StringBuilder转换为String使用toString方法s=builder.toString();
//追加字符串builder.append(",我一定行!");
System.out.println(builder.toString());//学好java,我一定行!//替换字符串builder.replace(7,13,"come on");
System.out.println(builder.toString());//学好java,come on//删除字符串builder.delete(0,6);
System.out.println(builder.toString());//,come on//插入字符串builder.insert(0,"jiayou");
System.out.println(builder.toString());//jiayou,come on//反转字符串builder.reverse();
System.out.println(builder.toString());//no emoc,uoyaij

StringBuffer是线程安全的,同步处理的,性能稍慢
StringBuilder 是非线程安全的,并发处理的,性能稍快

java 的字符串连接的过程是利用StringBuilder实现的。

Srtings="a";
Stirngs1=s+"b"+1;
Strings1=newStringBuilder(s).append("b").append(1).toString();

这是java中 String方法,StringBuffer 和StringBuilder类的有关知识点,若有啥错误,欢迎大家指出,谢谢大家。




































目录
相关文章
|
2月前
|
Java 开发者
在 Java 中,一个类可以实现多个接口吗?
这是 Java 面向对象编程的一个重要特性,它提供了极大的灵活性和扩展性。
160 57
|
25天前
|
存储 JavaScript Java
Java 中的 String Pool 简介
本文介绍了 Java 中 String 对象及其存储机制 String Pool 的基本概念,包括字符串引用、构造方法中的内存分配、字符串文字与对象的区别、手工引用、垃圾清理、性能优化,以及 Java 9 中的压缩字符串特性。文章详细解析了 String 对象的初始化、内存使用及优化方法,帮助开发者更好地理解和使用 Java 中的字符串。
Java 中的 String Pool 简介
|
12天前
|
JSON Java Apache
Java基础-常用API-Object类
继承是面向对象编程的重要特性,允许从已有类派生新类。Java采用单继承机制,默认所有类继承自Object类。Object类提供了多个常用方法,如`clone()`用于复制对象,`equals()`判断对象是否相等,`hashCode()`计算哈希码,`toString()`返回对象的字符串表示,`wait()`、`notify()`和`notifyAll()`用于线程同步,`finalize()`在对象被垃圾回收时调用。掌握这些方法有助于更好地理解和使用Java中的对象行为。
|
1月前
|
缓存 安全 Java
java 为什么 String 在 java 中是不可变的?
本文探讨了Java中String为何设计为不可变类型,从字符串池的高效利用、哈希码缓存、支持其他对象的安全使用、增强安全性以及线程安全等方面阐述了不可变性的优势。文中还通过具体代码示例解释了这些优点的实际应用。
java 为什么 String 在 java 中是不可变的?
|
2月前
|
JSON Java 关系型数据库
Java更新数据库报错:Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.
在Java中,使用mybatis-plus更新实体类对象到mysql,其中一个字段对应数据库中json数据类型,更新时报错:Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.
118 4
Java更新数据库报错:Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.
|
25天前
|
存储 Java
Java 11 的String是如何优化存储的?
本文介绍了Java中字符串存储优化的原理和实现。通过判断字符串是否全为拉丁字符,使用`byte`代替`char`存储,以节省空间。具体实现涉及`compress`和`toBytes`方法,前者用于尝试压缩字符串,后者则按常规方式存储。代码示例展示了如何根据配置决定使用哪种存储方式。
|
2月前
|
存储 缓存 安全
java 中操作字符串都有哪些类,它们之间有什么区别
Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
65 8
|
2月前
|
Java
在Java中如何将基本数据类型转换为String
在Java中,可使用多种方法将基本数据类型(如int、char等)转换为String:1. 使用String.valueOf()方法;2. 利用+运算符与空字符串连接;3. 对于数字类型,也可使用Integer.toString()等特定类型的方法。这些方法简单高效,适用于不同场景。
63 7
|
2月前
|
存储 编译器 C语言
【c++丨STL】string类的使用
本文介绍了C++中`string`类的基本概念及其主要接口。`string`类在C++标准库中扮演着重要角色,它提供了比C语言中字符串处理函数更丰富、安全和便捷的功能。文章详细讲解了`string`类的构造函数、赋值运算符、容量管理接口、元素访问及遍历方法、字符串修改操作、字符串运算接口、常量成员和非成员函数等内容。通过实例演示了如何使用这些接口进行字符串的创建、修改、查找和比较等操作,帮助读者更好地理解和掌握`string`类的应用。
63 2
|
2月前
|
安全
String、StringBuffer、StringBuilder的区别
String 由 char[] 数组构成,使用了 final 修饰,对 String 进行改变时每次都会新生成一个 String 对象,然后把指针指向新的引用对象。 StringBuffer可变并且线程安全;有一定缓冲区容量,字符串大小没超过容量,不会重新分配新的容量,适合多线程操作字符串; StringBuiler可变并且线程不安全。速度比StringBuffer更快,适合单线程操作字符串。 操作少量字符数据用 String;单线程操作大量数据用 StringBuilder;多线程操作大量数据用 StringBuffer