Java-常用类

26 篇文章 0 订阅
  • 基本数据类型的包装类
    包装类是将基本类型封装到一个类中
    包含属性和方法,方便对象操作
    包装类位于java.lang包中
    在这里插入图片描述

    • 包装类和基本类型
      基本数据类型转换为包装类
    • 自动装箱和自动拆箱 (auto-boxing & unboxing)
      自动装箱
      – 基本类型就自动地封装到与它相同类型的包装中
      如:Integer i = 100。本质上是编译器编译时为我们添加了: Integer i = Integer.valueOf(100)。
      自动拆箱
      – 包装类对象自动转换成基本类型数据
      如: – int a = new Integer(100)。本质上,编译器编译时为我们添加了:int a = new Integer(100).intValue()。
  • 字符串相关类
    String:不可变字符序列
    StringBuilder:可变字符序列、效率高、线程不安全
    StringBuffer:可变字符序列、效率低、线程安全

    • 不可变字符序列:String在这里插入图片描述
      String类的常用方法
      在这里插入图片描述在这里插入图片描述
      字符串常用提取方法
      在这里插入图片描述
      在这里插入图片描述

    • 可变字符序列:StringBuffer、StringBuilder
      StringBuffer:String增强版、 字符串缓冲区,是一个容器

  • 时间处理相关类
    Date
    DateFormat、SimpleDateFormat 在这里插入图片描述
    Calender在这里插入图片描述

  • Math类在这里插入图片描述

  • File类

  • 枚举类:Jdk1.5
    枚举指由一组固定的常量组成的类型 在这里插入图片描述

包装类与基本数据类型

package com.petrel;

/**
 * @author Petrel
 * @data 2020/6/22 10:46
 */

/**
 * 包装类与基本数据类型
 *   包装类是将基本数据类型封装成一个类,包含属性和方法
 *   使用:
 *       在使用过程中,会涉及到自动装箱和自动拆箱
 *       装箱:将基本数据类型转换成包装类
 *       拆箱:将包装类转换成基本数据类型
 *
 *        int a = 10;
 *        Integer i = new Integer(10);
 *        System.out.println(a == i);
 *        运行结果:true
 *
 *        Integer i1 = 100;
 *        Integer i2 = 100;
 *        Integer i3 = 200;
 *        Integer i4 = 200;
 *        System.out.println(i1==i2);
 *        System.out.println(i3==i4);
 *        运行结果:
 *                 true
 *                 false
 *        原因:
 *            public static Integer valueOf(int i) {
 *                if (i >= IntegerCache.low && i <= IntegerCache.high)
 *                       return IntegerCache.cache[i + (-IntegerCache.low)];
 *                    return new Integer(i);
 *               }中static final int low = -128; 这样做的目的是减少内存的使用 优化
 *
 *        Double d1 = 1.0;
 *        Double d2 = 1.0;
 *        Double d3 = 2.0;
 *        Double d4 = 2.0;
 *        System.out.println(d1==d2);
 *        System.out.println(d3==d4);
 *        运行结果:
 *                 false
 *                 false
 *        原因:
 *              看Double中的valueOf
 *
 *
 *        Integer i = 10;
 *        int a = i;
 *        System.out.println(a==i);
 *        运行结果:
 *                  true
 *        原因:
 *              每次运行的时候会把Integer类型进行自动拆箱,把包装类变成基本类型
 *
 *
 *
 */

public class IntegerDemo {
    public static void main(String[] args) {
       int a = 10;
       Integer i = new Integer(10);
//        //通过方法进行类型的转换
//        Integer i2 = Integer.valueOf(a);
//        int i3 = i.intValue();
       System.out.println(a == i);
//        Float f1 = new Float(3.14);
//        Double d1 = new Double(3.14);
//        int i =100;
//        Integer i1 = 100;
//        Integer i2 = 100;
//        Integer i3 = 200;
//        Integer i4 = 200;
//        System.out.println(i1==i2);
//        System.out.println(i3==i4);

//        Double d1 = 1.0;
//        Double d2 = 1.0;
//        Double d3 = 2.0;
//        Double d4 = 2.0;
//        System.out.println(d1==d2);
//        System.out.println(d3==d4);

/*        Integer i = 10;
        int a = i;
        System.out.println(a==i);*/
    }
}

字符串String

package com.petrel;

/**
 * @author Petrel
 * @data 2020/6/22 11:25
 */

