package cn.sasa.demo2; public class StringDemo { public static void main(String[] args) { //String 底层采用的是字符数组 //private final char value[] //private 修饰说明value只能在String类内部使用,而且又没有提供get方法,所以外部无法获取value数组,就无法改变数组中元素的值 //final修饰说明value是常量,一旦创建,就不能被改变,value一旦被初始化成某个数组,将永远指向这个数组,不可能再指向其它的数组了 //String 一旦创建就不能更改,但是变量的内存地址是可以改的 String str = "abc"; System.out.println(str); //在内存中只有一个对象,这个对象在字符串常量池中 str = "bcd"; System.out.println(str); //内存中有两个变量,一个在堆中,一个在字符串常量池中 String str1 = new String("bcd"); System.out.println(str1); System.out.println(str == str1); //============================== //------String的构造方法----------------- //默认字符集: 操作系统中的默认编码表, 默认编码表GBK,中文编码是负数 //public String(byte[] bytes) //将字节数组转成字符串 //public String(byte[] bytes, int index, int length) //将字节数组的一部分转成字符串 String str2 = new String(new byte[] {-77,-99,79}); System.out.println(str2); String str3 = new String(new byte[] {111,86,33,55,66,77},2,3); System.out.println(str3); //public String(char[] chars) //将字符数组转成字符串 //public String(char[] chars, int index, int length) //将字符数组的一部分转成字符串 String str4 = new String(new char[] {'h','a','h','a'}); System.out.println(str4); //length() System.out.println(str4.length()); //substring(int begin) //substring(int begin, int end) System.out.println(str4.substring(2)); System.out.println(str4.substring(1,3)); //contains(String str) System.out.println(str4.contains("ff")); System.out.println(str4.indexOf('d')); System.out.println(str4.indexOf('a')); /** * * int length(): 返回字符串的长度 * String substring(int beginIndex,int endIndex): 获取字符串的一部分 * String substring(int beginIndex): 获取字符串的一部分 * boolean startsWith(String prefix): 判断一个字符串是不是另一个字符串的前缀,开头 * boolean endsWith(String prefix): 判断一个字符串是不是另一个字符串的后缀,结尾 * boolean contains (String s): 判断一个字符串中,是否包含另一个字符串 * int indexOf(char ch): 查找一个字符,在字符串中第一次出现的索引,被查找的字符不存在,返回-1 * byte[] getBytes(): 将字符串转成字节数组,此功能和String构造方法相反,byte数组相关的功能,查询编码表 * char[] toCharArray(): 将字符串转成字符数组,功能和构造方法相反 * boolean equals(Object obj): 方法传递字符串,判断字符串中的字符是否完全相同,如果完全相同返回true * boolean equalsIgnoreCase(String s): 传递字符串,判断字符串中的字符是否相同,忽略大小写 */ } }