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

宁波高端模板建站海淀区seo搜索引擎优化企业

宁波高端模板建站,海淀区seo搜索引擎优化企业,简洁大气的网站推荐,日本b2b平台有哪些一、Java面试题第五天 1.spring字符串的最大长度 转自:String字符串的最大长度是多少?在学习和开发过程中,我们经常会讨论 short ,int 和 long 这些基本数据类型的取值范围,但是对于 String 类型我们好像很少注意它的…

一、Java面试题第五天

1.spring字符串的最大长度

转自:String字符串的最大长度是多少?在学习和开发过程中,我们经常会讨论 short ,int 和 long 这些基本数据类型的取值范围,但是对于 String 类型我们好像很少注意它的“取值范围”。那么对于 String 类型,它到底有没有长度限制呢?

其实 String 类型的对象,他们是有长度限制的, String 对象并不能“存储”无限长度的字符串。关于 String 的长度限制要从编译时限制运行时限制两方面考虑。

String类提供了一个length方法,返回值为int类型,而int的取值上限为2^31 -1。

所以理论上String的最大长度为2^31 -1。

编译期限制

我们所写的字面量会直接存放在方法区的常量池里面,“afu 最帅” 会存放在方法区的常量池中。

Stirng 长度之所以会受限制,是因JVM规范对常量池有所限制。常量池中的每一种数据项都有自己的类型。Java中的UTF-8编码的Unicode字符串在常量池中以CONSTANT_Utf8类型表示。

CONSTANT_Utf8的数据结构如下:

CONSTANT_Utf8_info {u1 tag;u2 length;u1 bytes[length];
}

u1 bytes[length]; 是真正的数据length是数组存放最大字节数,理论上最大长度是2^16-1=65535

Java中的字符常量都是使用UTF8编码的,UTF8编码使用1~4个字节来表示具体的Unicode字符。所以有的字符占用一个字节,而我们平时所用的大部分中文都需要3个字节来存储。

//65534个字母,编译通过
String s1 = "aa..hh";//21845个中文”自“,编译通过
String s2 = "bb...黑虎呀";//一个英文字母d加上21845个中文”自“,编译失败
String s3 = "as..黑虎呀";

对于s1,一个字母d的UTF8编码占用一个字节,65534字母占用65534个字节,长度是65534,长度和存储都没超过限制,所以可以编译通过。

对于s2,一个中文占用3个字节,21845个正好占用65535个字节,而且字符串长度是21845,长度和存储也都没超过限制,所以可以编译通过。

对于s3,一个英文字母d加上21845个中文”自“占用65536个字节,超过了存储最大限制,编译失败。

运行时限制

String 运行时的限制主要体现在 String 的构造函数上。下面是 String 的一个构造函数:

public String(char value[], int offset, int count) {...
}

String内部是使用一个char数组来维护字符序列的,一个char占用两个字节。如果说String最大长度是2^31 -1的话,那么最大的字符串占用内存空间约等于4GB。

也就是说,我们需要有大于4GB的JVM运行内存才 行

  • 编译期的限制:字符串的UTF8编码值的字节数不能超过65535,字符串的长度不能超过65534;
  • 运行时限制:字符串的长度不能超过2^31-1,占用的内存数不能超过虚拟机能够提供的最大值。

2.Object常用方法有哪些?

Object常用方法有:toString()equals()hashCode()clone()等。

toString 默认输出内存地址, 重写的时候,打印对应返回的字符串,

equals 默认比较的是内存地址,如果要比较字符串我们需要比较对应的字符,我们重写eques 比较对应字符串

hashCode将与对象相关的信息映射成一个哈希值,默认的实现hashCode值是根据内存地址换算出来。

clone 复制一个对象的浅克隆对象,基本类型是不一样的,但是引用类型是同一份

3.讲讲深拷贝和浅拷贝?

浅拷贝:拷⻉对象和原始对象的引⽤类型引用同⼀个对象。

深拷贝:拷贝对象和原始对象的引用类型引用不同的对象。

4.两个对象的hashCode()相同,则 equals()是否也一定为 true?

equals与hashcode的关系:

  1. equals相等的两个对象,hashCode一定相等;

  2. hashCode不相等,一定能推出equals也不相等;

  3. hashCode相等,equals可能相等,也可能不等。

hashcode方法主要是用来提升对象比较的效率,先进行hashcode()的比较,如果不相同,那就不必在进行equals的比较,这样就大大减少了equals比较的次数,当比较对象的数量很大的时候能提升效率。

5.为什么重写 equals 时一定要重写 hashCode?

1.hashCode()方法
  hashCode()方法返回对象的哈希码(散列码)。哈希码是一个整数,用于在哈希表等数据结构中快速定位对象。
在Java中,哈希表(如 HashMap、HashSet 等)使用哈希码来存储和检索对象。hashCode()方法的主要作用是提高搜索、插入和删除等操作的效率。
在覆盖(override)hashCode()方法时,需要保证以下规则:

*如果两个对象通过equals()方法判断为相等,那么它们的hashCode()值必须相等。

*如果两个对象的hashCode()值相等,它们并不一定相等。
2.equals()方法
  equals()方法用于比较两个对象是否相等。在默认情况下,equals()方法比较的是对象的引用,即判断两个对象是否指向同一内存地址。
然而,很多时候我们需要自定义相等性判断的逻辑,因此可以覆盖equals()方法。

要注意的是,如果我们在类中覆盖了equals()方法,通常也需要同时覆盖hashCode()方法,以确保哈希表等数据结构能正确地处理对象

http://www.mnyf.cn/news/43733.html

相关文章:

  • 网页创意与设计50例泰州seo外包
  • 沈阳高端网站制作公司app下载注册量推广平台
  • 网站建设预算申请外贸接单平台哪个最好
  • 品牌网站建设h合肥整合营销的特点有哪些
  • 汉中市住建局建设厅网站官网宁波优化seo软件公司
  • 做网站业务员seo网站推广助理
  • 潍坊中企动力做的网站怎么样seo优化推广流程
  • 开公司如何做网站推广页面百度链接
  • 进行网站开发前 需要干什么真正免费的建站
  • 如何使用qq邮箱做网站百度权重高的发帖网站
  • 网站运营岗位职责描述电商培训机构排名前十
  • 查询数据的网站怎么做杭州百度推广公司有几家
  • 网站运营适合什么样的人做网站如何做优化排名
  • 怎么看网站是否被收录seo关键词优化如何
  • 酒业为什么做网站最新新闻头条
  • wordpress 七牛云 ssl泽成seo网站排名
  • 俱乐部网站php源码上海网站排名优化公司
  • 贵州建设厅网站厅长网站快速优化排名app
  • 企业网站是否可以做淘宝客网站推广哪家好
  • 用wang域名做购物网站怎么样网络营销咨询公司
  • 外贸西班牙语网站建设百度经验实用生活指南
  • 保险网站建设优缺点怎样优化标题关键词
  • 桂林做网站的公司有哪些青岛seo优化公司
  • 网站建设游戏宁波seo怎么做推广渠道
  • 漳州网站建设优化百度站长工具验证
  • wordpress 判断pc访问宁波seo在线优化方案公司
  • 做增员的保险网站湖南网站制作公司
  • 长春专业做网站公司排名网站建站模板
  • 有什么做房屋装修的网站网站快照优化公司
  • 做手机网站费用青岛网站制作公司