zoukankan      html  css  js  c++  java
  • Java中的常用类:包装类、String、StringBuffer、StringBuilder、Math、System、Arrays、BigInteger、BigDecimal、Data、Calendar

    一、包装类 √

    二、String类 ★

    三、StringBuffer和StringBuilder类 ★

    四、Math类

    五、System类

    六、Arrays类

    七、BigInteger类和BigDecimal类

    八、Date日期类、Calendar日历类以及新的日期

    一、包装类

    1.概念:为8大基本数据类型对应的提供了引用数据类型,则这些引用数据类型称为包装类

    2.数据类型

    1)基本数据类型

    2)引用数据类型

    • 数组
    • 用class定义的
    • 用interface定义的

    3.需求如

    ① 获取int类型的最大值

    ② 将某个整数转换成十六进制形式

    int i=10;

    Integer i2=new Integer(i);

    4.分类

    byte———————————— Byte
    short———————————— Short
    int————————————— Integer
    long———————————— Long
    float———————————— Float
    double——————————— Double
    char———————————— Character
    boolean——————————  Boolean

    5.基本类型和包装类型之间的转换

    jdk5.0之前:

    手动装箱

    方式一:Integer i = new Integer(10);

    方式二:Integer i2 = Integer.valueOf(10);

    手动拆箱

    int j = i.intValue();

    jdk5.0之后:

    自动装箱:

    Integer i = 10;

    自动拆箱:

    int j = i; 

    6.包装类型和String类型之间的转换

    包装类型————>String类型

    Integer i = 10;
    //方式1:
    String s1= i.toString();
    
    //方式2:
    String s2 = String.valueOf(i);
    
    //方式3:
    String s3 = i+"";
    
    System.out.println(s3);

    String————>包装类

    //方式1:
    Integer j = new Integer(s1);
    
    //方式2:
    Integer j2 = Integer.valueOf(s2);

    7.基本类型和String类型之间的转换

    基本类型————>String类型

    int i = 10;
    //方式1:
    String s=i+"";
    //方式2:
    String s2 = String.valueOf(i);

    String————>基本类型(除了char类型)

    int j = Integer.parseInt(s);
    
    char c = s.charAt(0);

    8.包装类型中的常见API

    1)通用的方法:

    valueOf:将String类型或基本类型转换成对应的包装类型
    parseXX:将String类型转换成对应的基本类型
    xxValue:将包装类型转换成对应的基本类型

    2)Character类的常见方法:
    toUpperCase
    toLowerCase
    isUpperCase
    isLowerCase
    isDigit
    isLetter
    isWhiteSpace

    二、String类

    1.理解

    String类用于保存一组字符串序列

    "john"、""都相当于字符串常量对象

    2.创建对象

    方式1:直接赋值

    String s = "hello";

    方式2:通过调用构造器

    String s = new String("hello");

    【面试题】String两种创建对象方式的区别

    方式一:先去常量池查看是否有“hello”字符序列,如果没有,则创建,如果有直接引用该地址,s指向的是常量池的对象

    方式二:需要在堆中创建对象,该对象维护了一个value属性,value指向常量池的“hello”,如果常量池中没有“hello”,则创建,再指向;如果已经有了,则直接用value指向
    s指向的是堆中的对象

    3.String类的常见方法

    方法名 用途
     length   获取字符个数
     charAt  获取指定索引处的字符
     toUpperCase  转大写
     toLowerCase  转小写
     indexOf  获取字符或字符串第一次出现的索引,如果找不到返回-1
     lastIndexOf  获取字符或字符串最后一次出现的索引,如果找不到返回-1
     startsWith  判断是否以xx开头
     endsWith  判断是否以XX结尾
     regionMatches  判断是否某范围内的子串一致
     contains  判断子串是否存在,返回true|false
     compareTo  比较两个字符串大小
     equals/equalsIgnoreCase  判断字符串内容是否相等
     substring  截取子串
     replace/replaceAll  替换
     trim  去前后空格
     split  拆分
     concat  拼接字符串
     toCharArray  转换成字符数组

    三、StringBuffer类

    1.String类和StringBuffer的对比

    相同点:都用于保存字符串,都可以对字符串进行一些增删或其他处理的操作

    不同点:

    • String类用于保存字符串常量
    • StringBuffer类用于保存字符串变量

    2.StringBuffer类创建对象

    只能通过调用构造器创建对象!

    new StringBuffer();      //构造一个初始容量为16的char数组
    new StringBuffer(string);   //构造一个初始容量为string.length+16的数组,并初始化值为string
    new StringBuffer(capacity); //构造一个初始容量为capacity的char数组

    3.StringBuffer类和String类之间的转换

    1)StringBuffer——>String

    StringBuffer buffer = new StringBuffer("john");
    
    //方式一:
    String s1 = buffer.toString();
    
    //方式二:
    String s2 = new String(buffer);

    2)String————>StringBuffer

    String s = "鸠摩智";
    //方式一:
    StringBuffer b1 = new StringBuffer(s);
    
    //方式二:
    StringBuffer b2 = new StringBuffer();
    b2.append(s);

    4.StringBuffer类的方法

    增 append

    删 delete

    改 replace

    查 indexOf/lastIndexOf

    插入 insert

    反转 reverse

    长度 length 

    5.StringBuffer和StringBuilder的对比

      共同点 版本 线程安全 (同步)效率
    StringBuffer 保存可变字符串 安全 较低
    StringBuilder 保存可变字符串 不安全 较高
    • 线程安全性

    String 中的对象是不可变的,也就可以理解为常量,线程安全。AbstractStringBuilder 是 StringBuilder 与 StringBuffer 的公共父类,定义了一些字符串的基本操作,如 expandCapacity、append、insert、indexOf 等公共方法。StringBuffer 对方法加了同步锁或者对调用的方法加了同步锁,所以是线程安全的。StringBuilder 并没有对方法进行加同步锁,所以是非线程安全的。 

    • 性能

    每次对 String 类型进行改变的时候,都会生成一个新的 String 对象,然后将指针指向新的 String 对象。StringBuffer 每次都会对 StringBuffer 对象本身进行操作,而不是生成新的对象并改变对象引用。相同情况下使用 StringBuilder 相比使用 StringBuffer 仅能获得 10%~15% 左右的性能提升,但却要冒多线程不安全的风险。

    • 对于三者使用的总结:
    1. 操作少量的数据: 适用String
    2. 单线程操作字符串缓冲区下操作大量数据: 适用StringBuilder
    3. 多线程操作字符串缓冲区下操作大量数据: 适用StringBuffer

    (效率:StringBuilder>StringBuffer>String)

    四、Math类

    包含一系列的用于数学运算的静态方法。

    1.常见方法

    方法名 作用
    sqrt 求开方
    pow 求幂
    ceil 向上取整
    floor 向下取整
    round 四舍五入,返回整型
    abs 绝对值
    random 随机数
    max 最大值
    min 最小值

    五、Arrays类

    包含一系列用于数组管理和操作的方法

    常见方法:

    sort(T[]) :对数组的元素进行自然排序,要求元素必须实现了Comparable

    sort(T[],Comparator):对数组的元素进行定制排序,元素本身可以不实现Comparable

    binarySearch(T[],key):对数组通过二分搜索法进行查找,如果key找到了,返回索引,否则返回负数。要求:要查找的数组必须提前排好序!

    copyOf(T[],length):复制数组的元素

    equals(T[],T[]):判断两个数组的内容是否相等

    fill(T[],key):填充数组的各元素值为key

    toString():将数组各元素进行拼接,返回String

    六、System类

    常见方法:

    arrayCopy 复制数组元素,一般使用Arrays.copyOf代替
    exit:退出程序
    currentTimeMillens:获取当前时间距离1970-1-1的毫秒数。
    gc:运行垃圾回收器

    七、BigDecimal和BigInteger类

    常见方法:

    add 加法
    substract减法
    multiply乘法
    divide除法,注意:可以添加参数2设置四舍五入模式

    八、日期类

    1.第一代日期

    java.util.Date类
    java.text.SimpleDateFormat类

    2.第二代日期
    java.util.Calendar类

    3.第三代日期(jdk8新特性)
    LocalDate|LocalTime|LocalDateTime类:类似于Calendar
    Instant:类似于Date
    DateTimeFormatter:类似于SimpleDateFormat

  • 相关阅读:
    Shodan在渗透测试及漏洞挖掘中的一些用法
    QUdpSocket 简单用法
    用QT操作数据库(本周学的)
    Qt使用UDp通信、套接字socket的成员函数bind()的作用
    ppm的含义
    数字的补数
    两数之和
    C++中的最大整数最小整数
    如何使用dockerfile将jar包生成镜像
    python3解决 json.dumps中文乱码
  • 原文地址:https://www.cnblogs.com/MWCloud/p/11223514.html
Copyright © 2011-2022 走看看