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

官方网站建设公司wordpress自定义应用

官方网站建设公司,wordpress自定义应用,实训百度搜索引擎的总结,安卓开发平台一、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.yayakq.cn/news/876896/

相关文章:

  • 资阳市住房和城乡建设局网站银川网站设计联系电话
  • 网站建设在阿里云电子商务网站开发的内容
  • 优秀的手机网站做淘宝店和做网站
  • 北京网站建设模板下载社保代缴网站开发
  • 网站设计建设公司排行时光轴 网站
  • 江西岳顶建设工程有限公司网站网站服务器开发
  • 网页搜索多个关键词长春网站推广优化
  • 湖南省住房建设厅网站希爱力跟万艾可哪个猛
  • 自适应网站什么意思高埗镇网站建设公司
  • 网站建设好了怎么弄手机网站建设天津外贸网站建设公司
  • 查询网站域名重庆seo公司排名
  • 搜索网站存在的关键字网站开发的地图接口
  • wordpress自动加内链萌新seo
  • 如何把网站做好最近最新手机中文大全8
  • 毕业设计网站设计说明书湖南网站建设 搜搜磐石网络
  • 后台网站开发文档建设局网站项目负责人资质要求
  • 检察院门户网站建设成效凡科董事长
  • 2017网站建设网站改版 报价
  • 华为公司电子商务网站建设策划书免费的素材网站推荐
  • 电商网站方案建设有了自己的网站怎么赚钱
  • 怎么做点击图片进网站手机开网店
  • 旅游网站设计说明软装公司网站建设
  • 北京网站建设价钱上海网站建设到诺然
  • win2008 iis建网站靳刘高设计公司官网
  • 企业网站建设之域名篇金山区网站建设
  • 南京网站专业制作不属于网络营销的推广手段是什么
  • 智能建站软件邢台做网站动态
  • 网站建设征求意见表深圳建设厅官方网站
  • 做微信广告网站wordpress结合cms
  • 成都创建公司网站手机网站建设服务商