String和StringBuffer的一些用法

合集下载

【java】String类和StringBuffer类常用操作

【java】String类和StringBuffer类常用操作

【java】String类和StringBuffer类常⽤操作String类是字符串常量,是不可更改的常量。

⽽StringBuffer是字符串变量,它的对象是可以扩充和修改的。

StringBuffer在进⾏字符串处理时,不⽣成新的对象,在内存使⽤上要优于String类。

所以在实际使⽤时,如果经常需要对⼀个字符串进⾏修改,例如插⼊、删除等操作,使⽤StringBuffer要更加适合⼀些。

String类主要⽅法的使⽤⼀、创建并初始化字符串:String s = "hello!"; //使⽤字符串常量直接初始化String(); //使⽤构造⽅法创建并初始化,初始化⼀个对象,表⽰空字符序列String(value); //利⽤已存在的字符串常量创建⼀个新的对象String (char[] value); //利⽤⼀个字符数组创建⼀个字符串String(char[] value,int offset,int count);//截取字符数组offset到count的字符创建⼀个⾮空串String(StringBuffer buffer); //利⽤StringBuffer对象初始化String对象⼆、String类主要⽅法的使⽤:1、获取长度*.length(); //这与数组中的获取长度不同,*.length;2、⽐较字符串(1)equals() //判断内容是否相同(2)compareTo() //判断字符串的⼤⼩关系(3)compareToIgnoreCase(String int) //在⽐较时忽略字母⼤⼩写(4)== //判断内容与地址是否相同(5)equalsIgnoreCase() //忽略⼤⼩写的情况下判断内容是否相同//如果想对字符串中的部分内容是否相同进⾏⽐较,可以⽤(6)reagionMatches() //有两种 public boolean regionMatches(int toffset, String other,int ooffset,int len);表⽰如果String对象的⼀个⼦字符串与参数other的⼀个⼦字符串是相同的字符序列,则为true.要⽐较的String 对象的字符串从索引toffset开始,oth public boolean reagionMatches(boolean ignoreCase,int toffset,String other,int ooffset,int len);//⽤布尔类型的参数指明两个字符串的⽐较是否对⼤⼩写敏感。

JAVAAPI(一)String类和StringBuffer类

JAVAAPI(一)String类和StringBuffer类

⽅法声明 功能描述int indexOf(int ch)返回指定字符在此字符串中第⼀次出现处的索引int lastIndexOf(int ch)返回指定字符在此字符串中最后⼀次出现处的索引int indexOf(String str)返回指定⼦字符串在此字符串中第⼀次出现处的索引int lastIndexOf(String str)返回指定⼦字符串在此字符串中最后⼀次出现处的索引char charAt(int index)返回字符串中index 位置上的字符,其中,index 的取值范围是0-(字符串长度-1)boolean endsWith(String suffix)判断此字符串是否以指定的字符串结尾int length()返回此字符串的长度boolean equals(Object anObject)将此字符串与指定的字符串⽐较boolean isEmpty()当且仅当字符串长度为0时返回true boolean startsWith(String prefix)判断此字符串是否以指定的字符串开始boolean contains(CharSequence cs)判断此字符串中是否包含指定的字符序列String toLowerCase()使⽤默认语⾔环境的规则将String 中的所有字符都转换为⼩写String toUpperCase()使⽤默认语⾔环境的规则将String 中的所有字符都转换为⼤写static String valueOf(int i)返回int 参数的字符串表⽰形式char[] toCharArray()将此字符串转换为⼀个字符数组String replace(CharSequence oldstr,CharSequence newstr)返回⼀个新的字符串,它是通过⽤newstr 替换此字符串中出现的所有oldstr 得到的String[] split(String regex)根据参数regex 将原来的字符串分割为若⼲⼦字符串JAVAAPI (⼀)String 类和StringBuffer 类1.String 类和StringBuffer 类在程序中经常会⽤到字符串,所谓的字符串就是指⼀连串的字符,它是由多个单个字符连接⽽成的。

javastring追加字符串方法 -回复

javastring追加字符串方法 -回复

javastring追加字符串方法-回复Java中的字符串是不可变的,也就是说一旦创建好的字符串对象不能被修改。

然而,在实际的开发中,我们经常需要对字符串进行一些操作,例如追加字符串。

本文将详细介绍Java中追加字符串的方法,并且以中括号内的内容作为主题进行讲解。

在Java中,我们可以使用多种方法来追加字符串,我们将一步一步地进行介绍。

第一步:使用“+”操作符Java中的字符串类String重载了“+”操作符,可以用于字符串的连接。

我们可以通过在两个字符串之间使用“+”操作符来实现字符串的追加。

例如:javaString str1 = "Hello";String str2 = "World";String result = str1 + str2;在上述代码中,我们首先定义了两个字符串str1和str2,分别赋值为"Hello"和"World"。

然后使用“+”操作符将两个字符串连接起来,并将结果保存在result变量中。

第二步:使用StringBuffer类在Java中,还有一种更高效的字符串追加方法,即使用StringBuffer 类。

StringBuffer类是Java中一个可变的字符串类,可以在原有的字符串上进行修改。

我们可以通过调用StringBuffer类的append()方法来实现字符串的追加。

例如:javaStringBuffer sb = new StringBuffer("Hello");sb.append("World");String result = sb.toString();在上述代码中,我们首先创建了一个StringBuffer对象sb,并初始化为"Hello"。

然后调用append()方法将字符串"World"追加到sb对象中。

string...用法

string...用法

string...用法在编程中,"string"(字符串)通常指的是一组字符序列。

在不同的编程语言中,"string"的用法会略有差异。

