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): 传递字符串,判断字符串中的字符是否相同,忽略大小写
*/
} }