Java-字符串

字符串:由字符所组成的一串文字符号被称之为字符串
       在java中字符串不仅仅是字符数组,而且是String类的一个实例,可以使用String类来构建,系统提供相关的属性和方法,提供对字符串的各种操作的支持。
       字符串的每个字符是使用Unicode字符来构建。
       字符串的本质是由字符数组所组成,所以使用String类声明字符串后,该字符串会具有数组索引的性质。

       在Java中提供有两种字符串类:String 、StringBuffer类。
       
    String:该类一旦产生一个字符串,其对象就不可以改变,内容和长度是固定不变的。通过系统提供的方法对其操作,不会改变对象实例本身,而是产生一个新的对象。 在java中,使用“
=”将一个字符串对象指定给一个引用名称,其意义为改变该名称所引用的对象,原来被引用的字符串对象若没有其他名称来引用它,就会在适当的时候被java        的“垃圾回收”机制回收。  在java执行时会维护一个String池(Pool),对于一些可以共享的字符串对象,会现在String池中查找是否存在相同的String内容(字符相同),如果有就直接返回,而不是直        接创造一个新的String对象,以减少内存的耗用。如果在程序中使用下面的方式来声明,则实际上是指向同一个字符串对象: String str1 = "itmyhome"; String str2 = "itmyhome"; System.out.println(str1==str2); 当直接在程序中使用“”来包括一个字符串时,该字符串就会在String池中。 StringBuffer:具有缓冲功能,可处理可变字符串。对其进行操作处理,直接操作的是其本身。系统在为该类分配内存时,除去当前字节所占的空间外,还另外提供了16个字符大小             的缓冲区。length返回当前实际包含字符串的长度,capacity方法则返回当前数据容量和缓冲区的容量之和。 String类: 一个字符串对象一旦被配置,它的内容就是固定不可变的 声明字符串: 常量声明方式:采用双引号的方式 String hello = "HelloWorld"; 对象声明方式:字符串类 字符串名 = new 字符串类(参数) String hello = new String("HelloWorld"); 字符数组声明:char[] cs = {'H','e','l','l','o','W','o','r','l','d'}; String str = new String(cs); 创建字符串: String str = new String(); 初始化一个新创建的String对象,该对象是一个空字符串; String str = new String("String"); 初始化一个新创建的String对象,该对象表示参数所表示的字符串; String str = new String(char char[]); 初始化一个新创建的String对象,该对象表示字符数组顺序组成的字符串; String str = new String(char char[],int index, int num); 初始化一个新创建的String对象,该对象表示字符数组顺序组成的字符串,起始位置是第二个参                                            数,长度是第三个参数; String str = new String(int[], int begin, int end); 初始化一个新创建的String对象,该对象表示由Unicode code point数组的一个子数组所组成的字                                          符串; String str = new String(byte[] bytes); 初始化一个新创建的String对象,该对象通过使用系统默认的字符集解码byte数组,构造一个新的对象; String str = new String(byte[] bytes,int offset, int length); 初始化一个新创建的String对象,该对象通过使用系统默认的字符集解码byte数组,构造一个新的对象,起始位置是第二个参数,长度是第三个参数; String str = new String(byte[] bytes,int offset, int length, String charsetName); 初始化一个新创建的String对象,该对象通过使用指定的charset解码指定的byte数组,构造一个新的对象,起始位置是第二个参数,长度是第三个参数; String str = new String(byte[] bytes,String charsetName); 初始化一个新创建的String对象,该对象通过使用指定的charset解码指定的byte数组,构造一个新的对象; String str = new String(StringBuffer buffer); 初始化一个新创建的String对象,该对象表示由StringBuffer类型参数所包含的字符序列; 字符串操作: 比较:(不能用 == 来比较,因为 == 实际上判断的是是否为同一个对象,即是否对应同一内存地址) equals(): 比较两个字符串的内容是否相等,返回值为Boolean类型; equalsIgoreCase(): 忽略大小写,比较两个字符串的内容是否相等,返回值为Boolean类型; compareTo(String anotherString): 按照词典的顺序进行比较,返回int类型值; 例: String str1 = "Hello"; String str2 = "World"; System.out.println(str1.equals(str2)); 连接:concat() 将两个不同的字符串连接起来 例: String str1 = "Hello", str2 = "world", str3 = "!!!"; String str = str1.concat(str2).concat(str3); 复制: String copyValueOf(char[], int offset, int count) 对字符数组的一部分复制 String copyValueOf(char[]) 对整个字符数组的复制 例: String str0 = "HelloWorld"; char[] ch = new char[str0.length()]; for(int i=0; i<str0.length(); i++) { ch[i] = str0.charAt(i); } String s = String.copyValueOf(ch); String st = String.copyValueOf(ch,0,5); System.out.println(s); System.out.println(st); 更改字符串: replace(char,char) :可以把字符串中与方法的第一个参数字符相同的字符统一替换为方法中的第二个字符。 replaceAll(String,String) :该方法可以将字符串与方法的第一个参数字符串相同的字符串统一替换成方法中第二个字符串; replaceFirst(String,String): 该方法可以将字符串与方法的第一个参数字符串相同的第一个字符串替换成方法中第二个字符串; 例: String str0 = "HelloWorld"; String str1 = str0.replace("l","L"); 取字符串长度:String类对象的字符串长度值是固定的,一旦字符串对象创建以后,长度是不会改变的。 length() : 分割字符串:需注意问题:“.”,“|”,“?”都是转义字符,必须加“\”。 如果在一个字符串中有多个分隔符,可以用“|”作为连字符。 split() ; 可以按照指定的划界表达式将字符串分割成几部分,每一部分是一个字符串,方法的返回值是一个字符串数组。 例: String str1 = "张三?在不,回家吃饭,快点。"; String str2[] = str1.split("\?|,"); for(int i=0; i<str2.length; i++){ System.out.println("分割后的第" + (i + 1) + "部分是:" + str2[i]); } 转换在小写: toLowerCase() 转换字符串中的英文字符为小写 toUpperCase() 转换字符串中的英文字符为大写 转换成数组的操作 char charAt(int index) 返回指定索引处的字符 int indexOf(int ch) 返回指定字符第一个找到的索引位置 int indexOf(String str) 返回指定字符串第一个找到的索引位置 int lastIndexOf(int ch) 返回指定字符最后一个找到的索引位置 String substring(int beginIndex) 取出指定索引处至字符串尾端的子字符串 String substring(int beginIndex ,int endIndex) 取出指定索引范围子字符串(包括beginIndex,不包括endIndex) char[] toCharArray() 将字符串转换为字符数组 StringBuffer类: 长度可变的长符串对象类。如果String频繁的进行字符串的拼接操作,则会产生很多的对象,建议用StringBuffer。 常用方法有: length() :返回长符串的长度; insert() :在字符串的中间插入,根据相应的参数有不同的方式; append() :在字符串的末尾追加字符串; setCharAt(int index, char ch):设置指定的索引位置为指定的字符。 toString() : 返回字符串; 例: StringBuffer ss = new StringBuffer(); ss.append("孩子,"); //追加内容 ss.append("回家,"); ss.append("吃饭。"); System.out.println(ss.toString()); //将所有的内容转换成字符串输出 System.out.println("长度是:"+ss.length()); //取长度
原文地址:https://www.cnblogs.com/lzhat/p/4339807.html