代码中注释------>方法
public static void main(String[] args) {
//创建String字符串对象
String str1="ABCD";//方式一
String str2=new String("ABCD");//方式二
/*
* 为什么String不可变?
* String字符串创建在字符串池中,当再次创建或修改对象不会抹掉原字符串,
* 只会在字符串池中再次创建一个新字符串,修改的是引用类型的引用地址
* 若创建的字符串原字符串池中存在则不创建,直接引用该地址.
*
* 例子:str1="EFG";//并不是直接修改原来的"ABCD",而是再创建一个字符串在字符串池中
* str1的引用地址变为"EFG"的引用地址
*
* 1.这两种创建String对象的方式是完全不一样
* 直接赋值:当前str1所隐用的是字符串池中的字符串地址
* new创建的:str2引用在堆中开辟空间的地址,堆中会引用字符串池中字符串的地址
*/
//charAt(int index)方法,用于取出字符串的第几个字母,下标0开始到长度-1;
char ch1=str1.charAt(0);
//ch1='A'
//字符串拼接
String str3="Hello";
String str4="World";
String strAfter_0=str3+str4;//直接拼接
String strAafter_1=str3.concat(str4);//调用方法拼接
//从字符串中查找指定字符串
String str5="你好吗?";
boolean after=str5.contains("吗");
//判断字符串是否以某个字符串结尾
String str6="String.end";
boolean after1=str6.endsWith(".end");
//同理startsWith()
//判断两个字符串内容是否相等
String str7="abc.efg";
String str8="abc.opq";
boolean after2=str7.equals(str8);
//格式化 字符串输出
//静态方法format
//第一个参数--->格式化符号
//%d->整数,%f->小数,%c字符,%C->汉字,%s->字符串,%ld->长整型
//第二个参数 对应的值
//格式化符号需要和对应的值一一对应
String str9=String.format("%s", str8);
/*
* 例:不足两位时需要在前面补0,比如说05
* String str9=String.format("%02d",5);
*/
//从当前字符串中查找指定的字符
String str10="abcdea";
System.out.println(str10.indexOf('a'));
//返回第一次出现的位置;若未出现则返回-1
//该方法第一个重载方法---->查找指定字符串
/*
* 例:str10.indexOf('abc');
*/
//该方法第二个重载方法
//从当前字符串指定下标(包含)向后查找指定字符串
/*
* 例:str10.indexOf('a',1);
* 从下标为1的位置开始查找a
*/
//判断当前字符串是否为空
/*
* 三种:
* void-->无返回值类型的空
* null-->在堆中没有开辟空间(无引用)
* "" -->空的字符串
*
* 判断的是空字符串--->str10.isEmpty()
*/
//获取当前字符串中指定字符最后出现的位置
String str11="abcdba";
System.out.println(str11.lastIndexOf('a'));
//字符串长度
String str12="abcdef";
System.out.println(str12.length());
//替换子字符串旧的字符
//第一个参数--->旧字符
//第二个参数---->新参数
String str14="你好";
System.out.println(str14.replace("你", "我"));
//截取指定位置的字符串
//参数为从指定参数位置截取到最后
String str15="西南";
System.out.println(str15.substring(1));
//str12.substring(0,1)
//第一个参数为截取起始位置;第二个为结束位置.
//---->包含左边,不包含右边
//将字符串转换为字符数组-->str15.toCharArray()
//大小写转换--->str15.toUpCase()转换为大写
// str15.toLowerCase()转化为小写
}