JAVA | 4

来源:互联网 发布:网站编程语言有哪些 编辑:程序博客网 时间:2024/06/07 16:53

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);    }}
原创粉丝点击