常见包

  • java.lang 比如:StringObject包装数据类型等等,这些包默认导入了,所以不用手动导入
  • java.util 集合相关
  • java.awt 图形化界面编程
  • java.sql 数据库相关
  • java.io io流相关
  • java.net 网络相关

字节码对象

1627365730511

Object

含义

是一切类【除了它本身】的根类;一切类【除了它本身】都是直接或者间接继承了Object

常见方法

toString //打印对象,本质是打印对象的toString方法的结果

equals //默认比较两个对象内存地址是否一样

finalize //当对象被回收的时候调用该方法

hashcode //通过哈希算法计算出来的一个十进制

getClass //获取对应的字节码对象

wait //等待

notify //唤醒

notifyAll //唤醒所有

案例

public class User {
    
    private String name;
    public User(String name){
        this.name = name;
    }
 
    @Override
    public boolean equals(Object obj) {
        User other = (User)obj;
        return name.equals(other.name);
    }

    @Override
    public String toString() {
        return "User [name=" + name + "]";
    }
}
public class Test {
    
    //常见的包
       //java.lang [比如:String,...] 默认导入这些包
       //java.util 集合相关的类
       //java.awt  图形界面编程
       //java.net  网络编程相关
       //java.io   io
       //java.sql  操作数据的类型
    
    
    //Object
       //含义: 是一切类【除了它本身】的根类;一切类【除了它本身】都是直接或者间接继承了Object
       //常用方法
           //equals     两个对象的比较,默认比较的是地址[一般会重写该方法]
           //finalize   当对象被回收的时候会调用该方法
           //hashCode    是通过哈希算法计算出来的【在后面课程HashMap会使用到】
           //toString   打印对象,本质打印对象toString方法结果【根据需求重写】
           //getClass   获取字节码对象
                            //User.class --(一次就好)--> JVM
                                                      //会生成一个对象来表示该字节码信息
    
           //wait       线程等待[会释放锁]
           //notify     唤醒
           //notifyAll  唤醒所有等待的线程
    
    
    
    public static void main(String[] args) {
        
        Test one = new Test();
        
        Test two = new Test();
        
        boolean sign = one.equals(two);
        
        System.out.println(sign);
        
        User user = new User("zs");
        User userOther = new User("zs");
        
        System.out.println(user.equals(userOther));
        
        System.out.println(user.hashCode());
        
        System.out.println(user);
        System.out.println(user.toString());
        
        
        Class clazz = user.getClass(); //clazz代表User.class对应字节码对象
                                       //clazz包含了User类的所有信息
        
        System.out.println(clazz.getPackage().getName());
        
        
        System.out.println(user.getClass());
        System.out.println(user.getClass()==userOther.getClass());     
    }
}

Math

含义

是一个工具类型,提供数学中常用的方法

案例

public class MathTest {
    
    //Math【工具类】
       //含义:包含了大量数学的常用方法
       //方法:
    
    public static void main(String[] args) {
        
        System.out.println(Math.PI);
        
        //获取绝对值
        System.out.println(Math.abs(-1));
        
        System.out.println(Math.max(-100, 10));
        
        System.out.println(Math.min(-100, 10));

          
        System.out.println(Math.sqrt(9));
        
        
        System.out.println(Math.random());  //[0.0,1.0)
        
        //5-8
        System.out.println((int)(Math.random()*4+5));
    }
}

UUID

含义

生成更加随机的随机数[长度36]

使用场景

  • 数据库的主键 [一般会将-替换成空白串]
  • 文件打散

案例

public class UUIDTest {
    
    //UUID
        //含义:生成更加随机的随机数[长度36]
        //使用场景 
           //数据库的主键 [一般会将-替换成空白串]  
           //文件打散
    
    public static void main(String[] args) {
        UUID myUUID = UUID.randomUUID();
        
        String result = myUUID.toString();
        result = result.replace("-","");
        
        System.out.println(result);
        System.out.println(result.length());
    }
}

日期

相关类

  • Date 代表时间对象
  • Calendar 用于操作Date对象的类
  • SimpleDateFormat 时间格式化类

常见格式化

1627371742234

案例一

public class DateTest {
    
    //时间操作类
         //Date
         //Calendar
    
    
    //Date
       //含义:代表时间
    
    //Calendar
       //含义:里面封装了大量操作时间的方法
    