以下是一些常见的用法示例:1、声明字符串变量:在大多数编程语言中,可以使用关键字或特定的数据类型声明一个字符串变量,例如:在Python中:my_string = "Hello, World!"在Java中:String myString = "Hello, World!";在C++中:std::string myString = "Hello, World!";2、字符串连接:可以使用加号 (+) 或其他特定的字符串连接运算符将两个字符串连接起来,例如:在Python中:full_string = "Hello" + " " + "World!" # 结果为 "Hello World!"在Java中:String fullString = "Hello" + " " + "World!";在C++中:std::string fullString = "Hello" + " " + "World!";3、字符串长度:可以使用特定的函数或属性获取字符串的长度,例如:在Python中:length = len(my_string) # 结果为 13在Java中:int length = myString.length();在C++中:int length = myString.length();4、字符串索引和切片:可以使用索引或切片操作访问字符串中的单个字符或子字符串,例如:在Python中:character = my_string[0] # 结果为 "H"在Java中:char character = myString.charAt(0);在C++中:char character = myString[0];5、字符串查找和替换:可以使用特定的函数或方法在字符串中查找指定的子字符串,并且可以替换或提取出来,例如:在Python中:index = my_string.find("World") # 结果为 7在Java中:int index = myString.indexOf("World");在C++中:size_t index = myString.find("World");。

java string... 的用法

java string... 的用法

java string... 的用法在Java编程语言中,String类是一个非常重要的类,用于处理字符串数据。

String类提供了许多方法和功能,可以帮助开发人员更方便地操作和处理字符串数据。

本篇文章将介绍String类的一些常用方法和用法。

一、字符串连接String类提供了多种方法来连接字符串,其中最常见的方法是+运算符和StringBuilder或StringBuffer类的append()方法。

使用+运算符连接字符串非常简单,但是需要注意的是,如果需要连接的字符串数量较多,性能会受到影响,因为每次使用+运算符都会创建一个新的字符串对象。

可以使用StringBuilder或StringBuffer 类的append()方法来连接字符串,性能更高。

二、字符串比较String类提供了equals()和equalsIgnoreCase()方法来比较两个字符串是否相等。

equals()方法比较的是字符串的内容,而equalsIgnoreCase()方法比较的是字符串的内容和大小写。

除此之外,String类还提供了compareTo()和compareToIgnoreCase()方法,可以按照字典顺序比较两个字符串。

三、字符串查找String类提供了indexOf()和lastIndexOf()方法,可以查找一个字符串中某个子字符串第一次出现的位置。

indexOf()方法返回的是子字符串第一次出现的位置,而lastIndexOf()方法返回的是最后一个出现的位置。

除此之外,String类还提供了contains()方法,可以判断一个字符串是否包含另一个字符串。

四、字符串替换String类提供了replace()和replaceFirst()方法,可以用来替换字符串中的某个子字符串。

replace()方法可以替换所有出现的子字符串,而replaceFirst()方法只替换第一个出现的子字符串。

除此之外,String类还提供了substring()方法,可以用来截取字符串的一部分。

stringbuffer用法

stringbuffer用法

stringbuffer用法StringBufferJava中的一个重要的工具类,它的功能是用来处理字符串的。

它是在 Java 1.0本中就开始被使用,目前最新的版本是 Java 8,目前仍在有效使用中。

StringBuffer以被视作是一个字符串容器,它可以处理大量字符串进行复杂的操作,更加方便快捷。

与 String不同,StringBuffer 不仅可以用来处理字符串,还可以处理基本类型的数据。

StringBuffer几种常用的用法,下面将详细介绍。

首先,StringBuffer构造函数:StringBuffer两种构造函数,一种是不带参数的构造函数,另一种是带参数的构造函数。

