2023-05-18 题目

这篇具有很好参考价值的文章主要介绍了2023-05-18 题目。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

2023-05-18 题目

1、String 字符串

  • String 不是基本数据类型,且是不能被继承的,因为string类被final修饰
//源码
public final class String
    implements java.io.Serializable, Comparable<String>, CharSequence {}

常见题目:

public static void main(String[] args) {
        // a 为一个引用
        String a = new String("ab");
        // b为另一个引用,对象的内容一样
        String b = new String("ab");
        // 放在常量池中
        String aa = "ab";
        // 从常量池中查找
        String bb = "ab";
        // true
        System.out.println(aa == bb);
        // false,非同一对象
        System.out.println(a == b);
        // true
        System.out.println(a.equals(b));
        // false
        System.out.println(a == aa);
    }
    public static void main(String[] args) {
        String s = "helloWord";
        String s1 = "hello"+"Word";
        String s2 = "hello";
        String s3 = "Word";
        String s4 = s2+s3;
        String s5 = new String("helloWord");
        //true s是常量池的,s1(编译期已经组合在一起了)也指向常量池的同一个对象
        System.out.println(s == s1);
        //false Java在进行字符串拼接时,会生成新的字符串对象,s4指向的不在常量池了
        System.out.println(s == s4);
        //false Java在进行字符串拼接时,会生成新的字符串对象,s4指向的不在常量池了
        System.out.println(s1 == s4);
        //false s是常量池的,s5是new的,地址不一样
        System.out.println(s == s5);
    }

2、String、StringBuilder和StringBuffer

string: 不可变的,一旦被创建是不能被修改的,每次拼接字符串都是new了一个新的对象

stringBuilder: 可变的,线程不安全,执行效率高,适用于单线程的情况下,对字符串进行修改;

StringBuffer: 可变的,线程安全,执行效率稍低,适用于多线程的情况下,对字符串进行修改;

3、==和equals的区别

==:对于基本数据类型来说比较的是值的大小,对于引用类型来说比较的是地址是都相同

equals:对于没有重写object中的equlas的方法来说,==和equals在引用类型比较的时候,作用是一样的,对于string来说,equals就是比较两个字符串的内容是否相等

object中的equals源码:

public boolean equals(Object obj) {
return (this == obj);
}

4、重写hashCode()与 equals()

  • hashcode()简介:

hashcode()获取哈希码,也称为散列码,返回的是一个int整数,是Object中的一个native的本地方法,是使用c或者c++来实现的,将内存地址转换成一个整数返回;

public native int hashCode();
  • hashcode码的作用

hashSet如何检查重复值:当你把对象加入到hashSet中时,会先计算对象的hashCode的值来判断对象加入的位置,且会和其他已经存在的值的hashCode进行比较,如果没有一样的,则没有重复的项,如果有重复项,则需要比较equals是否相同,相同则不要加入进去,这样的话则减少了equals的次数,提高了执行的速度;

  • 如果两个对象相等,则hashCode一定也是相同的,两个对象相等的话,对两个对象分别调用equals方法方法都返回true,两个对象有相同的hashCode值,不一定相等的,所以说要是重写equals,则hashCode也需要覆盖的

  • 两个对象不相等,也可能存在相同的hashCode值

