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

购物网站功能报价建站有哪些公司

购物网站功能报价,建站有哪些公司,徐州企业网站建设公司,有建设银行信用卡怎么登陆不了网站一、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/58711/

相关文章:

  • 建一个网站的手机电脑版网站被k是什么表现
  • 池州网站建设兼职设计网页布局的常用方法有哪三种
  • 网站备案收费幕布广州微信网站建设效果
  • 重庆品牌服装网站建设网站开发员名称是什么
  • 高清logo网站工程建设动态管理网站
  • 怎么做pdf电子书下载网站磁力网站怎么做
  • 英文网站 模板电商搜索关键词
  • 毕业设计都是做网站吗深圳网站平面设计
  • 金耀网站建设wordpress首页表单
  • 淄博企业网站建设哪家好net网站开发技术方案
  • 本溪建设网站长沙市网站建设推广
  • 夸克建站系统源码下载建设工程教育app
  • 如何做网站淘宝客岷县城乡建设局网站
  • 杭州的网站设计怎样备份wordpress
  • 北京建设网站百度网站的域名是什么
  • 网站模板管理系统哪里能找到免费网站
  • 垂直网站建设方案书兰州seo安安网站建设
  • 网站建设与规划实训总结h5类作品是什么意思
  • 网站中的图片必须用 做吗不能访问子目录的网站
  • 惠州市网站开发宜昌网站开发公司
  • 用腾讯云做网站一般公司做网站多少钱
  • 凡科建站手机版登录网站建设项目管理论文
  • 济南网站建设询问企优互联价低免费商品列表网页模板源代码
  • mysql 学习网站怎么做优惠券网站
  • 上海网站建设sheji021合肥专业手机网站制作价格
  • 包头焦点网站建设wordpress文章索引
  • 网站哪里备案有区别么网站建设项目进展情况
  • 连锁加盟网站制作国外做贸易网站
  • 应该如何做营销型网站手机端html编辑器
  • 贵州省住房与城乡建设部网站视频素材库网站免费