    public static void main(String[] args) {
        
        //代表当前时间
        Date date = new Date();
        System.out.println(date);
        
        //过时:不建议使用,因为存在隐患
        //date.getYear();
        //date.getMonth();
        
        
        Calendar calendar = Calendar.getInstance();
        
        //获取时间对象
        date = calendar.getTime();
        System.out.println(date);
        
        //设置calendar的时间
        //calendar.setTime(date);
        
        
        System.out.println(calendar.get(Calendar.YEAR));
        System.out.println(calendar.get(Calendar.MONTH));
        System.out.println(calendar.get(Calendar.DATE)); 
        System.out.println(calendar.get(Calendar.DAY_OF_MONTH)); 
        
        System.out.println(Calendar.TUESDAY);
        System.out.println(calendar.get(Calendar.DAY_OF_WEEK)); 
        
        System.out.println(calendar.get(Calendar.DAY_OF_YEAR)); 
        
        System.out.println(calendar.get(Calendar.HOUR));         //12
        System.out.println(calendar.get(Calendar.HOUR_OF_DAY));  //24
        
        
        System.out.println(calendar.get(Calendar.MINUTE));   
        System.out.println(calendar.get(Calendar.SECOND));  
        
        //设置
        //calendar.set(Calendar.MONTH,8);
        //System.out.println(calendar.getTime());
        
        //添加\减少
        calendar.add(Calendar.DATE,-2);
        calendar.add(Calendar.DATE,4);
        System.out.println(calendar.getTime());
        
        //比较
        
        Calendar currentDate = Calendar.getInstance();
        //晚于
        System.out.println(currentDate.after(calendar));
        //早于
        System.out.println(currentDate.before(calendar));
        
        
        //compareTo 0:相等 -1早于 1晚于
        System.out.println(currentDate.compareTo(calendar));
        System.out.println(calendar.compareTo(currentDate));
        System.out.println(Calendar.getInstance().compareTo(Calendar.getInstance()));
        
         
        //获取毫秒
        System.out.println(currentDate.getTimeInMillis());
    }
    
    @Deprecated
    public static void say(){
        System.out.println("hello world");
    }
}

案例二

public class FormatTest {
    
    //Parse 解析
    public static void main(String[] args) throws ParseException {
        Date date = new Date();
        System.out.println(date);
        
        //DateFormat
           //SimpleDateFormat
        
        //SimpleDateFormat simpleDateFormat = new SimpleDateFormat();
        //simpleDateFormat.applyPattern("yyyy年MM月dd日 HH:mm:ss");
        
        
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
        //指定格式  yyyy-MM-dd HH:mm:ss
            //要么构造器传递
            //要么手动指定
        
        
        String result = simpleDateFormat.format(date);
        System.out.println(result);
        
        //2021年07月27日 15:05:08 ---》Date对象
        date = simpleDateFormat.parse("2021年07月27日 15:05:08");
        System.out.println(date);
        
        //TODO 自行模拟解析异常
    }
}

Arrays

含义

是操作数据的工具类

案例

public class ArraysTest {
    
    public static void main(String[] args) {
        
        int [] num = {11,2,7,4,5};
        
        //打印数组
            //下标
            //forEach
        
        System.out.println(Arrays.toString(num));
        
        Arrays.sort(num);
        System.out.println(Arrays.toString(num));
        
        int result = Arrays.binarySearch(num, 7);
        System.out.println(result);
        
        //copyOf如果长度一样则返回一个元素个数一样的新数组
        //copyOf如果长度小于目标长度,则返回前几个元素
        //copyOf如果长度大于目标长度,多余的位置补充默认值
        
        int [] newNum = Arrays.copyOf(num, 5);
        System.out.println(Arrays.toString(newNum));
        
        //TODO 以后学习
        //Arrays.asList(a)
    }
}

BigDecimal

含义

用来表示任意精度的小数,常用在金额、高精度仪器

使用原因

因为floatdouble类型的数据在做操作可能会造成精度丢失

构造器注意点

  • new BigDecimal(double value)

不建议使用,查看注意点

  • new BigDecimal(String value)

建议使用

注意点

1627373878851

案例

public class BigDecimalTest {
    
    //BigDecimal
       //含义:精度可靠的小数点
    
    public static void main(String[] args) {
        
        //抛出问题:因为float\double操作都有可能会有精度丢失
        float price = 0.123456789f;
        System.out.println(price);
         
        BigDecimal bigDecimal = new BigDecimal(price+"");
        BigDecimal twoDecimal = new BigDecimal("0.000001");
        
        //相加
        BigDecimal result = bigDecimal.add(twoDecimal);
        System.out.println(result);
        
        //相乘
        result = bigDecimal.multiply(twoDecimal);
        System.out.println(result);
        
        //减法
        result = bigDecimal.subtract(twoDecimal);
        System.out.println(result);
        
        //除法
        result = bigDecimal.divide(new BigDecimal("2"));
        System.out.println(result);
        
        //四舍五入
        result = result.setScale(3, RoundingMode.HALF_UP);
        System.out.println(result.toString());
        
        //TODO 自行尝试
        //result.compareTo(val)
    }
}

BigInteger

含义

可以表示任意大小的整数

案例

