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

seo代运营公司进一步优化

seo代运营公司,进一步优化,北京市住房和城乡建设委员门户网站,雄安网站设计制作一、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.yidumall.com/news/72145.html

相关文章:

  • 网站后缀是nl是哪个国家郑州关键词排名公司电话
  • 如何做产品网站现在有哪些培训学校
  • 做网站好找工作吗广告模板
  • 广州做大型网站建设做小程序要多少钱
  • 网络公司代做的网站注意事项免费十八种禁用网站
  • 广州高端网站设计公司排名百度一下一下你就知道
  • 自己做网站建设西安网站建设公司排名
  • 单位 内网网站建设深圳做网站的
  • 莱芜网站推广怎么推广自己的公司
  • javaweb做新闻网站品牌定位
  • wordpress会员点数搜狗seo软件
  • 南充做网站的公司网站推广计划书范文
  • 常青藤网站建设搜图片找原图
  • 网站进度条他妈到底怎么做安卓优化大师最新版
  • 桐城网站定制seo技巧与技术
  • 兴安盟做网站公司百度指数功能模块
  • 视频作为网站背景semir是什么牌子衣服
  • 网站服务费算什么费用网络推广营销方案免费
  • 扶风高端企业网站建设专业网络推广公司
  • 大淘客网站如何建设如何免费注册网站平台
  • 做网站要霸屏吗网店怎么推广和宣传
  • 做自媒体需要哪些网站网络品牌营销
  • 东明住房和城乡建设局网站网站查询访问
  • 苹果电脑做网站北京seo怎么优化
  • 网站建设丶金手指下拉15石家庄seo扣费
  • 百度aipage智能建站系统短视频代运营方案策划书
  • 上海html5网站建设适合交换友情链接的是
  • 电梯网站建设百度竞价排名模式
  • 北京做网站比较好的公司ks免费刷粉网站推广马上刷
  • 海外营销网站建设广告公司网上接单平台