Java连载72-String类详解、多个构造方法
2020-01-14 09:31:54来源:博客园 阅读 ()
一、String类
1.String类是不可以变类,也就是说String对象声明后
2.java.lang.String;是字符串类型
(1)字符串一旦创建不可再改变,“abc”字符串对象一旦创建,不可在改变成“abcd”。
(2)提升字符串的访问效率:在程序中使用了“缓存”技术,所以在java中所有使用“双引号”括起来的字符串,都会在“字符串常量池“中创建一份,字符串常量池在方法区中存储。
(3)在程序执行过程中,如果程序用到某个字符串,例如:”abc“,那么程序会在字符串常量池中去搜索该字符串,如果没有找到这个字符串则在字符串常量池中新建一个”abc“字符串,如果找到就直接拿过来用。(字符串常量池是一个缓存区,为了提高访问字符串的效率)。
(4)使用Sting的时候?,应该注意的问题:尽量不要做字符串频繁的拼接操作,因为字符串一旦创建就不可以改变了,只要频繁的拼接,就会在字符串常量池中?创建大量的字符串对象,给垃圾回收带来问题。
package com.bjpowernode.java_learning; ? public class D72_1_StringClassAnlysis { public static void main(String[] args) { //创建一个“abc”字符串对象,该对象的内存地址,让s1变量保存。 //s1是一个引用,s1指向“abc”对象 String s ="abc"; //可以让s1重新指向吗?s1是局部变量,s1前面是没有final,所以s1是可以重新指向的。 //但是"def"字符串本身是不可以变的。 String s1 = "雄安"; String s2 = "雄安"; System.out.println(s1==s2); System.out.println(s1.equals(s2)); //比较两个字符串的值,不能用双等号,要使用函数.equals,双等号比较的是内存地址 //如果字符串是new出来的,那么内存地址就肯定不相等了,这个了例子也证明了 //直接使用字符串的话,那么就是存储在了方法区的字符串常量池 String s3 = new String("雄安"); String s4 = new String("雄安"); System.out.println(s3==s4); System.out.println(s3.equals(s4)); System.out.println(s1==s3); System.out.println(s1.equals(s3)); //题解:以下程序创建了三个对象,两个在堆内存,一个在方法区内存 String s5 = new String("abc"); String s6 = new String("abc"); String[] ins = {"sport","music","food","sleep"}; //要求将上面的兴趣爱好拼接成一个字符串 String temp = null; for(int i=0;i<ins.length;i++) { if(i==ins.length-1) { temp += ins[i]; }else { temp += ins[i]+","; } } System.out.println(temp); //不推荐这样做因为做了大量拼接,方法区创建了很多字符串 } }
二、字符串常用构造方法
package com.bjpowernode.java_learning; ? public class D72_2_StringCommonMethod { public static void main(String[] args) { //常用的构造方法 String s1 = "abc"; String s2 = new String("abc"); byte[] bytes = {97,98,99,100}; String s3 = new String(bytes); System.out.println(s3);//从输出结果可以看出,String已经重写了Object中的toString String s4 = new String(bytes,0,2);//第二个参数是开始位置,第三个参数是长度 System.out.println(s4); char[] c1 = {'我','是','中','国','人'}; String s5 = new String(c1); System.out.println(s5); String s6 = new String (c1,2,2); System.out.println(s6); } } ?
三、源码:
D72_1_StringClassAnlysis.java
D72_2_StringCommonMethod.java
https://github.com/ruigege66/Java/blob/master/D72_1_StringClassAnlysis.java
https://github.com/ruigege66/Java/blob/master/D72_2_StringCommonMethod.java
2.CSDN:https://blog.csdn.net/weixin_44630050
3.博客园:https://www.cnblogs.com/ruigege0000/
4.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料
原文链接:https://www.cnblogs.com/ruigege0000/p/12190050.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash