常用类

常用类

Object类

  • 超类、基类、所有类的直接或间接父类,位于继承树的最顶层。
  • 任何类,如没有书写extends显示继承某个类,都默认直接继承object类,否则为间接继承。
  • object类中所定义的方式,是所有对象都具备的方法。
  • object类型可以储存任何对象。
    • 作为参数,可接受任何对象。
    • 作为返回值,可返回任何对象。

getClass()方法

  • public final Class<?> getClass() {}
  • 返回引用中存储的实际对象类型
  • 应用:通常用于判断两个引用中实际存储对象类型是否一致

hashCode()方法

  • public int hashCode(){}
  • 返回该对象的哈希码值
  • 哈希值根据对象的地址或字符串或数字使用hash算法计算出来的int类型的数值
  • 一般情况下相同对象返回相同哈希码

toString()方法

  • public String toString(){}
  • 返回该对象的字符串表示(表现形式)
  • 可以根据程序需求覆盖该方法,如:展示对象各个属性值

equals()方法

  • public boolean equals(Object obj){}
  • 默认实现为(this == obj),比较两个对象地址是否相同
  • 可进行覆盖,比较两个对象的内容是否相同

finalize()方法

  • 当对象被判定为垃圾对象时,由jvm自动调用此方法,用以标记垃圾对象,进入回收队列。
  • 垃圾对象:没有有效引用指向此对象时,为垃圾对象。
  • 垃圾回收:由Gc销毁垃圾对象,释放数据存储空间。
  • 自动回收机制:jvm的内存耗尽,一次性回收所有垃圾对象。
  • 手动回收机制:使用System.gc();通知jvm执行垃圾回收。

包装类

基本数据类型所对应的引用数据类型

object类可统一所有数据,包装类的默认值是null

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

类型转换与装箱,拆箱

装箱:把基本数据类型转换引用数据类型。

拆箱:把引用数据类型转换成基本数据类型。

jdk1.5之前:

package com.xiao;

public class Demo07 {
    public static void main(String[] args) {
        int num = 13;
        //装箱
        Integer integer = new Integer(num);
        Integer integer1 = Integer.valueOf(num);
        //拆箱
        Integer integer2 = new Integer(12);
        int num2 = integer2.intValue();
    }
}

jdk1.5之后自动装箱、拆箱:

package com.xiao;

public class Demo07 {
    public static void main(String[] args) {
//        int num = 13;
//        //装箱
//        Integer integer = new Integer(num);
//        Integer integer1 = Integer.valueOf(num);
//        //拆箱
//        Integer integer2 = new Integer(12);
//        int num2 = integer2.intValue();
        int age = 30;
        //自动装箱
        Integer integer= age;
        //自动拆箱
        int age2 = integer;
    }
}

基本类型和字符串之间的转换

package com.xiao;

public class Demo07 {
    public static void main(String[] args) {
        //1,基本类型转换成字符型
        int n1=100;
        //使用+号
        String s1 = n1+" ";
        //使用Integer中的toString()方法
        String s2=Integer.toString(n1);
        System.out.println(s1);
        System.out.println(s2);

        //2,字符串转换成基本数据类型
        String str = "150";
        //使用Integer.parsxxx();
        int n2 = Integer.parseInt(str);
        System.out.println(n2);

        //布尔类型专程基本类型,"true"-->true  不是"true"--->false
        String str2 = "true";
        boolean b1=Boolean.parseBoolean(str2);
        System.out.println(b1);

    }
}

integer缓冲区

整数缓冲区:

  • java预选创建了256个常用的整数包装类型对象。-128~127

  • package com.xiao;
    
    public class Demo07 {
        public static void main(String[] args) {
            Integer integer1 = new Integer(100);
            Integer integer2 = new Integer(100);
            System.out.println(integer1 == integer2);
    
            Integer integer3=Integer.valueOf(100);
            Integer integer4=Integer.valueOf(100);
            System.out.println(integer3==integer4);
    
            Integer integer5=Integer.valueOf(200);
            Integer integer6=Integer.valueOf(200);
            System.out.println(integer5==integer6);
        }
    }
    

String类

string

  • 字符串常量,创建之后就不可以改变。
  • 字符串字面值存储在字符池中,可以共享。
  • String s = "hello";产生一个对象,字符串池中存储。
  • String s = new String("hello");//产生两个对象,堆、池各存储一个。
package com.xiao;

public class Demo07 {
    public static void main(String[] args) {
        String name = "zhangsan";//zhangsan常量储存在字符串池中
        name = "hello";//"hello"赋值给name变量,给字符串赋值时,并没有修改数据,而是重新定义一个
        String name2 = "hello";//给name2赋值,是去常量池中找有没有hello,有就赋值,没有就重新创建一个

        //演示字符串的另一种创建方式
        String str= new String("java是最好的编程语言");
        String str2= new String("java是最好的编程语言");
        System.out.println(str==str2);
        System.out.println(str.equals(str2));
    }
}

