• Java常用类


    字符串面试题

    1.下面代码中共生成了几个对象

    String s = new String("333");

    答:两个,因为生成了一个“333”在方法区里的常量池中,生成了new出来的对象在堆内存中,还有一个s是在栈内存中的,但是他不属于对象,因为他不会有回收机制,他是属于线程的。

    2.加上String s2 = new String("333");

    答:三个对象,因为333是同一个对象,new出来的对象是新的一个对象


    String,StringBuffer,StringBuilder

    String是不可变字符串

    StringBuffer和StringBuilder是可变字符串

    可变字符串主要用于大量的字符串拼接的时候。

    StringBuffer:可变字符串,是线程安全的,但是效率比StringBuilder效率低,适用于多线程

    扩容机制:

    1.原长度*2+2

    2.原长度+待添加字符长度

    StringBuilder:可变字符串,线程不安全,用得较多,效率比StringBuffer高,适用于单线程

    常用方法:

    str.append(“hello”);

    str.reverse();

    面试题:String,StringBuffer,StringBuilder的联系区别

    ①三者都是用于操作字符串的

    ②String是不可变字符串,StringBuffer和StringBuilder是可变字符串

    ③String内置的char不能被改变,StringBuffer和StringBuilder可以被改变,且扩容机制默认是原长度*2+2

    ④StringBuffer是线程安全的(方法有同步关键字synchronized),StringBuilder是线程不安全的


    包装类(基本数据类型的引用数据类型)

    有Byte,Short,Integer,Long,Float,Double,Character,Boolean

    自动装箱:从基本类型转换为对应的包装类对象

    自动拆箱:从包装类对象转换为对应的基本类型

    常用API

    ①字符串转成基本类型(character没有)

    int a = Integer.parseInteger("123");

    其他都是相同的

    ②包装类转基本类型(1.自动拆箱 2.xxxValue)

    Double d = 6.0;//包装类

    double d2 = d.doubleValue();

    ③int类型转二进制

    String string1 = Integer.toBinaryString(8);

    int类型转八进制

    String string2 = Integer.toOctalString(8);

    int类型转十六进制

    String sting3 = Integer.toHexString(14);


    二、BigInteger类(比long还大的类)

    BigInteger b1 = new BigInteger("200000000000000000000000000000000");

    BigInteger b2 = new BigInteger("200000000000000000000000000000000");

    ①相加

    System.out.println(b1.add(b2));

    ②相减

    System.out.println(b1.substract(b2));

    ③相乘

    System.out.println(b1.multiply(b2));

    ④相除

    System.out.println(b1.divide(b2));

    三、BigDecimal类(精确计算小数)因为正常计算可能就精度丢失

    方法跟上面的一样

    四、DecimalFormat:用于格式化输出数字

    ①对3.1415926保留两位小数输出

    System.out.println(new DecimalFormat("#.##").format(3.1415926));

    ②对3.1415926保留正实数输出

    System.out.println(new DecimalFormat("#").format(23.1415926));//只写一个#就是取整

    ③对3.14保留4位小数

    System.out.println(new DecimalFormat("0.0000").format(3.14));

    ④对31415926用科学计数法进行表示,保留一位整数  (3.1415926E7)

    System.out.println(new DecimalFormat("0.0000000E0").format(31415926));

    ⑤百分比 12-->1200%

    System.out.println(new DecimalFormat("#%").format(12));

    ⑥1000000--->1,000,000

    System.out.println(new DecimalFormat("###,###").format(10000000));//三个一分割 后面多少都可以

    ⑦嵌入文本 1000--->1000RMB

    System.out.println(new DecimalFormat("#RMB").format(1000));


    枚举:

    enum 枚举名称{

            枚举常量,枚举常量,枚举常量.....

    }


    hashcode

    规则1:同一对象在程序同一执行时间内无论调用多少次,都返回相同的hashcode值

    规则2:两对象equals方法相等,hashcode必须也相等

    规则3:两对象equals方法不相等,hashcode也可能相等

    哈希冲突:两不同对象的hashcode值相同即为哈希冲突,一般在使用hashmap时会出现hash冲突

    面试题:

    1.重写equals方法需要重写hashcode方法吗?

    需要(规则2)

    2.重写hashcode方法需要重写equals方法吗?

    不需要

    每日一句,加油打气!

    压力是不可避免的,失眠是无可奈何的,所以不要着急,不要烦躁,心平气和地接受。躲不开就接着,晚上睡不着那就白天睡。

    笔者是一个不会写代码的菜鸡程序员,但是希望能每天进步一点点,也能够靠着自己的努力能不断完善自我,天道酬勤!

  • 相关阅读:
    H5点击复制功能 兼容安卓、IOS
    Mybatis获取自增主键
    【web渗透】SSRF漏洞超详细讲解
    footer置于页面最底部
    HTTP介绍、原理
    ElasticSearch 04 -- 集群
    Python优缺点总结
    大型化工企业数字化转型建议
    redis学习笔记
    一道小学一年级数学题,国产大模型全军覆没
  • 原文地址:https://blog.csdn.net/qq_60154877/article/details/126004255