/**
 * 注意:常量池在1.7之后放置在了堆空间之中
 *       字符串的使用:
 *           1、创建
 *               String str = "abc";
 *               String str2 = new String("abc");
 *               两种方式都可以用,只不过第一种使用比较多
 *           2、字符串的本质
 *               字符串的本质是字符数组或者叫做字符序列
 *               String类使用final修饰,不可以被继承
 *               使用equals方法比较的是字符数组的每一个位置的值
 *               String是一个不可变对象
 *
 *
 *         String str = "abc";
 *         String str2 = new String("abc");
 *         System.out.println(str==str2);
 *         System.out.println(str.equals(str2));
 *         运行结果:
 *                  false
 *                  true
 *          原因:两个地址的空间不一样
 *
 *         String str = "abc";
 *         String str2 = new String("abc");
 *         str2 = str2.intern();
 *         System.out.println(str==str2);
 *         System.out.println(str.equals(str2));
 *         运行结果:
 *                  true
 *                  true
 *          原因:加了str2 = str2.intern();
 *
 *          System.out.println(str.charAt(0));
 *          运行结果:a
 *
 *          //数组的复制过程
 *          System.out.println(str.concat("cde"));
 *          运行结果:abccde
 *
 *          //返回指定下标的元素
 *          System.out.println(str.indexOf("a"));
 *          运行结果:0
 *
 *          String s = "abcdefghijklmn";
 *          System.out.println(s.substring(3));
 *          //在截取字符串的时候,需要注意是左闭右开区间,不包含最右边的值
 *          System.out.println(s.substring(3,5));
 *          运行结果:
 *                  efghijklmn
 *                  de
 *
 *          String a = "abc";
 *          String b = "def";
 *          String c = "abcdef";
 *          String c = a+b;
 *          String e = "abc"+"def";
 *          System.out.println(c==d);
 *          System.out.println(c==e);
 *          运行结果:
 *                  false
 *                  true
 *
 *
 */

public class StringDemo {
    public static void main(String[] args) {
        String str = "abc";
        String str2 = new String("abc");
//        str2 = str2.intern();
        System.out.println(str==str2);
        System.out.println(str.equals(str2));
        System.out.println(str.charAt(0));
        //数组的复制过程
        System.out.println(str.concat("cde"));
        //返回指定下标的元素
        System.out.println(str.indexOf("a"));
        String s = "abcdefghijklmn";
        System.out.println(s.substring(3));
        //在截取字符串的时候,需要注意是左闭右开区间
        System.out.println(s.substring(3,5));
        System.out.println(s.length());
        System.out.println("-----------------");
//        String a = "abc";
//        String b = new String("abc");
//        b = b.intern();
//        System.out.println(a==b);

        String a = "abc";
        String b = "def";
        String c = "abcdef";
        String d = (a+b).intern();
        String e = "abc"+"def";
        System.out.println(c==d);
        System.out.println(c==e);
        String f = "a" + "b" +"c";
        String a1 = "a";
        String a2 = "b";
        String a3 = "c";
        String f1 = a1+a2+a3;
    }
}

运行结果:
在这里插入图片描述

StringBuffer

package com.petrel;

/**
 * @author Petrel
 * @data 2020/6/22 14:30
 */

/**
 *
 *
 * 字符串需要拼接的时候一般使用StringBuffer
 *
 * StringBuffer有synchronized关键字修饰,所以StringBuffer是线程安全的,但是stringBuilder没有
 * * 可变字符串
 * *   StringBuffer:线程安全,效率低
 * *   StringBuilder:线程不安全,效率高
 *
 *      StringBuffer stringBuffer = new StringBuffer();
 *      stringBuffer.append(1).append(1.234).append("abc").append(true);
 *      System.out.println(stringBuffer);
 *      System.out.println(stringBuffer.length());
 *      System.out.println(stringBuffer.capacity());
 *      运行结果:
 *              11.234abctrue
 *              13      (当前放置在数组里面整体占用的大小)
 *              16      (初始化的时候创建了16个长度)
 *
 *       StringBuilder stringBuilder = new StringBuilder();
 *       stringBuilder.append("123").append(1).append(false);
 *       System.out.println(stringBuilder);
 *       运行结果:1231false  (为什么要有stringBuffer和stringBuilder,因为线程安全)
 *
 *
 */