常用方法

  • public in length();返回字符串的长度
  • public char charAt(int index):根据下标获取字符
  • public boolean contains(String str): 判断当前字符串中是否包含str
package com.xiao;

public class Demo07 {
    public static void main(String[] args) {
        //length();返回字符串的长度
        //charAt(int index);返回某个未知的字符
        //contains(String str);判断是否包换某个字符串
        String comtent = "java是世界上最好的编程语言";
        System.out.println(comtent.length());
        System.out.println(comtent.charAt(comtent.length()-1));
        System.out.println(comtent.contains("java"));
        System.out.println(comtent.contains("1111"));
    }
}
  • public char[] toCharArray():将字符串转换成数组
  • public int indexOf(String str):查找str首次出现的下标,存在,则返回改下标,不存在,则返回-1
  • public int lastIndexOf(String str):查找字符串在当前字符串中最后一次出现的下标索引。
package com.xiao;

import java.util.Arrays;

public class Demo07 {
    public static void main(String[] args) {
        // toCharArray():将字符串转换成数组
        //indexOf(String str):查找str首次出现的下标,存在,则返回改下标,不存在,则返回-1
        //lastIndexOf(String str):查找字符串在当前字符串中最后一次出现的下标索引。
        String content = "java是世界上最好的编程java语言java";
        System.out.println(Arrays.toString(content.toCharArray()));
        System.out.println(content.indexOf("java"));
        System.out.println(content.indexOf("java",4));
        System.out.println(content.lastIndexOf("java"));//从最后开始找
    }
}
  • public String trim():去掉字符串前后的空格。
  • public String toUpperCase():将小写转成大写。
  • public boolean enWith(String str):判断字符串是否以str结尾。
package com.xiao;

import java.util.Arrays;
import java.util.Locale;

public class Demo07 {
    public static void main(String[] args) {
        //trim():去掉字符串前后的空格
        //toUpperCase():将小写转成大写
        //enWith(String str):判断字符串是否以str结尾
        String content2 = "  hello world";
        System.out.println(content2.trim());
        System.out.println(content2.toUpperCase());
        System.out.println(content2.toLowerCase());

        String filename = "hello.java";
        System.out.println(filename.endsWith("java"));
        System.out.println(filename.startsWith("hello"));
    }
}
  • public String replace(char oidChar,char newChar):将旧字符串替换成新字符串

  • public String[] split(String str):根据str做拆分。

  • package com.xiao;
    
    import java.util.Arrays;
    import java.util.Locale;
    
    public class Demo07 {
        public static void main(String[] args) {
            //replace(char old,char new);用新的字符串替换成旧的字符串
            //split();对字符进行拆分
            String content = "hello.java";
            System.out.println(content.replace("java", "php"));
    
            String say = "java is the best   programing language,java xiang";
            String[] arr = say.split("[ ,]+");
            System.out.println(arr.length);
            for (String string: arr) {
                System.out.println(string);
            }
        }
    }
    
  • 忽略大小写equalsIgnoreCase

  • compare()比较字符串大小

package com.xiao;

import java.util.Arrays;
import java.util.Locale;

public class Demo07 {
    public static void main(String[] args) {
        //补充两个方法equals,compare()比较大小
        String s1 = "hello";
        String s2 = "Hello";
        System.out.println(s1.equalsIgnoreCase(s2));

        String s3 = "abc";
        String s4 = "xyz";
        System.out.println(s3.compareTo(s4));//比较字符串大小

        String s5 = "abc";
        String s6 = "abcxyz";
        System.out.println(s5.compareTo(s6));//比长度
    }
}

String 案例

package com.xiao;

import java.util.Arrays;
import java.util.Locale;

public class Demo07 {
    public static void main(String[] args) {
        String string = "this is a text";
        //1,将string中的单词单独取出来
        String[] arr = string.split(" ");
        for (String s : arr
             ) {
            System.out.println(s);
        }

        //2,将string中的text替换为practice
        String str2 = string.replace("text","practice");
        System.out.println(str2);

        //3,在text前面插入一个easy
        String str =string.replace("text","easy text");
        System.out.println(str);

        //4,将每个单体首字母大写
        for (int i = 0; i<arr.length;i++){
            char first=arr[i].charAt(0);
            //把第一个字符转成大写
            char Upper=Character.toUpperCase(first);

            String sss = Upper+arr[i].substring(1);
            System.out.println(sss);
        }
    }
}

可变字符串

StringBuffer:可变长字符串,jdk1.0提供,运行效率慢、线程安全

StringBuilder:可变长字符串,jdk5.0提供,运行效率块、线程不安全

package com.xiao;

import java.util.Arrays;

public class Demo06 {
    public static void main(String[] args){
        StringBuffer sb = new StringBuffer();
        //1,append();加入
        sb.append("1111");
        System.out.println(sb);
        sb.append("2222");
        System.out.println(sb);
        sb.append("3333");
        System.out.println(sb);

        //2, insert();最前面添加
        sb.insert(0,"我在最前面");
        System.out.println(sb);
        //3, replace()替换
        sb.replace(0,5,"hello");
        System.out.println(sb);
        //4, delete删除
        sb.delete(0,4);
        System.out.println(sb);


    }
}

