JAVA中String介绍及常见面试题小结
字符串广泛应用在Java编程中,在Java中字符串属于对象,Java提供了String类来创建和操作字符串。
深刻认识String
1)String为字符串常量:即String对象一旦创建之后该对象是不可更改的。(源码如下)
Stringstr1="abc"; Stringstr2="abc"; Stringstr3=newString("abc"); System.out.println(str1==str2); System.out.println(str1==str3);
运行结果
true
false
- ==比较基本数据类型的时候比较的是值,比较引用类型的时候比较的是地址值。这里是比较的引用类型。
- 创建“abc”的时候先到常量池看看有没有,没有的话就创建一个,有的话就直接用。所以str1和str2的存的地址值相同,指向的是同一个。
- 因为str3为new出来的对象,new出来的在堆中,而str1在常量池中,所以地址值不可能相等,所以是false。
2)HowmanyObjectscreatedwith:Stringstr=newString(“abc”)?
Stringstr=newString("abc");
答:创建了两个对象一个在堆一个在常量池
执行“abc”的之后在常量池创建一个,new的时候在堆里创建一个,并把常量池中的“abc”复制了一份过去。然后将其引用赋给了s1。
3)补充案例
①
Strings1="a"+"b"+"c";//在编译时就变成abc常量池中创建abc Strings2="abc"; System.out.println(s1==s2);//truejava中有常量优化机制 System.out.println(s1.equals(s2));//true
在编译时就变成abc常量池中创建abc,两个都在常量池中
②
Strings1="ab"; Strings2="abc"; Strings3=s1+"c"; System.out.println(s3==s2);//false System.out.println(s3.equals(s2));//true
因为这里s3相当于new出来的,对应地址在堆中,s2在对应地址在常量池中
Spendalittlemoretimetryingtomakesomethingofyourselfandalittlelesstimetryingtoimpresspeople.
2020.02.25
知识点补充:
String常见的十种方法
publicclassZiFuChuan{ publicstaticvoidmain(String[]args){ ZiFuChuanFangFaf=newZiFuChuanFangFa(); f.IndexOf();//1.字符串查找注意空格在数组中的位置!字符串查找indexOf();找不到就返回-1有就返回此元素在该数组中的角标位置 f.chartAt();//2.获取指定位置的字符 f.substring01();//3.获取子字符串! f.substring02();//在字符串中截取一部分有头无尾! f.startWith();//4.判断字符串的开头和结尾! f.endsWith(); f.getBytes();//5.将字符串转化为字节数组!、getBytes(); f.toCharArray();//6.将字符串转字符数组! f.length();//7返回字符串的长度 f.contains();//8.判断一个字符串中是否有另一个字符串? f.replace();//9..字符串替换可以实现将指定的字符串和字符换成新的玩意!oldChar:要替换的字符或字符串newChar:用于替换原来的字符串内容! f.equals();//10.判断两个字符串对象是否相等! } } classZiFuChuanFangFa{ privatestaticfinalcharoldChar=0; publicvoidIndexOf() { Stringstr="NiHao"; inta=str.indexOf("p"); inta1=str.indexOf("i"); System.out.println("indexOf(‘p'):查找字符串数组中是否有p元素没有就返回"+a); System.out.println("indexOf(‘o'):查找字符串数组中是否有o元素有就返回此元素在该数组中的角标位置"+a1); } publicvoidequals(){//10.在Java中判断两个对象是否相等不能“==”表示会报错需要调用equal()方法!--->比较的字符串的内容是否相等 Stringstr=newString("123");//演示对错! Stringstr01=newString("123"); booleana=str.equals(str01); System.out.println(str==str01); System.out.println(a); } //2.获取指定索引位置的字符在计算机会直接将字符转化成字节a--->97 publicvoidchartAt(){ System.out.println(); Stringstr="zhaouxufeng"; inta=str.charAt(2); System.out.println("chartAt(2):获取字符串中角标为2的元素!"+a); } //3.获取子字符串开头到所有! publicvoidsubstring01(){ System.out.println(); Stringstr="zhouxufeng"; Stringa=str.substring(8); System.out.println("sunstring(2):获取字符串中角标为2的元素,并取2以后的所有元素生成一个新的字符串(子字符串!包含的关系)"+a); } //3.1获取字符串区间性有头无尾!intbeginIndex,intendImdex publicvoidsubstring02(/*intbeginIndex,intendImdex*/){ System.out.println(); Stringstr="zhouxufeng"; Stringa=str.substring(1,4);//可以在字符串中截取一部分 System.out.println("substring(1,4:在字符串中截取一部分有头无尾!)"+a); } //4.字符串替换可以实现将指定的字符串和字符换成新的玩意!oldChar:要替换的字符或字符串newChar:用于替换原来的字符串内容! publicvoidreplace(){ System.out.println(); Stringstr="zhouxufeng";//oldChar:要替换的字符或字符串 Stringa=str.replace("feng","hui");//newChar:用于替换原来的字符串内容! System.out.println("replace(qq,cc):字符串替换后面的替换前面的"+a); } //5.判断字符串的开始和结尾 publicvoidstartWith(){ System.out.println(); Stringstr="zhaouxufeng"; booleana=str.startsWith(str); System.out.println("startsWith(str):判断字符串的开始"+a); } publicvoidendsWith(){ System.out.println(); Stringstr="zhaouxufeng"; booleana=str.endsWith("g"); System.out.println("endsWith():判断字符串的结束"+a); } /*6.字母大小写转换 *str.toLowerCase(); *str.toUpperCase(); * 7.字符串分割 str.split(Stringsign); */ //8.将字符串转化为字节数组!、getBytes(); publicvoidgetBytes(){ System.out.println(); Stringstr="zhaouxufeng"; byte[]arr=str.getBytes(); System.out.println("getBytes():将字符串转为字节数组!"); for(inti=0;i总结
到此这篇关于JAVA中String介绍及常见面试题小结的文章就介绍到这了,更多相关javastring面试题内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。