因为 hashCode() 所使用的杂凑算法也许刚好会让多个对象传回相同的杂凑值。越糟糕的杂凑算法越 容易碰撞,但这也与数据值域分布的特性有关(所谓碰撞也就是指的是不同的对象得到相同的 hashCode 。

所以 hashCode值只能用来缩小范围,而不是可以直接代表的一个对象的文章来源地址https://www.toymoban.com/news/detail-454961.html

到了这里,关于2023-05-18 题目的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • String(字符串)

    java.lang.String类代表字符串,Java程序中的所有字符串文字(例如“abc”)都为此类的对象。 字符串的内容是不会发生改变的,它的对象在创建后不能被更改。 String是Java定义好的一个类。定义在java.lang包中,所以使用的时候不需要导包。 Java程序中的所有字符串文字都被实为此

    2024年02月13日
    浏览(47)
  • String字符串

    直接创建 代码简单,节约内存 使用new创建 有new就会开辟一个新的小空间,地址值不同不会复用浪费空间 案例:用户登录 遍历字符串 统计字符个数 拼接字符串 字符串反转 金额转换 手机号屏蔽 敏感词替换 使用场景:1.字符串拼接。2、字符串反转 常用方法练习 对称字符串

    2024年02月16日
    浏览(54)
  • .Net 中实体类转换为XML字符串, 确保字符串头部是utf-8 不是utf-16

    使用 Utf8StringWriter 或类似的方法来确保在序列化过程中使用正确的编码。然而, Utf8StringWriter 不是.NET Core或.NET Standard库的一部分,因此你需要自己实现一个。 不过,有一种更简单的方法可以达到相同的效果,那就是使用 StringWriter 与 Encoding.GetEncoding(\\\"utf-8\\\") 结合,但这实际上

    2024年01月23日
    浏览(41)
  • 正则表达式中 “$” 并不是表示 “字符串结束

    作者:Seth Larson 译者:豌豆花下猫@Python猫 英文:Regex character “$” doesn\\\'t mean “end-of-string” 转载请保留作者及译者信息! 这篇文章写一写我最近在用 Python 的正则表达式模块( re )开发 CPython 的 SBOM 工具时发现的一个令人惊讶的行为。 如果用过正则表达式,你可能知道 ^

    2024年04月15日
    浏览(39)
  • 【算法第六天7.19】反转字符串,反转字符串||,剑指 Offer 05. 替换空格,反转字符串的单词, 左旋转字符串

    ================================================ 思路 :以中间为分界线,左右两个边界交换字符,依次向里收缩 思路 : 首先:字符串转化为字符数组 char[] res = s.toCharArray(); 最后:将数组再转回字符串 return new String(res); 1、循环以2k为单位, 2、在这个2k长的数组中进行反转,需要有首

    2024年02月16日
    浏览(64)
  • 【string题解 C++】字符串相乘 | 翻转字符串III:翻转单词

    目录 字符串相乘 题面 错误记录 Way1 拆分成“先乘后加” 思路 实现 时空复杂度分析 反思 Way2 用数组 思路 实现 时空复杂度分析 翻转字符串III:翻转字符串中的单词 题面 错误记录 思路1 遍历找单词 实现 思路2 暴力解法 实现 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平

    2024年02月07日
    浏览(62)
  • C# 字符串(String)

    C#基础学习入门系列- C# 字符串(String) C#字符串(String)是一种不可变的序列字符。任何对字符串的操作都会返回一个新的字符串。字符串在C#中是一个引用类型,使用System.String类表示。 字符串可以通过使用双引号或者@符号来创建。双引号用于创建普通字符串 ,例如: @符

    2024年01月21日
    浏览(56)
  • redis—String字符串

    目录 前言 1.字符串数据类型 2.常见命令 3.典型应用场景 字符串类型是Redis最基础的数据类型,关于字符串需要特别注意: 1)首先Redis中所有的键的类型都是字符串类型,而且其他几种数据结构也都是在字符串类似基础.上构建的,例如列表和集合的 元素类型是字符串类型,所以

    2024年02月02日
    浏览(49)
  • 字符串分割(split),将字符串按照指定字符进行分割。split(String regex)和split(String regex, int limit)

    一、 split(String regex) 字符串分割,将字符串按照指定字符进行分割,返回的是一个字符串数组。 原理:参数名称是 regex 表示的是以某个字符串进行字符分割。 实例1:根据空格切割 输出结果: 实例2:根据特殊字符进行“.”分割 输出结果: 二、 split(String regex, int limit) 字符

    2024年02月11日
    浏览(52)
  • Java Base64字符串与String字符串互转方法

    在使用String转Base64和Base64转String上有点小问题,特此记录。 结果: 也是跟上面差不多的思路,将Base64转为byte数组,再转为String

    2024年02月15日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包