当前位置: 首页 > news >正文

福建百川建设有限公司网站义乌建设公司网站

福建百川建设有限公司网站,义乌建设公司网站,wordpress 2016主题,免费网站空间 - 百度前言 我们将从源码角度深度分析特点#xff0c;来提升对他们的了解以及设计。 String、StringBuilder、StringBuffer的常见面试题及四大区别可以参考#xff1a;String、StringBuilder、StringBuffer的四大区别解析 String public final class Stringimplements java.io.Se… 前言 我们将从源码角度深度分析特点来提升对他们的了解以及设计。 String、StringBuilder、StringBuffer的常见面试题及四大区别可以参考String、StringBuilder、StringBuffer的四大区别解析 String public final class Stringimplements java.io.Serializable, ComparableString, CharSequence {// 用final 修饰不可变的char 数组存放字符串private final char value[];// 缓存 String 的 hash 值private int hash; // Default to 0// 实现序列化的表示private static final long serialVersionUID -6849794470754667710L; } ​ String 实现了三个接口: Comparable: 说明 String 实现了比较功能可以比较大小按顺序比较单个字符的ASCII码 Serializable: 说明 String 可以实现序列化 CharSequence 表示是一个有序字符的序列因为String的本质是一个char类型数组. 被 final 修饰的 char[] fianl 修饰变量表示改变量的值一旦被初始化后不可以修改。fianl 不论是修饰变量、参数、方法、类都表示其 是完美的不可以被修改或者逻辑顺序不能改变是一个基本逻辑实现元素。 final 的详细讲解可以看final详解 那为什么这里要用final修饰呢 被 fianl 修饰就表示不能被继承或者重写修改String类的设计是Java设计者不希望程序员继承String也就说明String类的最好用法不是继承而是依赖和关联的关系。 先说被fianl修饰的字符数组 字符串是我们在开发过程中要进程使用的每一次的创建对象随着次数的增加都会造成资源的大量消耗导致内存消耗以及庞大的性能开销为了提高性能降低内存消耗提出了字符串共享的方案在方法区的常量池中保存下创建唯一的字符串去共给不同的类不同的方法以及线程去使用。 再回到这个数组上字符串共享是解决内存消耗以及性能开销的必然选择这里还没回答出为什么要被final修饰。共享带来的问题就是安全问题在多个线程对通同一个字符串访问操作是不确定的为了保证线程安全并且兼顾内存资源问题最好的办法就是使用fianl修饰。表示禁止修改。 类为什么也要被fianl修饰 final修饰的类表示不可以被继承就是限制多态/限制行为。Java的一大特性就是安全性如果不被fianl修饰在使用Sring的时候会有太多的不确定性每一个方法都围绕char数组展开如果被继承方法进行了多态会造成不同的语义或者错误的定义使得String的行为性不确定使得String对象的代码将是不安全的所以设计成不能被继承的来保证它的绝对安全。也说明了这个类最好的使用方法是依赖和关联而不是继承。 创建方式以及存储区域 public class Demo1 {public static void main(String[] args) {String s1 hello;String s2 new String(hello);String s3 he llo;String s4 new String(he) llo;String s5 new String(he) new String(llo);String s6 new String(s2);String s7 new String(s6).intern();System.out.println(s1 s2); //falseSystem.out.println(s1 s3); //trueSystem.out.println(s4 s1); //fasleSystem.out.println(s4 s2); //falseSystem.out.println(s5 s2); //falseSystem.out.println(s6 s2); //fasleSystem.out.println(s7 s1); //true} } 我们知道 s1 这种方式创建的对象是在常量池中并且在栈区直接指向常量池中第一个字符的地址第二种方式现在常量池中寻找对象如果没有就创建然后在堆区创建一个对象引用常量池中的位置再由栈区获取。每一次new对象都会在栈区创建一个新对象比如 s7 使用了intern方法返回的结果就是 true 这是因为他们其实在常量池的地址都是一样的但是因为有了堆区的指向所以不相等有了intern直接在栈区指向常量池的地址所以就返回了相等。
http://www.hkea.cn/news/14509378/

相关文章:

  • 学校文化建设网站出口俄罗斯的外贸公司
  • 某网站的安全建设方案企业微信开发
  • 深圳网站建设燦软件开发工具有哪些基本功能
  • 网站开发合同履约seo大神做的网站
  • 西安网站建设公司咪豆网站制作是那个
  • ps设计网站步骤中国空间站拒绝10国名单
  • 网站建设的大概费用wordpress调用阅读量
  • 备案系统网站网络营销的原理
  • 网站开发设计师薪资苏州新港建设集团有限公司网站
  • 如何建设网站与域名网站推广在哪些平台做外链
  • 杭州如何做百度的网站wordpress搬家跳回首页
  • sql注入网站建设百度云免费云虚拟主机
  • 网站的风格包含的因素百度网盘下载安装
  • 商城网站建设实例需求wordpress 内网穿透
  • 站长工具seo优化腾讯云域名购买流程
  • 百度推广让我先做虚拟网站后商丘市网站建设推广
  • 金华高端网站设计wordpress建站产品导入不同目录
  • 浙江省建设厅网站查询建设银行网站登陆二星是什么意思
  • 中石化网站是哪个公司做的江门专业网站建设报价
  • 网络公司制作网站vscode怎么做网页
  • wordpress 网站维护网站的用途
  • 金融网站建设多少钱建筑设计师工资很高吗
  • 营销企业网站制作济南网站建设成之运维
  • 天峨县建设局网站软件外包开发
  • 河北建设机械协会网站并提示网站菜单导航及用户登录
  • 外贸网站wordpress用ps做企业网站分辨率是多少
  • 住房城乡建设厅官方网站wordpress换空间搬家
  • 广东省建设工程网站专业的网站开发服务
  • 个人微信公众号怎么做微网站吗wordpress手动加水印
  • 做网站时空间的选择网站设计与制作软件