如果不带参数,则会创建一个容量为 16节的字符串缓冲区;如果带参数,则可以指定字符串缓冲区的容量,如:StringBuffer sb = new StringBuffer(1024);其次,StringBuffer append法:append法可以向字符串缓冲区中添加任意类型的参数,它将把参数转换为字符串,然后拼接到字符串缓冲区的末尾,如:StringBuffer sb = newStringBuffer();sb.append(Hello第三,StringBuffer insert法:insert法与 append法类似,都可以向字符串缓冲区添加参数,但是 insert法可以指定参数插入到字符串缓冲区的任意位置,如:StringBuffer sb = new StringBuffer(hello worldsb.insert(5,, );第四,StringBuffer delete法:delete法可以删除字符串缓冲区中的指定部分字符,可以指定删除开始位置和结束位置,如:StringBuffer sb = new StringBuffer(hello, worldsb.delete(5, 11);最后,StringBuffer reverse法:reverse法可以将字符串缓冲区中的字符串反转,如:StringBuffer sb = newStringBuffer(hello world!);sb.reverse();以上就是 StringBuffer常用用法,可以看出 StringBuffer一个功能强大的工具类,在处理字符串时能够帮助我们完成大量复杂的操作,极大地提高了我们处理字符串的效率。

传智播客-----笔记整理(java基础-----String,StringBuffer,StringBuilde)

传智播客-----笔记整理(java基础-----String,StringBuffer,StringBuilde)

这两天一直比较犯迷糊,每天都不知道在忙啥,所以有些断更了,真的是,咳咳,明天就要接手新班了,对我来说是喜忧参半吧,喜的是可以锻炼一下自己的能力,忧的是怕自己做不好,不过还是尽力吧。

大纲:String:1.1String方法1.2String特点1.3 StringBuffer1.4 StringBuilder1.5 Jdk升级的目的1.6 基本数据类型对象包装类1.7基本类型======>字符串1.8 字符串=====>基本类型1.9 整数具备不同的进制体现。

2.0自动拆装箱面试题挨个走一遍吧,Let's go.String:String对象的初始化由于String对象特别常用,所以在对String对象进行初始化时,Java提供了一种简化的特殊语法,格式如下:String s = “abc”;s = “Java语言”;其实按照面向对象的标准语法,其格式应该为:String s = new String(“abc”);s = new String(“Java语言”);只是按照面向对象的标准语法,在内存使用上存在比较大的浪费。

例如String s = new String(“abc”);实际上创建了两个String对象,一个是”abc”对象,存储在常量空间中,一个是使用new关键字为对象s申请的空间。

其它的构造方法的参数,可以参看String类的API文档。

1.1String方法获取获取字符串中字符的个数(长度)int length();根据位置获取字符char charAt(int index);根据字符获取在字符串中的第一次出现的位置int indexOf(int ch);【因为char类型可以转换成int(对应的是0---2^16),依据ASCII,返回-1时,表示这个字符不存在,此方法也可以判断字符是否存在。

】从指定位置进行ch的查找第一次出现位置int indexOf(int ch,int fromIndex);根据字符串获取在字符串中的第一次出现的位置int indexOf(String str);从指定位置进行ch的查找第一次出现位置int indexOf(String str,int fromIndex)根据字符获取在字符串中的最后一次出现的位置int lastIndexOf(int ch);从指定位置进行ch的查找最后一次出现位置int lastIndexOf(int ch,int fromIndex);根据字符串获取在字符串中的最后一次出现的位置int latindexOf(String str);从指定位置进行ch的查找最后一次出现位置int lastindexOf(String str,int fromIndex);获取字符串中一部分字符串,也叫子串String subString(int beginIndex,int endIndex);【包含begin,但不包含end】String substring(int beginIndex);从beginIndex到最后转换将字符串变成字符串数组(字符串的切割)String [] split(String regex):【里面的条件是一个正则表达式】将字符串变成字符数组char [] toCharArray();将字符串变成字节数组byte [] getBytes();将字符串中的字母转成大小写String toUpperCase();【大写】String toLowerCase();【小写】将字符串中的内容进行替换String replace(char oldch,char newch);String replace(String s1,String s2);将字符串两端的空格去除String trim();将字符串进行连接String concat(String str);判断两个字符串内容是否相同boolean equals(Object obj);【复写Object的方法,所以传递的是Object对象】boolean equalsIgnoreCase(String str);忽略大写比较字符串内容。

String、StringBuffer和StringBuilder区别

String、StringBuffer和StringBuilder区别

String、StringBuffer和StringBuilder区别String、StringBuffer和StringBuilder区别1、长度是否可变String 是被 final 修饰的,他的长度是不可变的,就算调⽤ String 的concat ⽅法,那也是把字符串拼接起来并重新创建⼀个对象,把拼接后的 String 的值赋给新创建的对象StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产⽣新的未使⽤对象,StringBuffer 与 StringBuilder 中的⽅法和功能完全是等价的。

调⽤StringBuffer 的 append ⽅法,来改变 StringBuffer 的长度,并且,相⽐较于 StringBuffer,String ⼀旦发⽣长度变化,是⾮常耗费内存的!2、执⾏效率三者在执⾏速度⽅⾯的⽐较:StringBuilder > StringBuffer > String3、应⽤场景如果要操作少量的数据⽤ = String单线程操作字符串缓冲区下操作⼤量数据 = StringBuilder多线程操作字符串缓冲区下操作⼤量数据 = StringBufferStringBuffer和StringBuilder区别1、是否线程安全StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最⼤不同在于 StringBuilder 的⽅法不是线程安全的(不能同步访问),StringBuffer是线程安全的。

只是StringBuffer 中的⽅法⼤都采⽤了 synchronized 关键字进⾏修饰,因此是线程安全的,⽽StringBuilder 没有这个修饰,可以被认为是线程不安全的。

2、应⽤场景由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使⽤ StringBuilder 类。

StringBuffer

StringBuffer

net下什么和什么的分布式调用?Js的隐藏控件?style="visibility: none;"document.getElementById("work").style.visibility="hidden";//隐藏document.getElementById("ask").style.visibility="visible";//显示visibility:可以控制div的显示和隐藏,但是隐藏后页面显示空白。

display:可以使div隐藏后释放占用的页面空间。

String和stringbuffer的区别?编辑本段StringBuffer 类String和StringBuffer他们都可以存储和操作字符串,即包含多个字符的字符串数据。

String类是字符串常量,是不可更改的常量。

而StringBuffer是字符串变量,它的对象是可以扩充和修改的。

StringBuffer类的构造函数public StringBuffer()创建一个空的StringBuffer类的对象。

public StringBuffer( int length )创建一个长度为参数length 的StringBuffer类的对象。

注意:如果参数length小于0,将触发NegativeArraySizeException 异常。

public StringBuffer( String str )用一个已存在的字符串常量来创建StringBuffer类的对象。

编辑本段StringBuffer类的方法有:public String toString()转换为String类对象并返回。

由于大多数类中关于显示的方法的参数多为String类的对象,所以经常要将StringBuffer类的对象转换为String 类的对象,再将它的值显示出来。

C#中StringStringBuilderStringBuffer类的用法

C#中StringStringBuilderStringBuffer类的用法

C#中StringStringBuilderStringBuffer类的⽤法String和StringBuilder和StringBuffer,这三个都是值得深究⼀翻的,可能很多⼈会说,实在不⾏的话,都全部⽤StringBuilder,啥事没有,我不能说你的想法事不正确的,但是我可以给出更好的建议。

下⾯简单介绍⼀下这三个类。

String类在我们平时的使⽤当中很容易不注意到的是,⾃⼰写的代码很容易发⽣了装箱的操作(把值类型转换为引⽤类型)。

就⽐如很常见的,⼀个字符串拼接string str=9+"test"; 通过查看IL代码可以知道这⾥发⽣了装箱的操作。

所以建议使⽤(在把值类型转换为字符串的时候,记得⽤ToString⽅法)。

所以平时写代码的时候,要注意下,装箱和拆箱的操作(之后推出的泛型集合不就是为了解决装箱和拆箱的操作)。

装箱操作的过程:把值类型放到托管堆⾥⾯分配内存,除了值类型本⾝所分配的内存外,内存总量还要加上类型对象指针和同步索引块所占⽤的内存,之后再将值类型的值重新分配到堆内存当中,最后再返回引⽤类型的对象的地址。

我们知道很多类型(值类型)都⾃带了⼀个ToString⽅法,为⽑⽤这个就不会发⽣装箱操作呢,很简单的⼀个道理,不是有⼈和你说String是特殊的值类型(虽然他是引⽤类型),C#语⾔的设计者,为了做到这⼀点,他想出了这个⽅法把String对象,⼀旦赋值就不可改变(叫做字符串的恒定性),赋值完了之后,再对String进⾏拼接,赋值等,都会再内存⾥⾯重新分配⼀个新的内存空间。

StringBuilder基于上⾯的问题,string类在重新赋值会重新去分配内存空间,所以为了解决这个问题,微软推出了⼀个StringBuilder的类。

可以看看StringBuilder类是如何做到不重新分配内存的呢。

通过阅读StringBuiler类的实现,我们可以发现internal const int DefaultCapacity = 0x10; StringBuilder类,默认的⼤⼩是16,意思就是说我们如果不指定StringBuilder长度,超过16个长度,就会重新去分配⼀次内存。

常用的类名

常用的类名

常用的类名在编程中,类是面向对象编程的基本单位,是一种封装数据和方法的方式,可以实现代码的重用和模块化。

在Java语言中,类是一个关键的概念,Java的标准类库中已经为我们提供了大量常用的类,这些类可以帮助我们快速实现各种功能。

本文将介绍一些常用的类名,以及它们的基本用法。

1. Object类Object类是Java语言中所有类的根类,它定义了一些基本的方法,比如equals()和hashCode()方法,这些方法可以被所有的Java类继承和使用。

在编写自己的类时,我们可以选择继承Object 类,从而获得它提供的一些基本功能。

2. String类String类是Java语言中最常用的类之一,它用于表示字符串。

String类提供了一系列方法,可以方便地操作字符串,比如substring()、indexOf()和toUpperCase()等方法。

在Java中,字符串是不可变的,也就是说,一旦创建了一个字符串对象,就不能再修改它的值。

因此,在进行字符串操作时,需要创建新的字符串对象来保存结果。

3. StringBuffer和StringBuilder类StringBuffer和StringBuilder类也是用于操作字符串的类,它们提供了一些方法,可以方便地添加、删除和修改字符串中的字符。

与String类不同的是,StringBuffer和StringBuilder类是可变的,也就是说,可以在原有的字符串上进行修改,而不需要创建新的字符串对象。

StringBuilder类是Java 5中新增的类,与StringBuffer类类似,但是它的性能更好。

4. Math类Math类是Java语言中用于数学运算的类,它提供了一些常用的数学方法,比如sin()、cos()和sqrt()等方法。

这些方法都是静态方法,可以直接通过类名调用。

5. Random类Random类是Java语言中用于生成随机数的类,它提供了一些方法,可以生成不同类型的随机数,比如nextInt()、nextDouble()和nextBoolean()等方法。

java字符串拼接方法

java字符串拼接方法

java字符串拼接方法在Java中,我们可以使用不同的方法来拼接字符串。

在本文中,我们将介绍一些常用的字符串拼接方法,以及它们的优缺点和适用场景。

1. 使用"+"操作符拼接字符串在Java中,我们可以使用"+"操作符来拼接两个或多个字符串。

例如:```String str1 = "Hello";String str2 = " World";String message = str1 + str2;System.out.println(message); // Output: "Hello World"```在上面的代码中,我们使用"+"操作符将两个字符串拼接在一起,并将它们赋值给变量"message"。

然后,我们使用println()方法打印"message"的值,输出结果为"Hello World"。

"+"操作符的优点是它非常简单易用,可以满足绝大部分的字符串拼接需求。

然而,它也存在一些缺点。

首先,当需要拼接多个字符串时,代码可读性会变得很差,例如:```String message = "I" + " am" + " a" + " long" + " message" + " that" + " needs" + " to" + " be" + " concatenated" + " using" + " the" + " + operator";```另外,由于Java中的字符串是不可变的,每次使用"+"操作符拼接字符串时,都会创建一个新的字符串对象,这会导致内存浪费和性能问题。

Java基础篇--字符串处理(StringBuffer)

Java基础篇--字符串处理(StringBuffer)

Java基础篇--字符串处理(StringBuffer)字符串处理在Java中最常将字符串作为String类型对象来处理。

同时String中也提供了很多操作字符串的函数(可⾃⾏查阅资料),⽽本篇将介绍StringBuffer如何操作字符串。

StringBuffer是使⽤缓冲区的,本⾝也是操作字符串的,但与String类不同,String类中的内容⼀旦声明之后不可改变,改变的只是其内存地址的指向,⽽StringBuffer中的内容是可以改变的,对于StringBuffer⽽⾔,本⾝是⼀个具体的操作类,所以不能像String那样采⽤直接赋值的⽅式进⾏对象实例化,必须通过构造⽅法完成。

StringBuffer连接字符操作当⼀个字符串的内容需要被经常改变时就要使⽤StringBuffer在StringBuffer中使⽤append()⽅法,完成字符串的连接操作实例操作⼀:字符串连接操作(append)代码:package字符串处理;public class StringBufferDemo01{public static void main(String args[]){StringBuffer buf = new StringBuffer() ; // 声明StringBuffer对象buf.append("Hello ") ; // 向StringBuffer中添加内容buf.append("World").append("!!!") ; // 可以连续调⽤append()⽅法buf.append("\n") ; // 添加⼀个转义字符buf.append("数字 = ").append(1).append("\n") ; // 添加数字buf.append("字符 = ").append('C').append("\n"); // 添加字符buf.append("布尔 = ").append(true) ; // 添加布尔值System.out.println(buf) ; // 直接输出对象,调⽤toString()}};打印结果:Hello World!!!数字 = 1字符 = C布尔 = true实例操作⼆:字符串添加内容(insert)public class StringBufferDemo03{public static void main(String args[]){StringBuffer buf = new StringBuffer() ; // 声明StringBuffer对象buf.append("World!!") ; // 添加内容buf.insert(0,"Hello ") ; // 在第⼀个内容之前添加内容System.out.println(buf) ;buf.insert(buf.length(),"偶my耶~") ; // 在最后添加内容System.out.println(buf) ;}};打印内容Hello World!!Hello World!!偶my耶~实例操作三:字符串反转(reverse)package字符串处理;public class StringBufferDemo04{public static void main(String args[]){StringBuffer buf = new StringBuffer() ; // 声明StringBuffer对象buf.append("World!!") ; // 添加内容buf.insert(0,"Hello ") ; // 在第⼀个内容之前添加内容String str = buf.reverse().toString() ; // 将内容反转后变为String类型System.out.println(str) ; // 将内容输出}};打印内容:!!dlroW olleH实例操作四:替换字符串指定内容(replace)public class StringBufferDemo05{public static void main(String args[]){StringBuffer buf = new StringBuffer() ; // 声明StringBuffer对象buf.append("Hello ").append("World!!") ; // 向StringBuffer添加内容buf.replace(6,11,"偶my耶") ; // 将world的内容替换System.out.println("内容替换之后的结果:" + buf) ; // 输出内容}};打印内容:内容替换之后的结果:Hello 偶my耶!!实例操作五:字符串截取(substring,delete)package字符串处理;public class StringBufferDemo06{public static void main(String args[]){StringBuffer buf = new StringBuffer() ; // 声明StringBuffer对象buf.append("Hello ").append("World!!") ; // 向StringBuffer添加内容buf.replace(6,11,"偶my耶") ; // 将world的内容替换String str = buf.substring(6,11) ; // 截取指定范围的内容// String str = buf.delete(6,11).toString() ;// 删除指定范围中的内容System.out.println(buf);System.out.println("内容替换之后的结果:" + str) ; // 输出内容}};打印结果Hello 偶my耶!!内容替换之后的结果:偶my耶!实例操作六:查找指定内容(indexOf)package字符串处理;public class StringBufferDemo08{public static void main(String args[]){StringBuffer buf = new StringBuffer() ; // 声明StringBuffer对象buf.append("Hello ").append("World!!") ; // 向StringBuffer添加内容if(buf.indexOf("Hello")==-1){System.out.println("没有查找到指定的内容") ;}else{ // 不为01表⽰查找到内容System.out.println("可以查找到指定的内容") ;}}};打印内容可以查找到指定的内容在StringBuffer中还有许多的函数就不⼀⼀介绍了!想要更深去了解可查阅相关资料,下⾯介绍⼀个使⽤String和StringBuffer来操作字符串的案列案列之⼩写⾦额变⼤写⾦额package com.lh.bean;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class StringUtil {private String money; //转换之前的数字⾦额private String submoneyCN[]={"","拾","佰","仟"}; //表⽰数字位数的数组private String numberCNN[]={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"}; //⼤写数字的数组private String je="零壹贰叁肆伍陆柒捌玖"; //⼤写的数字(0-9)private String cdw="万仟佰拾亿仟佰拾万仟佰拾元⾓分"; //⾦额单位public StringUtil(){} //默认的构造⽅法public void setMoney(String money){this.money=money;}public String getMoney(){return convert(this.money);}/*** 转换数字⾦额为⼤写⾦额* @return返回转换后的⼤写⾦额*/public String convert(String money){String formatCN="";int point=money.indexOf("."); //判断字符串是否包含⼩数点if(point!=-1){String money1=money.substring(0,point); //⼩数点之前的部分String money1_1=(new StringBuffer(money1).reverse()).toString();//字符串倒序String money2=money.substring(point+1); //⼩数点之后的部分if(money2.length()<2){ //如果⼩数点后的部分少于两位,⽤"0"补齐if(money2.length()==0)money2="00";elsemoney2+="0";}else//如果⼩数点后的位数⼤于2位,则只前2位money2=money.substring(point+1,point+3);int len = money1_1.length(); //字符串反转之后,⼩数点之前的字符位数int pos=len-1;String sigle="";boolean allhavenum=false;boolean havenum=false;boolean mark=false; //设置⼀个开关变量,若当前数为"0",将该值设为true;不为"0"时设为false/**以下代码为读出⼩数点左⾯的部分*/while(pos>=0){sigle=money1_1.substring(pos,pos+1);//截取1位数字,⽐如数字1234.56,将左侧的字符串反转,值为4321,则截取的值为1 /**读取“亿单元”的代码。

java_502

java_502

结论:
1)当end不start相减的值k恰好等于替代字符串的长度 len时,结果为正常按逐位完成替换。
2)当k大于len,将k位按照len位迚行替换,因而使得最 终str长度减少。 3)当k小于len时,仍然将其替换,其余位置字符内容丌 变,因而也使得最终str的长度增加。
返回
3.StringBuffer字符串对象的截取
5.2.2 StringBuffer的常用方法
1.获取/设置长度和容量 2.修改StringBuffer字符串对象 3.StringBuffer字符串对象的截取 4.类型转换
下一内容
1.获取/设置长度和容量 ◆ int length() 和 int capacity() 调用length()方法得到当前StringBuffer的长度,调用capacity() 方法得到分配容量的总量。
◆ insert() 调用该方法实现在缓冲区指定位置point插入各种类型的数据, 它有如下重载的方法: StringBuffer insert(int point,String s) StringBuffer insert(int point, char ch) StringBuffer insert(int point, int i) StringBuffer insert(int point, long l) StringBuffer insert(int point, float f) StringBuffer insert(int point, double d) 如: …… StringBuffer sb1 = new StringBuffer(“I a girl.”); StringBuffet sb2=new StringBuffer(”sdfet”); sb1.insert(2,”am ”);//sb1内容为“I am a girl.” sb2.insert(3,23.56);//sb2内容为“sdf23.56et” System.out.println(sb); ……

JAVA中String与StringBuffer的区别

JAVA中String与StringBuffer的区别

JAVA中String与StringBuffer的区别在java中有3个类来负责字符的操作。

1.Character 是进行单个字符操作的,2.String 对一串字符进行操作。

不可变类。

3.StringBuffer 也是对一串字符进行操作,但是可变类。

String:是对象不是原始类型.为不可变对象,一旦被创建,就不能修改它的值.对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去. String 是final类,即不能被继承.StringBuffer:是一个可变对象,当对他进行修改的时候不会像String那样重新建立对象它只能通过构造函数来建立,StringBuffer sb = new StringBuffer();note:不能通过付值符号对他进行付值.sb = "welcome to here!";//error对象被建立以后,在内存中就会分配内存空间,并初始保存一个null.向StringBuffer中付值的时候可以通过它的append方法.sb.append("hello");字符串连接操作中StringBuffer的效率要比String高:String str = new String("welcome to ");str += "here";的处理步骤实际上是通过建立一个StringBuffer,让侯调用append(),最后再将StringBuffer toSting();这样的话String的连接操作就比StringBuffer多出了一些附加操作,当然效率上要打折扣.并且由于String 对象是不可变对象,每次操作Sting 都会重新建立新的对象来保存新的值. 这样原来的对象就没用了,就要被垃圾回收.这也是要影响性能的.看看以下代码:将26个英文字母重复加了5000次,1. String tempstr = "abcdefghijklmnopqrstuvwxyz";2. int times = 5000;3. long lstart1 = System.currentTimeMillis();4. String str = "";5. for (int i = 0; i < times; i++) {6. str += tempstr;7. }8. long lend1 = System.currentTimeMillis();9. long time = (lend1 - lstart1);10. System.out.println(time);可惜我的计算机不是超级计算机,得到的结果每次不一定一样一般为46687左右。

stringbuffer的delete方法

stringbuffer的delete方法

stringbuffer的delete方法string与stringbuffer的区别简单地说,就是一个变量和常量的关系。

stringbuffer对象的内容可以修改;而string对象一旦产生后就不可以被修改,重新赋值其实是两个对象。

1.stringbuffer:stringbuffer的内部实现方式和string不同,stringbuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于string类。

所以在实际使用时,如果经常须要对一个字符串展开修正,比如填入、删掉等操作方式,采用stringbuffer必须更加适宜一些。

2.string:在string类中没有用来改变已有字符串中的某个字符的方法,由于不能改变一个java字符串中的某个单独字符,所以在jdk文档中称string类的对象是不可改变的。

然而,不可改变的字符串具有一个很大的优点:编译器可以把字符串设为共享的。

二、stringbuffer的常用方法stringbuffer类中的方法要偏重于对字符串的变化例如追加、插入和删除等,这个也是stringbuffer和string类的主要区别。

1.append方法public stringbuffer append(boolean b)该方法的促进作用就是新增内容至当前stringbuffer对象的末尾,类似字符串的相连接。

调用该方法以后,stringbuffer对象的内容也出现发生改变,比如:stringbuffer sb = new stringbuffer(“abc”);sb.append(true);则对象sb的值将变成”abctrue”。

则对象sb的值将变为”abctrue”。

使用该方法进行字符串的连接,将比string更加节约内容,例如应用于数据库sql 语句的连接,例如:string user = “test”;string pwd = “”;sb.append(“select * from userinfo where username=“).append(user).append(“ and pwd=”).append(pwd);这样对象sb的值就是字符串“select * from userinfo where username=test and pwd=”。

JAVA常用类的用法---String类-Math类

JAVA常用类的用法---String类-Math类

我们从看API文档都知道,JA V A提供了一些常用类,如String,Math,BigDecimal 等的用法。

String ,StringBuffer,,StringBuilder类字符串就是一连串的字符序列,JA V A提供了String 和StringBuffer两个类来封装字符串,并提供了系列方法来操作字符串对象。

String类是不可变类,即一旦一个String对象被创建以后,包含在这个对象中的字符序列是不可改变的,直至这个对象被销毁。

StringBuffer对象则代表一个字符序列中变的字符串,当一个StringBuffer被创建以后,通过StringBuffer提供的append,insert,reverse,setCharAt,setLength等方法可以改变这个字符串对象的字符序列。

一旦通过StringBuffer生成了最终想要的字符串,就可以调用它的toString方法将其转换为一个String对象。

JDK1.5后面增加了StringBuilder类。

它也代表了字符串对象。

实际上StringBuilder 和StringBuffer基本相似,两个类的构造器和方法基本相同。

不同的是StringBuffer是线程安全的,而StringBuilder则没有实现线程安全功能,所以以性能略高,因此我们需要创建一个内容可变的字符串对象,应该优先考虑使用StringBuilder类。

String类提供了大量构造器来创建String对象,具体大家查看API文档吧,我就不想写了。

char charAt(int index):取字符串中的指定位置的字符,其中,参数index指的是字符串中序数,字符串的序数从0开始,这个大家学过数组的都知道,我就不想多说了。

String s = new String("abcdefghijklmnopqrstuvwxyz");System.out.println("s.chatAt(5)"+s.charAt(5));//输出的结果是:fint compareT0(String anotherString):拿当前String对象与anotherString比较。

Java之字符串String,StringBuffer,StringBuilder

Java之字符串String,StringBuffer,StringBuilder

Java之字符串String,StringBuffer,StringBuilder String类:String类即字符串类型,并不是Java的基本数据类型,但可以像基本数据类型⼀样使⽤,⽤双引号括起来进⾏声明。

在Java中⽤String类的构造⽅法来创建字符串变量。

声明字符串:声明⼀个字符串就是创建⼀个字符串对象。

//可以声明单个也可以同时声明多个字符串对象,声明不赋值,这个对象就是空,也就是 String a= null;String a;String b,c;创建字符串:给字符串赋值就是创建字符串的过程。

1.给字符串赋值的四种⽅法:(1).引⽤字符串常量String a="hi";String b="hello",c="world";String d;d="hello world";(2).利⽤构造⽅法直接实例化// 1.String a=new String("hello ");// 2.String b=new String(a);(3).利⽤字符数组实例化char[] charArr={'t','i','m','e'};String a=new String(charArr);String b=new String(charArr,0,2);//从数组第0个索引开始,取2个数(4).利⽤字节数组实例化2.把任何类型转换为字符串:valueOf() ⽅法System.out.println(String.valueOf(6)); //将6转换为字符串3.连接字符串+//使⽤ + 号拼接String a="123"+456;String b=a+"hello";//使⽤ += 拼接b+="您好";System.out.println(b);4.获取字符串的长度:length() ⽅法String a="123 456 789";//获取a的长度(包括空格)赋值给sint s=a.length();System.out.println(s);5.获取指定索引位置的字符:char() ⽅法String str = " a new world a new start ";System.out.println(str.charAt(3));// 取出字符串中制定索引位置的字符6.判断⼀个字符串是否包含另⼀个字符:contains() ⽅法String str = " a new world a new start ";System.out.println(str.contains("abc"));// 判断⼀个字符串是否包含另⼀个字符串7.获取指定位置的字符返回索引:indexOf() 获取指定位置的字符四种⽅法:String str="we are the world";System.out.println(str.indexOf("e"));System.out.println(str.indexOf("e",2));//索引2之后e出现的索引System.out.println(stIndexOf("e"));System.out.println(stIndexOf("e",8));//索引8之前出现的e8.截取字符串:String id="123456************";//获取第⼗五位索引到最后的数字String e4=id.substring(15);//获取第六位到⼗四位索引,即⽣⽇String bir=id.substring(6,14);System.out.println("您的⽣⽇是:"+bir);9.判断字符串是否相等:需要特别注意的是,如果定义两个字符串再⽤ == 去判断它们是否相等,那么他们的结果⼀定是false。

stringbuffer常用方法

stringbuffer常用方法

stringbuffer常用方法StringBuffer是Java中一个重要的字符串处理类,它提供了多种方法,可以实现不同的字符串操作。

StringBuffer提供的方法大致可以分为四类:构造();、附加(append)和插入(insert)、替换(replace)以及删除(delete)和反转(reverse)等。

一、构造方法StringBuffer():创建一个具有默认初始容量的空字符串缓冲区 StringBuffer(int capacity):创建一个具有指定capacity容量的空字符串缓冲区。

StringBuffer(String str):创建一个具有指定字符串内容的字符串缓冲区,StringBuffer(CharSequence seq):创建一个具有指定序列的字符串缓冲区二、append()append()方法可以把指定的内容追加到字符串缓冲区的尾部,它可以接受任意类型的数据,可以追加单个字符,字符串,基本数据类型的数据,数组,对象等。

三、insert()insert()方法可以把指定的内容插入到字符串缓冲区的指定位置上,它可以接受任意类型的数据,可以插入单个字符,字符串,基本数据类型的数据,数组,对象等。

四、replace()replace()方法可以把字符串缓冲区的指定位置的内容替换成指定的字符串,它接受两个参数,第一个参数是指定的起始位置,第二个参数是指定的替换字符串。

五、 delete()delete()方法可以删除字符串缓冲区的指定位置的内容,它接受两个参数,第一个参数是起始位置,第二个参数是结束位置。

六、reverse()reverse()方法可以把字符串缓冲区中的内容反转过来,即把字符串缓冲区中的第一个字符变成最后一个字符,把最后一个字符变成第一个字符,依次类推,这可以用来实现字符串的倒序输出。

总之,StringBuffer拥有多种用途,可以实现简单的插入和替换以及字符串复制,而且它还可以实现字符串反转,比较简单,十分方便。

StringBuffer类append的用法总结

StringBuffer类append的用法总结

StringBuffer类append的⽤法总结⼀.append可以往字符串后边添加字符串相当于“xxxx”+“yyyy”中的“+”。

跟String不同的是String1+String2 和Stringbuffer1.append("yyyy")虽然打印效果⼀样,但在内存中表⽰却不⼀样String1+String2 存在于不同的两个地址内存。

⼆.append可以插⼊字符串指定位置的字符StringBuffer buf=new StringBuffer("Hard ");String aString = "Waxworks";buf.append(aString,3,7);这个操作将aString的从索引位置3开始的由7-3=4个字符组成的⼦串追加到StringBuffer对象buf中。

然后buf对象就会包含字符串"Hard work"。

下⾯是代码实现:package wodeshiyao;public class append {public static void main(String []args){StringBuffer sb1 = new StringBuffer("gao ze wei zhen shuai.");StringBuffer sb2 = new StringBuffer("gao ze wei zhen shuai.");StringBuffer sb3 = new StringBuffer("gaozewei+");String a = "gao ze wei";String b = "zhen shuai.";String c = "";String d = "gzwgehsrtsh";sb1.append(sb2);c = a + b;sb3.append(d, 3, 9);System.out.println(sb1);System.out.println(c);System.out.println(sb3);}}结果:gao ze wei zhen shuai.gao ze wei zhen shuai.gao ze weizhen shuai.gaozewei+gehsrt。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

String和StringBuffer的一些用法
先看一个例子~~~~
public class Untitled1 {
public Untitled1() {
}
public static void main(String[] args) {
Untitled1 untitled11 = new Untitled1();
String s1="STRING类的值是不是会变的->";
String s2=s1;
System.out.println(s2);
s1+="加个试试"; //String 赋值实际上这个是NEW了一个新的对象了,S1变了
System.out.println(s2); //S2没有变,这是因为S2指向的地址还是最早的s1所在的地址
StringBuffer b1=new StringBuffer("StringBuffer类的值是会变的->"); StringBuffer b2=b1;
b2.append("加个试试");//StringBuffer赋值,操作b2还是那个对象,
System.out.println(b1);//所以加一个字符进去b1指向的对象的值已经变了哦
}
}
结果:
STRING类的值是不是会变的->
STRING类的值是不是会变的->
StringBuffer类的值是会变的->加个试试
摘录:
CSDN:
这里的"可变"和"不可变",和是不是final没有关系
举个例子:
String str1 = "hello";
String str2 = "world";
String str1 = str1 + str2;//这里所做的内部操作,其实不是把str1的内容改变为原str1+str2的内容这么简单, 而把创建一个新的String, 内容为str1 + str2的内容,然后再把str1这个引用重新指向新创建的String, 这就是上面说的String不可变.
而如果是StringBuffer的话,则直接更改str1的内容,而不是先创建一个新的StringBuffer
使用 StringBuffer 主要就是在性能上的考虑。

String 是一种非常常用的数据类型,但由于 String 是不可变对象,在进行String 的相关操作的时候会产生许多临时的 String 对象。

而 StringBuffer 在操作上是在一个缓冲中进行的,性能当然优越得多。

不过,一般做为简单的字符串传递和其它操作,只不要改变字符串内容的操作,用 String 效率会高一些。

其他
记得以前在网上看到一篇关于java面试题的文章,里面好像有个题就是关于String与StringBuffer的,具体的记不清了,大概内容如下:
请说出下面代码块存在的问题:
String tmp = “”;
for(int i=0;i<n;I++){
tmp +=”x”;
}
当时网上有人只是简单的说了要改用StringBuffer,这个存在效率问题,而没有进一步说明,其实我也很郁闷,是什么效率问题呢?“顾名思义,StringBuffer之所以效率好,应该是它提供了缓存机制吧”,我想很多朋友是这样想的吧,HOHO。

当昨天晚上读到Effective java一书的时候,我才恍然大悟,原来String是一个支持非可变性的类,这种类的特点是状态固定(不存在任何修改对象的方法),在该对象的生存周期内,它的值是永远不变的(它是线程安全的),它们更容易设计、实现、使用,不易出错,更加安全。

由于String类是支持非可变性的,所以,当执行tmp +=”x”的时候,实际上是另外创建了一个对象,而tmp原来指向的那个对象就成了垃圾(当它没有其它引用的时候),这样的话一个循环就会产生n多对象,可以相象内存的浪费,怕怕。

先看一下String类中substring方法的实现
public String substring(int beginIndex, int endIndex) {
i f (beginIndex < 0) {
throw new StringIndexOutOfBoundsException(beginIndex);
}
i f (endIndex > count) {
throw new StringIndexOutOfBoundsException(endIndex);
}
i f (beginIndex > endIndex) {
throw new StringIndexOutOfBoundsException(endIndex - beginIndex);
}
r eturn ((beginIndex == 0) && (endIndex == count)) ? this :
new String(offset + beginIndex, endIndex - beginIndex, value);
}
从蓝色部份可以看出,它是重新创建了一个新的对象,符合“支持非可变性”的原则,但这却也显示出了非可变类的真正惟一的缺点,就是“对于每一个不同的值都要求一个单独的对象”。

那为什么String要设计成非可变类呢?我觉得String是java中使用最为频繁的一个类,只有使其支持非可变性,才有可能避免一系列的问题,比如说:
String a,b,c;
a=”test”;
b=a;
c=b;
processA(){
……..
}
ProcessB(){
……..
}
ProcessC(){
……..
}
当String支持非可变性的时候,它们的值很好确定,不管调用哪个方法,都互不影响,如果它不支持的话,那么我无法想象其结果。

StringBuffer做为String的“配套类(companying class)”,它的作用就是为了解决上述问题的,StringBuffer扮演了String的可变配套类角色。

非可变类本质上是线程安全的,它们不要求做同步处理,我们可以将其共享给所有用户,让所有的“客户端程序员”都可以直接使用此类而不需要做任何额外的工作。

相关文档
最新文档