------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------
String类 | 注意 | 用来表示字符串,Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现,也就是对象,字符串属于常量,值被创建后不可更改。 String类是final的 |
String s1="abc"; | 在常量池创建一个对象,将其地址赋值给s1 | |
String s2=new String("def"); | 等价于:char data[] = {'d', 'e', 'f'}; String s2 = new String(new String(data)); 也就是说,这句话其实创建了两个对象,先创建了一个匿名的"def"对象,再把这个对象作为参数,传递给String类的构造函数,从而创建了s2对象。 如果括号中的"def"对象在此前已经创建,那么这句话就只创建了一个对象 | |
String类方法 | 获取 | 1、字符串长度,包含的字符数 int length() |
2、根据位置获取该位置的字符 char charAt(int index) | ||
3、根据字符(注意参数是编码值)获取该字符第一次出现的位置 int indexOf(int ch) 重载一:int indexOf(int ch,int fromIndex)从指定位置开始查找 重载二:int indexOf(String str)获取子字符串第一次出现的位置 重载三:int indexOf(String str,int fromIndex)从指定位置开始查找 以上方法,在方法名称前加上last,即反向查找 | ||
4、根据字符串获取其中的子字符串 String substring(int begin)从begin位置一直获取到末尾 重载:String substring(int begin,int end),包含头不包含尾(注意substring是一个单词,S小写) | ||
判断 | 1、判断字符串是否有内容(注意字符串无内容并不表示是null) boolean isEmpty() | |
2、判断字符串是否包含某个子字符串,参数类型为String类所实现的接口CharSequence(字符序列) boolean contains(CharSequence s),这个方法也可以使用int indexOf(String str)来实现,如果返回值是-1就说明不存在 | ||
3、判断字符串是否以某个子字符串开始 boolean startsWith(String str) | ||
4、判断字符串是否以某个子字符串结束 boolean endsWith(String str) | ||
5、判断两个字符串是否具有相同的内容,复写的Object类方法 boolean equals(String str) | ||
6、判断两个字符串是否具有相同内容,并忽略大小写 boolean equalsIgnoreCase(String str) | ||
7、判断字符串是否匹配给定的正则表达式 boolean matches(String regex) | ||
转换 | 1、将数组转换成字符串 实现方式一:通过构造函数String(char[] data,int offset,int count),注意此构造函数有很多重载形式,在此形式中offset表示偏移值,即定义转换的数组的起始位置,count为转换的数组元素的个数。如果是数值型的数组,转换为字符串时,这些元素表示的是编码值。 实现方式二:通过静态方法static String copyValueOf(char[] data,int offset,int count)来实现,同样注意此方法的重载方法 | |
2、将基本数据类型转成字符串,此方法为静态,同样注意此方法的诸多重载方法 static String valueOf(int x) 也可以直接写:数据+"" 使用+号连接一个空字符串,就可以将该基本数据类型转换为字符串了 | ||
3、将字符串转换成字符数组 char[] toCharArray() | ||
4、将字符串转换成字节数组,可以在参数中指定编码表 byte[] getBytes() | ||
5、将字符串转换为大写 String toUpperCase() | ||
6、将字符串转换为小写 String toLowerCase | ||
替换 | 1、将字符串中的某一字符全部替换为另一字符 String replace(char old,char new) 重载:String replace(CharSequence old,CharSequence new)可以替换字符串 | |
切割 | 1、按照某一规定的字符或字符串分割字符串,分割后的字符串数组中的元素不包含参数类型中给定的 String[] split(String regex) | |
去除两端空格 | 1、去掉字符串两端的空格,不包括中间的 String trim() | |
比较自然顺序 | 1、比较两个字符串在编码中的顺序,并返回第一次出现顺序不同的字符的顺序差,如果为正,说明该字符串比被比较的要靠前,如果为负,说明靠后 int compareTo(String str)该方法是·实现的Comparable接口的方法 int compareToIgnoreCase(String str)忽视大小写比较 | |
StringBuilder类、StringBuffer类 | 概述 | 容器类,用来缓存数据的,一般最终会形成字符串; 长度可变; 操作数据类型多样化 |
特点 | 不同于字符串,容器类对象在调用方法时会改变自身,即不需要另外创建对象;而字符串对象一旦创建,就不能再被改变,需要new对象进行存储。 | |
唯一区别 | StringBuffer类自身便有同步属性,多线程操作时不需要考虑安全问题,但效率低; StringBuilder不同步,如在多线程使用,需要考虑安全问题,效率高。 StringBuilder1.5才有,开发时建议使用StringBuilder,安全问题自己上锁解决 | |
注意 | 容器类并未复写父类Object的equals方法,因此,此方法如果被容器对象调用,比较的仍然是地址值,也就是说,即使两个容器对象装的内容一致,equals比较时返回的依然是false | |
StringBuilder类方法 | 添加 | 1、将任意数据类型作为参数添加到已有数据的尾端 StringBuilder append(data) |
2、将任意数据插入指定的角标位置 StringBuilder insert(int index,data) | ||
删除 | 1、删除指定范围的字符 StringBuilder delete(int begin,int end) | |
2、删除指定角标的字符 StringBuilder deleteCharAt(index) | ||
获取 | 方法和String一样,但注意substring的返回值不再是StringBuilder,而是String | |
修改 | 1、替换字符串 StringBuilder replace(start,end,str) 注意:此功能和String类的区别在于,可以用任意长度字符串替换掉任意长度的字符串 | |
2、替换某个位置上的字符 void setCharAt(int index,char a) 注意:此方法的返回值为void,就是说,此方法不能参与调用链 | ||
反转 | StringBuilder reverse() 将存储器中的数据倒序 | |
转换为数组 | void getChars(int srcBegin,int srcEnd,char[] dst,int dstBegin) 此方法表示将存储器中从srcBegin到srcEnd的字符,存入数组dst中,从数组的dstBegin开始存,注意返回值类型为void,并不是直接转换返回一个数组,而是需要先定义一个数组作为参数传入 | |
基本数据包装类 | 类名 | 即基本数据类型把首字母大写,但是注意int是Integer,char是Character |
全局常量 | 类名.MAX_VALUE:该类型所能表示的最大值 类名.MIN_VALUE:该类型所能表示的最小值 | |
基本数据转为String | 方式一:基本数据+"" 方式二:基本数据包装类非静态方法 String toString() 方式三:基本数据包装类静态方法 static String toString(value) 方式四:String类的静态方法 static String valueOf(value) | |
String转为基本数据类型 | 1、使用静态方法,除了Character类均有此方法,更改对应的方法名即可 static int parseInt(str) 重载:static int parseInt(str,int radix)将指定的进制形式radix的String形式转换为一个int数据 注意:参数的str数据双引号里面的数据必须是方法所对应的类型,否则会抛出NumberFormatException,导致程序停止 2、使用构造函数,创建一个Integer对象,参数类型将str传入,再调用方法:int intValue(); | |
10进制转换为其他进制字符串形式 | static toBinaryString(value) static toHexString(value) static toOctalString(value) | |
其他进制字符串形式转换为10进制 | 使用方法static int parseInt(str,int radix) | |
equals方法 | 类似于String类,基本数据类型包装类比较的也是对象中的数值是否相等 如 new Integer(2).equals(new Integer("2"))返回的是true | |
基本数据包装类1.5新特性 | 自动装箱 | 即Integer x=4;简化书写,相当于Integer x=new Integer(4); |
自动拆箱 | Integer x=4; x=x+2; 将x自动拆箱后变成int类型,计算后,再装箱为对象 | |
注意1 | 使用新特性需要判断x是否为null,否则可能会抛空指针异常 | |
注意2 | 如果数值在byte数据类型范围内,使用自动装箱时不会再开辟新空间,也就是说 Integer x=127;Integer y=127;这里x==y是true 而Integer x=128;Integer y=128;就是两个不同的对象了 |