JAVA | 4 - String 类

String 类

== 是进行数值相等判断的,用在字符串上表示判断内存地址数值是否相等,而 equals() 方法判断的是字符串内容是否相等。

字符串是 String 类的匿名对象,给字符串直接赋值,相当于给匿名对象设置了一个名字而已,但是 String 类的匿名对象是系统自动生成的,不由用户自己直接创建。

开发过程中,要判断输入的字符串的内容是否是某一字符串,调用字符串的 equals() 方法,而不是输入值的,这样可以避免输入值为 null 时产生的空指向异常。

共享设计模式:JVM 底层存在一个对象池,直接赋值定义的 String 类对象时,会将此字符串对象的匿名对象入池保存,其它直接赋值的对象,如果内容相等,则不会开辟新的堆内存空间,而是使用已有的对象堆内存空间地址。

直接赋值:只会开辟一块堆内存空间,并且自动入池;构造方法:开辟两块堆内存空间(其中一块内存空间将会成为垃圾)。不会自动入池,但是可以使用 intern() 方法手工入池。一般直接采用直接赋值法。

字符串一旦声明则不可改变,可以改变的只是 String 类对象的引用。

package com.company;
public class Main {
    public static void main(String[] args) {
        //构造方法不入池
        String strA = new java.lang.String("helloword!");
        String strB = "helloword!";
        //判断字符串对象堆空间地址是否一样
        System.out.println(strA == strB);
        //构造方法入池
        String strC = new String("java!").intern();
        String strD = "java!";
        //判断字符串对象堆空间地址是否一样
        System.out.println(strC == strD);
        //判断字符串内容是否相等(区分大小写)
        System.out.println(strC.equals(strD));
        //判断字符串内容是否相等(不区分大小写)
        System.out.println(strC.equalsIgnoreCase(strD));
        //判断字符串大小
        System.out.println(strC.compareTo(strD));
        //字符串查找
        System.out.println(strC.contains("!"));
        System.out.println(strC.indexOf("va!"));
        System.out.println(strC.indexOf("va!",3));
        System.out.println(strC.startsWith("ja"));
        System.out.println(strC.startsWith("va",2));
        System.out.println(strC.endsWith("va!"));
        //字符串替换
        String strF = strA.replaceAll("l","L");
        String strG = strA.replaceFirst("l","L");
        System.out.println(strF + " " + strG);
        //字符串截取
        String strH = strA.substring(3);
        String strI = strA.substring(3,5);
        System.out.println(strH + " " + strI);
        //字符串拆分
        String strJ = "one day one apple";
        String arrB[] = strJ.split("");
        String arrC[] = strJ.split(" ");
        String arrD[] = strJ.split(" ",2);
        print(arrB);
        print(arrC);
        print(arrD);
        String strK = "张三:北京|李四:上海";
        String arrE[] = strK.split("\\|");
        for(int i = 0; i < arrE.length; i ++){
            String arrF[] = arrE[i].split(":");
            System.out.println("姓名: " + arrF[0] + " " + "地址: " + arrF[1]);
        }
        //输出指定索引字符
        char c = strA.charAt(0);
        System.out.println(c);
        //将字符串变为字符数组
        char arr[] = strA.toCharArray();
        System.out.println(arr[4]);
        //将字符串变为字节数组
        byte arrA[] = strA.getBytes();
        System.out.println(arrA[4]);
        //将字符串数组变为字符串
        for (int i = 0; i < arr.length; i++) {
            arr[i] -= 32;
        }
        String strE = new String(arr, 4, 2);
        System.out.println(strE);
        //判断是否为数字构成的字符串
        System.out.println(isNumber(strA));
        //输出首字母大写后的字符串
        System.out.println(initCap(strA));
        //去掉字符串首尾的空格
        strK = "  java!  ";
        System.out.println(strK.trim());
        //判断字符串是否为空
        System.out.println(strK.isEmpty());
    }
    //判断字符串内是否由数字组成
    public static boolean isNumber(String temp){
        char arr[] = temp.toCharArray();
        for(int i = 0; i < arr.length; i++) {
            if(arr[i] < '0' || arr[i] > '9')
                return false;
        }
        return true;
    }
    //输出字符串数组
    public static void  print(String temp[]){
        for(int i = 0; i < temp.length ; i ++){
            System.out.println(temp[i] + " ");
        }
    }
    //字符串首字母大写
    public static String initCap(String str){
        return str.substring(0,1).toUpperCase() + str.substring(1);
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值