JAVA程序开发学习日志—DAY09—2022/07/15

目录

String

1、字符串存储格式

2、String的不可变性

3、String字符串的初始化

4、字符串的比较

5.字符串拼接

6、字符串的成常用方法

StringBuffer

1.StringBuffer的定义

2.常用方法

3.StringBuffer的比较

4.StringBuffer 和 StringBuilder区别


String

        表示一个字符串,是引用数据类型

  1. 1、字符串存储格式

    1.         字符串是用final修饰的char类型数组进行存储的。
  2. 2、String的不可变性

    1.         字符串一旦初始化不可更改,但可通过在字符串常量池中重新创建一个字符串,改变引用的指向,进而改变字符串的值
  3. 3、String字符串的初始化

  4.         (1)直接赋值(字符串常量池)
String str = "Hello";

        (2)通过构造方法初始化 ①public String(String str);②publi String(char[] c);

String str4 = new String("helloWorld");
  1. 区别:
  2. String str = "Hello";字符串存储在字符串常量池中。
  3. String str4 = new String("helloWorld");通过new对象的方法进行初始化。字符串存储在堆中
  1. 4、字符串的比较

  2. "==":比较引用数据类型时,比较的是地址
  3. equals()方法:在字符串中,使用equals方法比较字符串的内容
//字符串的比较
String str6 = "happy";
String str7 = "happy";
String str8 = new String("happy");
System.out.println(str6 == str7);//true str6和str7指向同一个空间,说明地址相同
System.out.println(str7 == str8);//false str7指向的是字符串常量池中的地址
System.out.println(str7.equals(str8));//true
  1.  注:
  2.     (1)equals是超类Object中的方法,实际上使用"=="比较对象的地址,但是String类中重写了该方法
  3.     (2)字符串的比较一般都用equals()比较而不用"=="
  4. 5.字符串拼接

    1.         (1)字符串常量拼接字符串处理:在常量池中开辟空间
      1.         (2)如有字符串变量参与拼接:在堆中开辟空间
String str9 = "helloworld";//在常量池中
String str10 = "hello"+"world";//先拼接成helloworld    在常量池中

String str11 = "hello";
str11 = str11+"world";//helloworld 变量+常量 会在堆中开辟helloworld字符空间
System.out.println(str9 == str10);//true
System.out.println(str11);
System.out.println(str9 == str11);//false

String s1 = "hello";
String s2 = "world";
String s3 = s1+s2;//变量+变量  在堆中开辟空间
System.out.println(s3 == str9);//false

final String s4 = "hello";
final String s5 = "world";
String s6 = s4+s5;//常量+常量  在常量池中开辟空间
System.out.println(s6 == str9);//true
  1. 6、字符串的成常用方法

  2. (1)equals:用于比较字符内容
  3. (2)equalsIngnoreCase:忽略大小写比较
String str1 = "abc";
String str2 = "ABC";
//equalsIgnoreCase:忽略大小写比较
System.out.println(str1.equals(str2));//false
System.out.println(str1.equalsIgnoreCase(str2));//true
  1. (3)startswith:是否以指定的前缀开头
//startsWith:是否以指定的前缀开头
String str3 = "ande";
System.out.println(str3.startsWith("a"));//true
System.out.println(str3.startsWith("b"));//false

(4)length:返回此字符串的长度

//length:返回此字符串的长度
System.out.println(str1.length());//3

(5)charAt:返回指定下标的字符

//返回指定下标的字符
//charAt:返回char指定索引处的值。指数范围为0至length()-1。该序列的第一个char值在索引0,下一个索引为1 ,依此类推,与数组索引一样
String str4 = "abcdefghijkllmn";
System.out.println(str4.charAt(1));//a
System.out.println(str4.charAt(str4.length()-1));//n

(6)indexOf:指定字符串第一次出现的序列号/位置,没有匹配的就返回-1

//indexOf:指定字符串第一次出现的序列号/位置,没有匹配的就返回-1
System.out.println(str4.indexOf("cd"));//2
System.out.println(str4.indexOf("b"));//1
System.out.println(str4.indexOf("z"));//-1

(7)lastIndexOf:返回字符串最后一次在字符串中出现的下标

//lastIndexOf:返回字符串最后一次在字符串中出现的下标
System.out.println(str4.lastIndexOf("l"));//12

(8)subString:减去前n个字符/截取指定下标范围内的字符串

//substring:减去前n个字符/截取指定下标范围内的字符串
String str5 = " Hello World ! ";
System.out.println(str5.substring(2));//llo World!
System.out.println(str5.substring(10));//d!  范围:[10,+∞)
System.out.println(str5.substring(7, 12));//World  范围:[7,12)

(9)toCharArray:将字符串转换成字符型数组

//toCharArray:将字符串转换成字符型数组
System.out.println(str5.toCharArray());// Hello World !
char[] str6 = str5.toCharArray();
System.out.println(Arrays.toString(str6));//[ , H, e, l, l, o,  , W, o, r, l, d,  , !,  ]
System.out.println(str6);// Hello World ! 

(10)trim:删除字符串开头和末尾的空格

//trim:删除字符串开头和末尾的空格
System.out.println(str5.trim());//Hello World !

(11)replace:替换指定字符串(区分大小写)

//replace:替换指定字符串(区分大小写)
System.out.println(str5.replace("o", "K"));// HellK WKrld !
System.out.println(str5.replace("ell", "m"));// Hmo World !

(12)split:把字符以指定的字符进行分割

//split:把字符以指定的字符进行分割
String str7 = "1,,2,,3,,4,,5";
String[] str8 = str7.split(",");
for (String s : str8) {
    System.out.println(s);//1,2,3,4,5
}

StringBuffer

        用于对字符串进行存储和操作,可以声明一个可变的字符串,可以用于对字符串频繁的操作

  1. 1.StringBuffer的定义

  2. new StringBuffer(String str);
String str1 = "hello";
StringBuffer buffer = new StringBuffer(str1);
System.out.println(buffer);//hello
  1. 2.常用方法

  2. (1)append();用于字符串的拼接
//append()
buffer.append("World").append("!");
System.out.println(buffer);//helloWorld!

    (2)toString();将字符串转换成String类型

//toString类型
String str2 = buffer.toString();
System.out.println(str2);//helloWorld!

    (3)setCharAt(int index,char c);设定指定下标的字符

//setCharAt()
buffer.setCharAt(1,'O');
System.out.println(buffer);//hOlloWorld!

    (4)replace(int start, int end, String str);替换指定下标范围的字符串

//replace(int start, int end, String str)
System.out.println(buffer.replace(0, 5, "Happy"));//HappyWorld!

    (5)reverse();将字符串翻转

//reverse
System.out.println(buffer.reverse());//!dlroWyppaH

3.StringBuffer的比较

//StringBuffer的比较:转换成String类型来比较
StringBuffer strbuff1 = new StringBuffer("hello");
StringBuffer strbuff2 = new StringBuffer("hello");
System.out.println(strbuff1.equals(strbuff2));//false  原因:StringBuffer没有重写equals()方法
System.out.println(strbuff1.toString().equals(strbuff2.toString()));//true

4.StringBuffer 和 StringBuilder区别

StringBuilder是线程安全的,效率低;StringBuilder线程是不安全的,效率高

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值