您的位置:首页 > 职场人生

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

2015-11-24 00:09 387 查看
------- <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)
S
4000
tring转为基本数据类型
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;就是两个不同的对象了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: