JAVA中的常见类(必看):String字符串类

String类

1.String类的概念与特点

String类在程序中随处可见,也就是字符串类。
String类位于java.lang包下
字符串的特点:

  • 1.字符串的内容定义后不可变,常量。
  • 2.字符串不可变,所以可以共享使用
  • 3.字符串效果相当于char[]字符数组,但是底层原理是byte[]字节数组
2.字符串的创建方式3+1:
  • 三种构造:
  • public String();空白字符串,没有内容
  • public String(char[] array);根据字符数组的内容,创建对应字符串
  • public String(byte[] array);根据字符数组的内容,创建对应字符串
  • 一种直接创建:String str = “哈哈”;
package demo.demo05;
/*
* java.lang.String 类代表字符串
* 程序中所有的双引号字符串,都是String类的对象
* 字符串的特点:
* 1.字符串的内容定义后不可变,常量。
* 2.字符串不可变,所以可以共享使用
* 3.字符串效果相当于char[]字符数组,但是底层原理是byte[]字节数组
* 字符串的创建方式3+1:
* 三种构造:
* public String();空白字符串,没有内容
* public String(char[] array);根据字符数组的内容,创建对应字符串
* public String(byte[] array);根据字符数组的内容,创建对应字符串
* 一种直接创建:
* String str = "哈哈";
* 注意:不管有没有new,只要有"",就是创建了对象*/
public class Demo01String {
    public static void main(String[] args) {
        //使用无参构造
        String str1 = new String();
        System.out.println("第一个字符串是:" + str1);
        //使用char数组进行构造
        char[] charArray = {'A','B','C'};
        String str2 = new String(charArray);
        System.out.println("第二个字符串是:" + str2);
        //使用byte数组进行构造
        byte[] byteArray = {97,98,99};
        String str3 = new String(byteArray);
        System.out.println("第三个字符串是:" + str3);
        //直接定义
        String str4 = "我是第四个字符串";
        System.out.println(str4);
    }
}
3.字符串常量池
package demo.demo05;
/*字符串常量池:程序中直接写上的双引号字符串,就在字符串常量池中。
对于基本类型来说,==是进行数值的比较。
对于引用类型来说,==是进行地址值的比较。
因为String类底层保存的就是byte型数据,所以当存放char数组时,他会先new在堆里转化成byte型
常量池位于堆当中,new出的对象不在常量池中,仍在堆里。
* */
public class Demo02Pool {
    public static void main(String[] args) {
        String str1 ="abc";
        String str2 ="abc";
        char[] charArray={'a','b','c'};
        String str3 = new String(charArray);
        System.out.println(str1 == str2);//true
        System.out.println(str1 == str3);//false
        System.out.println(str2 == str3);//false
    }
}
4.String中的常用方法(重点)
4.1字符串比较方法
package demo.demo05;
  == 是进行对象的地址值比较,如果确实需要字符串内容的比较,可以使用两个方法:
public boolean equals(Object abj):参数可以是任何对象,只有参数是一个字符串并且内容相同,才会是true
注意事项:
1.任何对象都可以使用Object进行接收
2.equals方法具有对称性,也就是a.equals(b)和b.equals(a)效果一样
3.如果比较的双方一个是常量一个是变量,推荐把常量字符串写在前面。
推荐 "abc".equals(str)   不推荐 str.equals("abc")
public boolean equalsIgnoreCase(String str):忽略英文大小写进行比较