public class StringBufferDemo {
    public static void main(String[] args) {
        StringBuffer stringBuffer = new StringBuffer();
        stringBuffer.append(1).append(1.234).append("abc").append(true);
        System.out.println(stringBuffer);
        System.out.println(stringBuffer.length());
        System.out.println(stringBuffer.capacity());
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append("123").append(1).append(false);
        System.out.println(stringBuilder);
    }
}

运行结果:
在这里插入图片描述

Date、Calendar

package com.petrel;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * @author Petrel
 * @data 2020/6/22 14:47
 */

/**
 *
 *         Date date = new Date();
 *         System.out.println(date);
 *         System.out.println(date.getTime());
 *         运行结果:
 *                  Mon Jun 22 14:48:55 CST 2020
 *                  1592808535375  (当前data的毫秒值)
 *
 *          DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 *         //将Date类按照规范转换为字符串格式
 *         String str = dateFormat.format(date);
 *         System.out.println(str);
 *         //将字符串转换成对应的日期类
 *         Date d1 = dateFormat.parse("2019-10-10 20:20:20");
 *         System.out.println(d1);
 *         运行结果:
 *                  2020-06-22 15:05:35     (format 日期类->字符串)
 *                  Thu Oct 10 20:20:20 CST 2019       (parse 字符串->日期类)
 *
 *
 *
 */

public class DateDemo {
    public static void main(String[] args) throws ParseException {
        Date date = new Date();
        System.out.println(date);
        System.out.println(date.getTime());

        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //将Date类按照规范转换为字符串格式
        String str = dateFormat.format(date);
        System.out.println(str);

        //将字符串转换成对应的日期类
        Date d1 = dateFormat.parse("2019-10-10 20:20:20");
        System.out.println(d1);

        //获取的是当前系统的时间
        Calendar calendar = Calendar.getInstance();
        System.out.println(calendar);

        //设置指定时间的日历类
        calendar.setTime(d1);   //设置成2019-10-10 20:20:20
        System.out.println(calendar);
        System.out.println(calendar.get(Calendar.YEAR));
        System.out.println(calendar.get(Calendar.MONTH));
        System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
        System.out.println(calendar.get(Calendar.HOUR_OF_DAY));
        System.out.println(calendar.get(Calendar.MINUTE));
        System.out.println(calendar.get(Calendar.SECOND));
    }
}

运行结果:
在这里插入图片描述

Math类

package com.petrel;

/**
 * @author Petrel
        * @data 2020/6/22 15:21
        */

public class MathDemo {
    public static void main(String[] args) {
        System.out.println(Math.abs(-1));   //1 取绝对值
        System.out.println(Math.sqrt(2));   //1.4142135623730951 开方
        System.out.println(Math.ceil(3.14));   //4.0 向上取整
        System.out.println(Math.ceil(-3.14));   //-3.0 向上取整
        System.out.println(Math.floor(3.14));   //3.0 向下取整
        System.out.println(Math.floor(-3.14));  //-4.0 向下取整
        System.out.println(Math.pow(2,3));  //8.0 2的3次方

    }
}

运行结果:
在这里插入图片描述

枚举类

package com.petrel.enumpack;

/**
 * @author Petrel
 * @data 2020/6/22 15:28
 */

public enum  Gender {,//不可以写主函数
}

------------

package com.petrel.enumpack;

/**
 * @author Petrel
 * @data 2020/6/22 15:32
 */

/**
 * 强烈建议定义一组常量时,使用枚举类型
 * 比如男和女 使用的时候都是同一空间
 */
public enum  EventEnum {

    LAUNCH("launch"),PAGEVIEW("pageview"),EVENT("event");
    //如果不写下面的 上面的这行代码会报错,必须要有一个对应的构造方法参数与上面的有匹配功能
    EventEnum(String name){
        this.name = name;
    }

    private String name;

    public void show(){
        System.out.println(this.name);
        EventEnum[] ee = values();
        for(int i = 0;i<ee.length;i++){
            System.out.println(ee[i]);
        }
    }
}

------------

package com.petrel.enumpack;

/**
 * @author Petrel
 * @data 2020/6/22 15:29
 */

public class Test {
    Gender gender = Gender.;
    Gender gender2 = Gender.;

    public static void main(String[] args) {
        EventEnum ee = EventEnum.LAUNCH;
        ee.show();

        String name = EventEnum.PAGEVIEW.name();
        System.out.println(name);  //运行结果:PAGEVIEW
    }
}

运行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值