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

Java常用类

常用类

1.包

image-20250317171456816

2.String类

image-20250320173239785

image-20250320173900752

image-20250320173924668

3.String注意事项

  1. String是不可变字符串对象。
  2. 只要是以“ …. ”方式写出的字符串对象,会存储到字符串常量池,且相同内容的字符串只存储一份。
  3. 但通过new方式创建字符串对象,每new一次都会产生一个新的对象放在堆内存中。
  4. String s2 = s1 + "a"这段代码中s2存储到堆中而非字符串常量池中。String s3 = "a" + "b" + "c"这段代码存储到字符串常量池中,原因是编译器会将这段代码优化成String s3 = "abc"
  5. 如果拼接的结果调用intern()方法,返回值就在常量池中。

image-20250317202553432

image-20250317202725509

3.StringBuffer和StringBuilder

  1. String,StringBuffer,StringBuilder三者异同

    • String:不可变的字符串序列。底层用char型数组存储。
    • StringBuffer:可变的字符序列,线程安全,效率低。底层用char型数组存储。
    • StringBuilder:可变的字符序列,线程不安全,效率高。底层用char型数组存储。
  2. StringBuffer和StringBuilder常见方法:

    image-20250322153849816

4.日期

  1. System.currentTimeMillis()19700年1月1日到现在的毫秒数。

  2. image-20250322160717292

    • 如何实例化?java.sql.Date date = new java.sql.Date(1351453154L);

    • 如何转换?Date date = new Date();

      java.sql.Date date1 = new java.sql.Date(date.getTime());

  3. SimpleDateFormat的使用:

    • 格式化:将Date按指定格式格式化成String。

    • 解析:将String解析成Date。

    • image-20250322165724800

    • package com.zpz.exer1;
      
      import java.text.ParseException;
      import java.text.SimpleDateFormat;
      import java.util.Date;
      
      public class DateTimeTest {
          public static void main(String[] args) {
              String birth = "2005-02-20";
              SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
              try {
                  Date date = sdf.parse(birth);
                  System.out.println(date);
                  java.sql.Date sqlDate = new java.sql.Date(date.getTime());
                  System.out.println(sqlDate);
              } catch (ParseException e) {
                  throw new RuntimeException(e);
              }
          }
      }
      

5.Java比较器

package com.zpz.exer1;

import java.util.Arrays;
import java.util.Comparator;
import java.util.Date;

import static java.lang.Math.random;

public class ComparableTest {
    public static void main(String[] args) {
        Goods[] goods = new Goods[10];
        for (int i = 0; i < 10; i ++) {
            goods[i] = new Goods();
            goods[i].name = "a" + i;
            goods[i].price = 100 + random() * 100;
        }
//        Arrays.sort(goods);
//        System.out.println(Arrays.toString(goods));

        Arrays.sort(goods, new Comparator() {
            @Override
            public int compare(Object o1, Object o2) {
                if (o1 instanceof Goods && o2 instanceof Goods) {
                    Goods g1 = (Goods) o1;
                    Goods g2 = (Goods) o2;
                    if (g1.price > g2.price) {
                        return 1;
                    } else if(g1.price < g2.price) {
                        return -1;
                    } else {
                        return 0;
                    }
                }
                throw new ClassCastException();
            }
        });
        System.out.println(Arrays.toString(goods));

    }
}

class Goods implements Comparable {
    public String name;
    public double price;

    public Goods(String name, double price) {
        this.name = name;
        this.price = price;
    }

    public Goods() {}

    @Override
    public String toString() {
        return "Goods{" +
                "name='" + name + '\'' +
                ", price=" + price +
                '}';
    }

    @Override
    public int compareTo(Object o) {
        if (o instanceof Goods) {
            Goods good = (Goods)o;
            if (this.price > good.price) {
                return 1;
            } else if (this.price < good.price) {
                return -1;
            } else {
                return 0;
            }
        }
        throw new ClassCastException("类异常");
    }
}
  1. comparator类似c++中sort的Lambda表达式。
  2. comparable类似c++中struct中重载小于号。

6.System,Math,BigInteger,BigDecimal类

  1. BigInteger对应整型,BigDecimal对应浮点型。

http://www.kler.cn/a/597500.html

相关文章:

  • 使用Aspera高速上传文件到ncbi
  • Mac | Excel | 列数改为和行数一样用数字表示
  • 操作系统为ubantu的服务器上部署nginx软件基础步骤总结
  • 5(五)Jmeter监控服务器性能
  • 【机器学习】机器学习工程实战-第2章 项目开始前
  • 网络安全应急入门到实战
  • pytorch3d学习(五)——批量输出图片+对渲染器的位姿解读+npy文件解读
  • 图像回归评价的常用指标
  • 3. 轴指令(omron 机器自动化控制器)——>MC_ImmediateStop
  • 基于STC89C52的8255并行口拓展实验
  • Transformers x SwanLab:可视化NLP模型训练(2025最新版)
  • vue3:十一、主页面布局(优化页面跳转方式)
  • Android:蓝牙设置配套设备配对
  • 机器学习--DBSCAN聚类算法详解
  • 【空地协同异构机器人系统之无人机点云引导无人车实时避障技术研究】
  • 考研复习之队列
  • 反反爬虫技术指南:原理、策略与合规实践
  • k8s高可用集群安装
  • python写入excel多个sheet表 以及追加sheet表
  • leetcode1971.寻找图中是否存在路径