黑马程序员-day12-String类与基本数据类型包装类

来源:互联网 发布:画像素软件 编辑:程序博客网 时间:2024/05/17 04:18

------- <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";在常量池创建一个对象,将其地址赋值给s1String 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比较时返回的依然是falseStringBuilder类方法添加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;就是两个不同的对象了

0 0