--JAVASE主要用于开发基础的独立的桌面系统应用程序;JAVAEE专门用于企业级解决方法开发,部署和管理一整套体系结构。
--JDK中包含大量API(应用程序编程接口)是一些写好的、可供直接调用的功能。
package day05; import org.junit.Test; public class StrigDEMO { //@Test public void creatString(){ //字符串底层封装了字符数组及针对字符数组的操作算法 String str="羊肉串"; //等效于: char[] chs={'羊','肉','串'};//定义一个字符数组,存储字符串 str = new String(str);//将字符数组传递到一个字符串类型的对象中 System.out.println(str); } //字符串对象的测试方法 //@Test public void StringTest(){ //特点1.字符串一旦创建,内容不可改变,只能替换新字符串 String you = "女友";//you变量指向字符串对象“女友” System.out.println(you); you="新女友";//如果垃圾回收器没有来得及回收 System.out.println(you); //问:现在内存有几个字符串对象 //答:2个 //特点2:两个字符串对象的拼接,都会创建第三个字符串。原字符串都不变 you = you +"和丈母娘"; /*问:内存中有几个字符串对象 * 答:3个 */ System.out.println(you); } //字符串的任何改变,都会抛弃旧字符串,创建新字符串 /* * 字符串常量池的测试 */ //@Test public void StringPoolTest(){ //第一场会 String meeting1 = "小明的杯子";//字符串字面量,保存在常量池中 //第二场会 //String meeting2 = "小明的杯子";//先到常量池中查找是否有相同内容的字符串常量 //小明要求必须换新杯子 String meeting2 = new String("小明的杯子");//虽然指向不同的变量,强制创建,不推荐使用 //情况3:字面量之间拼接 meeting2 ="小明的"+"杯子";//编译时,java会将拼接的结果,保存到常量池中 //情况4:普通变量和字面量之间拼接 String whose = "小明的"; meeting2 = whose +"杯子"; //如果有,就直接使用常量池中的字符串常量,不会新建 //判断两个变量是否指向同一个对象:== System.out.println(meeting1==meeting2? "同一个杯子": "不同的杯子" ); //能使用字符串常量的地方就使用字符串常量,这样共享可以节约内存 } //@Test /* * 获得字符串长度(字符个数) */ public void lengthTest(){ //中英文都是一个字符 String str = "Hello,玛丽奥"; System.out.println(str.length()); //比较:数组长度:数组对象.length // 字符串长度:字符串对象.length() }@Test /* * 已知关键字,找位置:indexOf * */ public void indexOfTest(){ String str = "i can because i think i can"; //step1:查找第一次“can"关键词出现位置 int index = str.indexOf("can"); System.out.println(index); //等效: index=str.indexOf("can",0); // step2:查找can第二次出现的位置 // indexOf方法本身无法查找第二次 // 解决:使用两个参数的indexOf方法,指定开始查找的位置在上一次查找的位置之后 index = str.indexOf("can",index+1); //step3:查找字符i,第一次出现的位置 index =str.indexOf('i'); System.out.println(index); //step4:查找龙虾 index = str.indexOf("龙虾");//返回-1说明真的没有 //step5:查找关键字i最后出现的位置 index = str.lastIndexOf('i'); //以最后一个元素开始,从后向前,找最后一次出现的位置 //Dengxiao index=str.lastIndexOf('i',str.length()); //step6:查找关键字i倒数第二次出现的位置 //从上次找到的位置之前,向前继续查找 index=str.lastIndexOf('i',index-1); } }
--凡是在编译时期救你确定的字符串(字面量、常量和常量连接的结果)都是在常量池中创建
例如:String you="女友";字面量保存在常量池
you = "女友"+"丈母娘";还是字面量,保存在常量池
you=you+"和丈母娘";属于运行时才能拼接出新字符串对象,动态创建在堆中;
JAVA为提高性能,会尽可能重用常量池中的常量字符串;