public class Demo03EqualsMethod {
    public static void main(String[] args) {
        String str1 = "Hello";
        String str2 = "Hello";
        char[] charArray ={'H','e','l','l','o'};
        String str3 = new String(charArray);
        System.out.println(str1.equals(str2));//true
        System.out.println(str2.equals(str3));//true
        //因为变量字符串可以存放null,当null.方法时,会引发空指针异常
        System.out.println(str3.equals("Hello"));//不推荐,true
        System.out.println("Hello".equals(str3));//推荐,true
        //对于英文大小写
        System.out.println("hello".equalsIgnoreCase(str2));//true
    }
}
4.2字符串获取方法
package demo.demo05;
String 当中与获取相关的方法有:
* public int length(); 获取字符串当中含有的字符个数,拿到字符串长度
* public String concat(String str);将当前字符串和参数字符串拼接成为一个新的字符串。
* public char charAt(int index);获取指定索引位置的单个字符。
* public int indexOf(String str);查找参数字符串在本字符串当中首次出现的索引位置,如果没有就返回-1*/
public class Demo04GetMethod {
    public static void main(String[] args) {
        //获取字符串的长度
        int length = "asafsafhiasfghafhgaf".length();
        System.out.println("字符串的长度是:" + length);
        //拼接字符串
        String str1 = "hello";
        String str2 = "world";
        String str3 = str1.concat(str2);
        System.out.println(str3);//拼接过后,是产生新的字符串,对原字符串没有改变
        //获取某索引位置的字符串
        String str4 ="abgfhg";
        System.out.println("索引为3的字符为:" + str4.charAt(3));
        //在字符串中查询某字符串第一次出现的索引值
        String str5 = "hbsahaweofhoeh";
        System.out.println(str5.indexOf("hbs"));//被查找对象.indexOf(想查找的字符)
    }
}
4.3字符串截取方法
package demo.demo05;
字符串的截取方法:
* public String substring(int index):截取从参数位置一直到字符串末尾,返回新字符串
* public String substring(int begin,int end):截取从begin开始,一直到end结束,返回中间的字符串
* 备注:[begin,end)包含左边,不包含右边。*/
public class Demo05Substring {
    public static void main(String[] args) {
        String str1 = "sdbfhfohfo";
        //截取索引为5及之后的字符串
        String str2 = str1.substring(5);
        //截取索引为5到7之间的字符串,不包含7
        String str3 = str1.substring(5,7);

        //对于两个字符串,"java","c",a中保存的只是java的地址值,后来又换成了c的地址值。
        String a = "java";
        a = "c";
        System.out.println(a);
    }
}
4.4字符串中转换相关的常用方法
package demo.demo05;

* String当中与转换相关的常用方法:
* public char[] tocharArray(); 将字符串拆分成为字符数组作为返回值
* public byte[] getBytes();获得当前字符串底层的字节数组。
* public String replace(charSequence oldString,charSequence newString);
* 将所有出现的老字符串替换成新的字符串,返回替换之后的新字符串。
* charSequence:代表可以接收String类型*/
public class Demo06StringConvert {
    public static void main(String[] args) {
        //返回字符数组
        String str = "Helloworld";
         char[] chars = str.toCharArray();
        System.out.println(chars.length);
        //获得底层字节数组
        String str2 = "abc";
         byte[] bytes = str2.getBytes();
        System.out.println(bytes[0]);
        System.out.println(bytes[1]);
        System.out.println(bytes[2]);
        //替换字符串
        String str3 = "ha ha ha ha ha ha";
        String str4 = str3.replace("a","e");
        System.out.println(str3);
        System.out.println(str4);
        //比如游戏中的祖安语言
        String lang = "会不会玩啊!你大爷的!";
        String newLang = lang.replace("你大爷的","****");
        System.out.println(newLang);
    }
}
4.5分割字符串的方法
package demo.demo05;
/*
* 分割字符串的方法:
* public String[] split(String regex);按照参数规则,将字符串切分成若干部分
* 注意事项:
* split方法的参数其实是一个"正则表达式"
* 今天要注意:如果按照英文句点.进行切分,必须写"\\."*/
public class Demo07StringSplit {
    public static void main(String[] args) {
        String str ="aaa,bbb,ccc";
        String[] arr = str.split(",");
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
        String str1 ="aaa bbb ccc";
        String[] arr1 = str1.split(" ");
        for (int i = 0; i < arr1.length; i++) {
            System.out.println(arr1[i]);
        }
        String str2 ="aaa.bbb.ccc";
        String[] arr2 = str2.split("\\.");
        for (int i = 0; i < arr2.length; i++) {
            System.out.println(arr2[i]);
        }
    }
}
大家觉得有用的话点个赞吧,算是对我小小的支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值