他俩方法同理

BigDecimal的使用

package com.xiao;

import java.math.BigDecimal;
import java.util.Arrays;

public class Demo06 {
    public static void main(String[] args){
        BigDecimal b = new BigDecimal("1.7");
        BigDecimal b2 = new BigDecimal("0.6");

        BigDecimal b3 = b.subtract(b2);//-
        System.out.println(b3);
        BigDecimal b4 = b.add(b2);//+
        System.out.println(b4);
        BigDecimal b5 = b.multiply(b2);//*
        System.out.println(b5);
        BigDecimal b6 = b.divide(b2,2,BigDecimal.ROUND_HALF_UP);//*
        System.out.println(b6);

    }
}

Date类

  • Date表示特定的瞬间。精确到毫秒。Date类中的大部分方法都已经被Calendar类中的方法所取代。

  • 时间单位

    • 1秒=1000毫秒

    • 1毫秒=1000微秒

    • 1微秒=1000纳秒

    • package com.xiao;
      
      import java.math.BigDecimal;
      import java.util.Arrays;
      import java.util.Date;
      
      public class Demo06 {
          public static void main(String[] args){
              //1,创建Date对象
              Date date = new Date();
              System.out.println(date);
              System.out.println(date.toLocaleString());
              Date date1 = new Date(date.getTime()-60*60*24*1000);
              System.out.println(date1.toLocaleString());
              //2,方法after before
             boolean b1=  date.after(date1);
              System.out.println(b1);
              boolean b2 = date.before(date1);
              System.out.println(b2);
              //比较compareTo();
              int d = date.compareTo(date1);
              int d2 = date1.compareTo(date);
              int d3 = date.compareTo(date);
              System.out.println(d);
              System.out.println(d2);
              System.out.println(d3);
              //比较是否相等equals();
              boolean d1 = date.equals(date1);
              System.out.println(d1);
          }
      }
      

      Calendar

      • calender提供了获取或者设置各种日历字段的方法

      • 构造方法

        • protected Talendar():由于修饰符是protected,所以无法直接创建该对象。

        • package com.xiao;
          
          import java.math.BigDecimal;
          import java.util.Arrays;
          import java.util.Calendar;
          import java.util.Date;
          
          public class Demo06 {
              public static void main(String[] args){
                  //1创建Calender对象
                  Calendar calendar = Calendar.getInstance();
                  System.out.println(calendar.getTime());
                  System.out.println(calendar.getTimeInMillis());
          
                  //2获得时间信息
                  //获得年
                  int year = calendar.get(Calendar.YEAR);
                  //月 +1
                  int month = calendar.get(Calendar.MONTH);
                  //日
                  int day = calendar.get(Calendar.DAY_OF_MONTH);
                  //小时
                  int hour = calendar.get(Calendar.HOUR_OF_DAY);//hour是12小时,这个是24小时制
                  //分钟
                  int minuter = calendar.get(Calendar.MINUTE);
                  //秒
                  int second = calendar.get(Calendar.SECOND);
                  System.out.println(year + " "+(month+1)+" " + day + " " + hour +  " " + month + " " + second);
          
                  //修改时间
                      Calendar calendar1 =  Calendar.getInstance();
                      calendar1.set(Calendar.DAY_OF_MONTH,5);
                  System.out.println(calendar1.getTime().toLocaleString());
                  //add修改时间
                  calendar1.add(Calendar.HOUR,1);
                  System.out.println(calendar1.getTime().toLocaleString());
                  //  获取当前时间的最大值,最小值
                  int max = calendar1.getActualMaximum(Calendar.DAY_OF_MONTH);
                  int max2 = calendar1.getActualMinimum(Calendar.DAY_OF_MONTH);
                  System.out.println(max);
                  System.out.println(max2);
              }
          }
          

          SimpleDateFormat

          • SimpleDateFormat是一个以语言环境有关的方式来格式化和解析日期具体类。

          • 进行格式化(日期->文本)、解析(文本-》日期)

          • 常用的时间模式字母

          • package com.xiao;
            
            import java.math.BigDecimal;
            import java.text.ParseException;
            import java.text.SimpleDateFormat;
            import java.util.Arrays;
            import java.util.Calendar;
            import java.util.Date;
            
            public class Demo06 {
                public static void main(String[] args) throws ParseException {
                    //1创建simpleDataFormat对象y年m月
                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM//dd");
                   // SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM//dd HH-mm-ss");
                    //2创建Date类
                    Date date = new Date();
                    //格式化date(把日期转成字符串)
                    String str = sdf.format(date);
                    System.out.println(str);
                    //解析(把字符串转成日期)
            
                    Date date1 = sdf.parse("1990/05/01");
                    System.out.println(date1);
                }
            }
            
posted @ 2021-05-17 14:36  期待aaa  阅读(57)  评论(0)    收藏  举报