javase 中的常用API 和 常用类

61 阅读2分钟

4.16 复习回顾

== 和 equals 的区别

= = : 比较对象时 比较的是”地址值“ 比较 基本数据类型时比较的是 数值

equals: 适用于对象

public void test02(){
    Person p = new Person("张三",20);
    Person p1 = new Person("张三",20);
​
    boolean equals = p.equals(p1);
    System.out.println("equals = " + equals);
​
}

注意 : 可以重写 equals 方法 重写前比较的还是”地址值“,重写后比较的是 属性 重写快捷键 alt+insert

@Override
public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;
    Person person = (Person) o;
    return age == person.age && Objects.equals(name, person.name);
}

String 类 ------字符串

String类 字符串类 位于java.long 包下

特性:

  1. String 是不可变对象 底层采用 final char[];
  2. 位于 java.long 使用时不需要导包
  3. .public final class String 不能有子类
  4. 只要是双引号内容包裹就是一个字符串对象
  5. 字符串对象 一旦创建创建成功就不会再开辟额外重复的空间 存在字符串常量池内

如何构建字符串对象?

1." "
2. 拼接
3.方法
4.构造器

String 的方法

1.concat 拼接

public void test() {
    String s = "ABC";
    String s1 = "牛顿";
    //  s.concat(s2) 拼接
    String s3 = s.concat(s1);
    System.out.println(s3);
​
}

2.equals 比较字符串是否相同 equalsIgnoreCase忽略大小写比较字符串是否相同

public void test02(){
    String s = "asdf";
    String s1 = "asdf";
​
    boolean equals = s.equals(s1);
    System.out.println(equals);
​
}
boolean b = s.equalsIgnoreCase(s1);
System.out.println(b);

3.compareTo 比较数值(编码值)大小 compareToIgnoreCase 不区分大小写比较大小

s>s1--------输出一个大于0的正整数

s<s1--------输出一个小于0的负整数

s=s1--------输出0

String s = "ABC";
String s1 = "abc";
​
int i = s.compareTo(s1);
System.out.println("i = " + i);
int i1 = s.compareToIgnoreCase(s1);
System.out.println("i1 = " + i1);

image-20230416133450977

4.trim 去掉字符串两端的空白

public void test04(){
    String s= " a b c ";
    String s1= " a b c ";
    System.out.println("s.trim() = " + s.trim());
    System.out.println("s1 =       " + s1);

}

5.contains 检验字符串是否 出现过

public void test05(){

    String s = "ABCDEF";
    boolean cd = s.contains("CD");
    System.out.println("cd = " + cd);
     // 输出 : ture

}

6.indexOf 返回字符串出现的第一次下标 lastIndeOF 返回字符串最后一次出现的下标

public void test06(){
    String s = "ABCDEFADEFGBCD";
    int i = s.indexOf("A");
    System.out.println("i = " + i); //i = 0
    int a = s.lastIndexOf("A");
    System.out.println("a = " + a); //a = 6
}

7.isEmpty 判断字符串是否为空 length返回字符串的长度

public void test07(){
    String s = "";
    boolean empty = s.isEmpty();
    System.out.println("empty = " + empty); // empty = true
    String s1 = "123456";
    int length = s1.length();
    System.out.println("length = " + length); // length = 6

}

8.toUpperCase 转为大写 toLowerCase 转为小写

public void test08(){
    String s = "asdfASDF";
    System.out.println("s.toUpperCase() = " + s.toUpperCase());  // s.toUpperCase() = ASDFASDF
    System.out.println("s.toLowerCase() = " + s.toLowerCase());  // s.toLowerCase() = asdfasdf
}

9.substring 截取

范围 左开右闭

public void test09() {
    String s = "abcdefg";
    System.out.println("s.substring(2) = " + s.substring(2)); //s.substring(2) = cdefg
    System.out.println("s.substring(2,5) = " + s.substring(2, 5)); // s.substring(2,5) = cde
}

10.chatAt() 获取字符下标

  public void test10(){
        String s = "asdfg";
        System.out.println(s.charAt(2)); // d
    }
}

11. toCharArray 将字符串转为char 数组

public void test11(){
    String s = "asdfgh";
    System.out.println("s.toCharArray() = " + s.toCharArray()); //s.toCharArray() = [C@5b80350b
}

将数组转为 字符串

char[] arr = {'中','国','你','好'};

String s1 = new String(arr);
System.out.println("s1 = " + s1);  //中国你好

12.startsWith 判断是否以字符串开头 endsWith 判断是否以字符串结尾

public void test12(){
    String s = "搞搞灯笼天上挂";
    System.out.println("s.startsWith("搞搞") = " + s.startsWith("搞")); // ture 
    
    System.out.println("s.endsWith("天上挂") = " + s.endsWith("天上挂")); // ture
}

13.raplace 将旧的字符替换为新的字符

public void test13(){
    String s= "你是我的眼";
    System.out.println(s.replace("的", "大傻瓜")); // 你是我大傻瓜眼

}

14.split 替换

从1 分割 最终形成数组

public void test14(){
    String s = "a1b1c1d";
    String[] arr = s.split("1");
    //Arrays.toString(arr) = [a, b, c, d]
    System.out.println("Arrays.toString(arr) = " + Arrays.toString(arr));

}

StringBuilder StringBuffer

拼接多的时候一定要用 这两个 效率很高

StringBuilder,StringBuffer 可变字符对象
      char[] value = new char[16];

     区别:
        同:
          1.方法相同
          2.有共同的父亲 AbstractStringBuilder
        不同:
           1.StringBuffer 线程安全    效率低
             StringBuilder 线程不安全 效率高
           2.  StringBuffer jdk1.0
               StringBuilder jdk1.5

包装 类型


为什么使用包装类型?
    因为某些场景不能使用基本数据类型
      泛型
      形参是引用类型时  不能传入基本类型数据
包装类型:对基本数据类型的包装
      byte       Byte
      short      Short
      int        Integer
      long       Long
      float      Float
      double     Double
      boolean    Boolean
      char       Character
装箱与拆箱
    装箱: 将基本数据类型 ---> 包装类型
          自动装箱: 直接将基本数据类型的值赋值给包装类型
          Integer i = 10;  Integer.vauleOf(10);
    拆箱:将包装类型 ---> 基本数据类型
          自动拆箱: 将包装类型的值赋值给基本数据类型
          Integer i1 = new Integer(10);
             int m = i1;  i1.intValue();
基本数据类型与字符串的转换
     基本数据类型---> 字符串
            String.valueOf(基本数据类型的值);
     字符串---> 基本数据类型
             对应的包装类型.parse基本数据类型首字母大写(字符串)
             Integer.parseInt()
             Double.parseDouble()
             Boolean.parseBoolean()
             将字符串-->char
             "字符串".charAt(下标)

 

缓冲区

包装类缓存对象
Byte-128~127
Short-128~127
Integer-128~127
Long-128~127
Float没有
Double没有
Character0~127
Booleantrue和false

整形的缓冲区是 -128---127

浮点型 没有缓冲区

字符型 缓冲区 0 ----127

布尔型缓冲区 true 和 false