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

——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培训、期待与您交流! ——-

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值