public class BigIntegerTest {        //BigInteger        //无限大的整数          public static void main(String[] args) {        BigInteger bigInteger = new BigInteger("99999999999999999999999");                BigInteger result = bigInteger.multiply(new BigInteger("12"));        System.out.println(result);                        result = bigInteger.add(new BigInteger("100"));        System.out.println(result);                //TODO 其他自行尝试    }}

String

含义

不可变的字符串类

本质

private final char value[];

创建方式

//通过字面赋值【会使用到常量池】new String("字符串")new String(byte [] value);new String(byte [] value,int offset,int length);     new String(char [] value);new String(char [] value,int offset,int length);

常用方法

equals  equalsIgnoreCasecharAtsplittoUpperCasetoLowerCase      replace          //替换subString        //截取子串compareTo        //比较getBytes         //字符串转成字节数组

案例

public class StringTest {        //String       //含义:不可变的字符串类       //本质:private final char value[];           //创建的方式          //通过字面赋值【会使用到常量池】          //new String("字符串")          //new String(byte [] value);          //new String(byte [] value,int offset,int length);                   //new String(char [] value);          //new String(char [] value,int offset,int length);           //常用方法          //equals            //equalsIgnoreCase          //charAt          //split          //toUpperCase          //toLowerCase                //replace          //替换          //subString        //截取子串          //compareTo        //比较          //getBytes         //字符串转成字节数组            public static void main(String[] args) throws InterruptedException {                 //证明String是不可变的字符串        String name = "java";        System.out.println(name.hashCode());        name = "html";        System.out.println(name.hashCode());                System.out.println("-------------字面赋值-----------");                String userName="zs";   //会检查常量池中有没有"zs",如果有指向,如果没有则创建"zs"对象放到常量池                                //0 1        String peopleName ="zs";        System.out.println(userName==peopleName);//true                        System.out.println("-------------new创建-----------");                String hobby = new String("java");  //1 2个对象        String otherHobby = new String("java");                        System.out.println(hobby == otherHobby);                                System.out.println("---------------常用方法--------------");                //字符比较的时候,使用equals,比较的是内容        System.out.println(hobby.equals(otherHobby));         System.out.println(hobby.equalsIgnoreCase("JAVA"));                 //转大写        System.out.println(hobby.toUpperCase());                System.out.println(hobby.toLowerCase());                String content = "hello world";        System.out.println(content.indexOf("l"));//第一次出现的位置        System.out.println(content.lastIndexOf("l"));//第后一次出现的位置                //切割        System.out.println(Arrays.toString(content.split(" ")));                        System.out.println(content.charAt(4));                System.out.println(content.replace("world", "java"));                        //自行总结        System.out.println("cc".compareTo("cc"));        System.out.println("abc".compareTo("aec"));                 System.out.println("ad".compareTo("aa"));                             //hello world                //截取        System.out.println(content.substring(content.indexOf(" ")+1));        System.out.println(content.substring(0, content.indexOf(" ")));                //字符串转字节数组        byte [] bytes = "abc".getBytes();//[97,98,99]        System.out.println(Arrays.toString(bytes));                //String 构造器        char [] charData = {'a','b'};        String data = new String(charData);                data = new String(bytes);        System.out.println(data);                 data = new String(bytes, 1, 2);        System.out.println(data);    }}

# StringBuilder

含义

内容可变的字符串

构造器

  • new StringBuilder();
  • new StringBuilder(String initValue);

常用方法

indexOflastIndexOfcharAtsubstringdeleteCharAt 删除指定位置的字符append 追加insertlength

案例

public class StringBuilderTest {          //含义:        //内容可变的字符串        public static void main(String[] args) {                //StringBuilder                //构造器            //new StringBuilder();            //new StringBuilder(String initValue);                //方法            //indexOf            //lastIndexOf            //charAt            //substring            //deleteCharAt 删除指定位置的字符            //append 追加            //insert            //length                            StringBuilder SB = new StringBuilder();                SB = new StringBuilder("hello");        //System.out.println(SB.hashCode());                SB.append("world");        //System.out.println(SB.hashCode());                System.out.println(SB);        //删除指定位置的字符        //SB.deleteCharAt(0);        //System.out.println(SB);                //append        SB.append(" java").append(" python").append(" html");        System.out.println(SB);                SB.insert(SB.lastIndexOf("l")+1, " oracle");        System.out.println(SB);                System.out.println(SB.length());    }}

StringBuffer

含义

内容可变的字符串类

方法

和StringBuilder几乎一样

区别

  • StringBuffer的方法几乎都有synchronized,而StringBuilder没有
  • synchronized代表同步
  • StringBuilder效率比StringBuffer高

案例

public class StringBufferTest {        //含义:       //内容可变的字符串类    //方法       //和StringBuilder几乎一样        //区别       //StringBuffer的方法几乎都有synchronized,而StringBuilder没有                                //同步        public static void main(String[] args) {                StringBuffer SB = new StringBuffer("java");        SB.append(" python").append(" html");                String result = SB.toString();        System.out.println(result);        }}
最后修改:2021 年 09 月 16 日 05 : 54 PM