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

黑马程序员------String类

2015-10-31 17:55 288 查看
——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-

String 类

特点:

1、字符串一旦初始化就不能更改:

String s = “abc”; s = “bcd”;

这里s只是指向了新的对象,而不是”abc”更改了,在常量池中创建一个对象,常量池中的对象是不能更改的

2、String s = “abc”;String s1 = new String(“abc”);第一个创建一个对象,第二个创建2个对象

(一个是“abc”这个直接量对应的字符串对象;一个是由new String()构造器返回的字符串对象。)

3、String类不能有子类,已经被声明为final类型

4、Object 中equals()比较的是地址值,String 中重写了这个方法,比较的是字符串是否相同

5、String s = “123”,String s1 =”123”; s==s1(true)

因为s1会默认先去字符串的池中找有没有”123”这个字符串,有就直接用,不会再创建

6、String s = “abc”;String b = “a” + “bc”;(s == b);true

b在编译时会先把两个字符串合并,然后在字符串池中找有没有与合并后的字符串相同的字符串,有就直接取出来用,没有就创建字符串

字符串方法:

1、length(): 获取字符串长度

2、char charAt(int x):根据角标获取字符串相应的字符(若有重复字符,获取第一次出现位置)

3、int indexOf(char ch):根据字符获取在字符串的位置(不存在返回-1)

4、int indexOf(char ch ,int x):从指定位置开始获取字符在字符串的位置

5、int lastIndexOf(‘a’):反向索引字符在字符串的位置(角标还是从左到右数)

6、boolean startsWith(“f”) | boolean endWith(“f”):字符是否以什么开头或结尾(参数是String类型)

7、boolean contains(“a”):是否包含某字符(参数是String类型)

8、boolean equalsIgnoreCase(“aaaaa”):不关心大小写比较字符串

9、s.toUpperCase();变成大写

10、s.toLowerCase();此案成小写

11、字符数组–>字符串

String s = new String(ch[0]); | ch[0]+””

s.copyValueOf(ch):把字符数组变成字符串

12、字符串–>字符数组

s.toCharArray():返回char[]

13、字符串–>字节数组

s.getBytes():返回byte[]

14、replace(‘a’, ‘b’) | replace(“a”, “123”) | replaceFirst(“a”, “123”) :

默认当字符串中a出现的位置全部替换,replaceFirst只替换第一次出现的位置,若替换的值不存在,返回-1

15、splite(“”):根据条件分割,返回String[]

16、substring(0,4) :获取字符串的一部分,返回字符串(从0开始,到4结束,但是不包含4的元素)

17、trim():去除字符串两端空格

18、compareTo(“aaav”):比较两个字符串自然顺序位大小

19、String s =”abc” ;String s1 = “adc”; s.compareTo(s1):(当比较到d时,d的ASICC码大于b,所以s1大于s,后面不用比)

20、boolean isEmpty():字符串是否为空 (若s = null,返回空指针异常)

StringBuffer | StringBuilder(不确定字符长度的时候使用)

特点:

1、他是一个容器(当字符串变化时,不会创建新的字符串,而是在原来的字符串上进行增加)

2、长度是可以变化的

3、可以操作多种数据类型

4、最终通过tostring()返回字符串

5、stringBuffer线程安全,效率低,StringBuilder线程不安全,效率高

添加:append():不支持byte和short类型,默认自动添加到最后

删除:delete(0,4)(包含头,不包含尾)| deleteCharAt(2):删除指定位置字符

获取:subString(3,4)获取指定范围字符串,返回String类型

替换:replace(start,end):返回StringBuffer类型

反转:reverse():返回StringBuffer类型

getChars(1, 2, ch, 0);:获取指定范围的字符串(包含头不包含尾),放入指定的char[]数组,并指定从数组的哪里开始放入

package com.day01;

public class Day01 {
public static void main(String[] args) {

StringBuilder sb = new StringBuilder();

sb.append("<name>\r\n");
sb.append("<a>\r\n");
sb.append("第一个\r\n");
sb.append("</a>\r\n");
sb.append("<b>\r\n");
sb.append("第二个\r\n");
sb.append("</b>\r\n");
sb.append("<c>\r\n");
sb.append("第三个\r\n");
sb.append("</c>\r\n");
sb.append("<d>\r\n");
sb.append("第四个\r\n");
sb.append("</d>\r\n");
sb.append("</name>\r\n");
System.out.println(sb.toString()) "//打印字符串"
System.out.println(sb.delete(7, 10))"删除角标7-9的字符"
System.out.println(sb.substring(7, 10))"获取角标7-9的字符"
System.out.println(sb.reverse())"字符串翻转打印"
}

}


数据类型对象包装类

byte Byte | int Integer | char Character | long Long

boolean Boolean …..

作用:可以使基本数据类型调用相关方法,提高效率

基本数据类型–>字符串

方法:一般就是加 “” ,最方便

字符串–>基本数据类型(文本框中的数据都是String类型)

int x = Integer.parseInt(“12345”);(其他类型都一样 类型 变量名 = 类型.parse类型(数据)),但是”12345a”就会报错,因为a不属于int类型

十进制–>其他进制

Integer.toBinaryString(20):二进制

Integer.toHexString(20) :十六进制

Integer.toOctalString(20) :八进制

其他–>十进制

Integer.parseInt(“3c”,16):16是确定3c的进制,而不是指定3c变成什么进制类型

自动装箱和拆箱

Integer x =10;(自动装箱,Integer x = new Integer(10)相同)

x = x+2;(可以运算,x会自动先变为基本数据类型,然后运算,然后再变成类对象)

注意:变为对象之后可以变为x = null (最好进行逻辑判断)

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: