java工具类--01包装类,Math,日期相关的类,字符串

1. 包装类

基本数据类型包装类
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean
  • 八个包装类都在java.lang 包下 不需要import
  • 6个与数字相关的 默认的继承父类是 Number
  • 8个包装类都实现了Serializable Comparable
  • 8个包装类都有带自己对应的构造方法,7个有构造方法重载(除了Charactor),带了String
  • 6个包装了继承了 java.lang.Number xxxValue() 将一个包装类类型转化为对应的基本类型(拆箱)
    笔试
        Integer i1=10;//自动装箱
        //i1=128
        Integer i2=10;
        //i2=128  i1==i2  false
        Integer  i3=new Integer(10);//在堆内存中开辟空间
        Integer i4=new Integer(10);
        //在Integer类加载时,自己有一个静态空间,内存储大小为Integer[] -128~127的对象 256个对象
        //如果使用的对象范围在这个之内,直接取静态区中找对应的对象。如果超过了-128~127 则创建一个新的integer对象
  
        System.out.println(i1==i2);//true  
        System.out.println(i1==i3);//false
        System.out.println(i3==i4);//false
        System.out.println(i1.equals(i2));//true
        System.out.println(i1.equals(i3));//true
        System.out.println(i3.equals(i4));//true

(略)查看API

2. 数学类

  • java.lang
  • Math的构造方法hiprivate 不能直接调用创建对象 (由于Math的方法 属性都是static)

2.1 常用属性

PI E

2.2 常用方法:

abs():绝对值
ceil():向上取整
floor():向下取整
rint():临近的整数 如果两边一样(1.5 返回 2)则返回偶数
round():四舍五入
Math.pow(a,b):ab
double sqrt(a):a开根
random():[0,1)产生之间的double
(略)查看API

2.3 Random

  • Random类 默认继承Object
    构造函数:
    1. Random():创建一个新的随机数生成器
    2. Random(long seed) 使用单个 long种子创建一个新的随机数生成器。
 		Random r=new Random();
        int v3=r.nextInt();//随机产生一个整数 -2^32~2^32-1
        int v4=r.nextInt(10);//范围0~10 [0,10)的int  broud必须为整数 否则异常 ILLegalArgumentException
3. float v5=r.nextFloat();//[0.0,1.0)
4. r.nextBoolean;//随机产生 true false
  • UUID类
    默认继承Object
	UUID uuid=UUID.randomUUID();//生成一个32位 每一个位16进制的数 最后 为一个String  (可以数据库key)

2.4 BigInteger 类

超过了long取值范围  使用数组来存储一些元素
import java.math.BigInteger
利用带String 创建对象`BigInteger bigInteger=new BigInteger("123");`
    /**
     * 计算给定数字的阶乘
     */
    public BigInteger factorial(int num){
        BigInteger result=new BigInteger("1");
        for(int i=1;i<=num;i++){
            result=result.multiply(new BigInteger(i+""));
        }
        return result;
    }

2.5 BigDecimal

  • 超过了double取值范围
  • 可以处理小数之后的位数

2.6 DecimalFormat

  • 只能四舍五入
  • 小数点之前之后的位数都能处理 格式化
  • import java.text.DecimalFormat;
DecimalFormat df=new DecimalFormat("##.00");
       String vv=df.format(123.456);
       System.out.println(vv);//0必须 #可有可无  默认四舍五入  123.46

3. 日期相关类

3.1 Date

  • 通常 import java.util.Date;
        long time= System.currentTimeMillis();//当前系统时间的毫秒值  可以做一个对程序的执行效率
        System.out.println(time);
        Date date1=new Date();//默认时当前系统时间
        Date date2=new Date(1558317538831L);
        System.out.println(date1);
        System.out.println(date2);
        System.out.println(date1.before(date2));//判断date1是否在date2之前
        System.out.println(date1.after(date2));//判断date1是否在date2之后
        System.out.println(date1.getTime());//获取Time  或者setTime

3.1 DateFormat

  • import java.text.DateFormat;
  • 是一个抽象类 不能直接new一个对象 可以通过子类来使用
  • 调用带String的构造方法1创建对象 DateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
      //处理日期格式
        //DateFormat
        DateFormat  dateFormat=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        String v=dateFormat.format(System.currentTimeMillis());
        System.out.println(v);

3.2 Calendar

  • import java.util.Calendar
  • 默认继承Object 抽象的 Calendar calendar=Calendar.getInstance();//默认可以构造系统当前时间的对象
 		Calendar calendar=Calendar.getInstance();//默认可以构造系统当前时间的对象
        System.out.println(calendar.get(Calendar.YEAR));//有一个date属性 可以获取年月日--
         System.out.println(calendar.get(Calendar.MONTH));//MONTH从0开始
        System.out.println(calendar.get(Calendar.DAY_OF_MONTH));

3.3 TimeZone

  • java.util
  • 可以通过 calender对象.getTimeZone()来获取 、、 或者TimeZone.getDefault()
  • getID():获取时区ID号
  • getDisplayName()
    System.out.println(calendar.getTimeZone().getDisplayName()+" "+calendar.getTimeZone().getID() );
    (略)查看API

4. 字符串

4.1 String

  • java.lang
  • String是一个特殊的引用数据类型 对象
  • 实现了三个接口 Serializable CharSequence Comparable
4.1.1 笔试String特点
        String s1="abc";//"abc"对象 存储在常量区 自动创建的
        String s2="abc";
        String s3=new String("abc");//堆new的对象 
        String s4=new String("abc");
        System.out.println(s1==s2);//true
        System.out.println(s1==s3);//false
        System.out.println(s3==s4);//false
        System.out.println(s1.equals(s2));//true  把继承于Object的equals方法进行重写了改成了字符集
        System.out.println(s1.equals(s3));//true
        System.out.println(s3.equals(s4));//true
4.1.2 不可变特性
  • public final class String
  • private final char value[];//存储String中每一个字符 final最终的 不能改变的 数组的地址不能改变 数组长度不能改变 数组中的内容也不能改变private
  1. 长度不可变:final修饰的数组 数组长度本身不能改变 final修饰的数组地址不能改变
  2. 内容不可变:private 修饰 不能再类外访问
4.1.3 String常用的方法

1.public boolean equals(Object anObject)

  public boolean equals(Object anObject) {
        if (this == anObject) {
            return true;
        }
        if (anObject instanceof String) {
            String anotherString = (String)anObject;
            int n = value.length;
            if (n == anotherString.value.length) {
                char v1[] = value;
                char v2[] = anotherString.value;
                int i = 0;
                while (n-- != 0) {
                    if (v1[i] != v2[i])
                        return false;
                    i++;
                }
                return true;
            }
        }
        return false;
    }


  1. public int hashCode() 重写了 h = 31 * h + val[i];
public int hashCode() {
        int h = hash;
        if (h == 0 && value.length > 0) {
            char val[] = value;

            for (int i = 0; i < value.length; i++) {
                h = 31 * h + val[i];
            }
            hash = h;
        }
        return h;
    }
  1. public int compareTo(String anotherString) 实现自 Comparable
  • 先找寻两个字符串长度较短的那个作为循环比较次数 按照字典索引的顺序比较
		int len1 = value.length;
        int len2 = anotherString.value.length;
        int lim = Math.min(len1, len2);
  • 挨个比较元素 return c1 - c2;
  • 如果循环之后发现字符都一样 直接使用return len1 - len2;
  • 返回0表示两个字符串相等
 public int compareTo(String anotherString) {
       int len1 = value.length;
       int len2 = anotherString.value.length;
       int lim = Math.min(len1, len2);
       char v1[] = value;
       char v2[] = anotherString.value;

       int k = 0;
       while (k < lim) {
           char c1 = v1[k];
           char c2 = v2[k];
           if (c1 != c2) {
               return c1 - c2;
           }
           k++;
       }
       return len1 - len2;
   }
  1. 重写了 public String toString()
public String toString() {
        return this;
    }
  1. concat()拼接
  2. contains(),判断包含
  3. indexOf:找寻指定元素第一次出现的位置
    charAt() codePointAt() indexOf() lastIndexOf() substring() spilt() trim() getBytes() concat() tocharArray() matches()
    toUpperCase() toLowerCase() startsWith() endsWith() isEmpty()
    (略)查看API

4.2 StringBuffer StringBuilder

  • java.lang 实现接口Serializable CharSequence Appendable 没有compareTo() 多了1一个append
  • 特性 可变字符串
  • 构建方式:无参构造 有参数构造
        //1.无参构造 默认构建一个默认长度为16个空间的对象 char[]
         StringBuilder builder1=new StringBuilder();
         //2.利用给定的元素 构建一个没有字符的字符串缓冲区和指定的初始容量。 自定义长度空间对象 char[]
        StringBuilder builder2=new StringBuilder(20);
        //3.利用带参数的构造方法 默认数组长度字符串长度+16个 char[]
        StringBuilder builder3=new StringBuilder("abc");
        //4.
  • append() 在频繁的拼接字符串时可以用它
  • capacity() 字符串底层char[]的容量
  • length() 字符串有效元素个数(长度)
  • String subString() 返回值String
  • StringBuilder delete() 删除 不用接受返回就可以看到效果

4.3==String StringBuffer StringBuilder==

  • String不可变字符串:有一个 comparable接口 长度内容不可变 有 concat()toUppeCase() comparaTo()
  • StringBuffer StringBuilder:有一个Appendable接口 可变字符串 没有final修饰 底层可以进行数组扩容 有一些String没有的方法 append() insert() delete() reverse();
  • StringBuffer StringBuilder区别:方法使用差不多
    StringBuffer:(synchronized修饰 同步的。当两个并发线程访问同一个对象object中的这个加锁同步代码块时,一个时间内只能有一个线程得到执行。 )线程安全 线程同步 安全性比较高 执行效率相对较低
    StringBuilder:线程非同步 安全性较低 执行效率较高

4.4 正则表达式

带有一定规范的表达式 匹配字符串格式

  • 字符串数据格式校验 boolean= str.matches(“regex”)
  • 字符串的拆分 替换replece split
  • 字符串查找 Pattern模式 Matcher匹配器
    自己查看API java.util.regex Pattern
 		Scanner sc=new Scanner(System.in);
        String str=sc.nextLine();
        //matches("写格式")
        boolean res=str.matches("a[abc]");
        System.out.println(res);
                /*
        [abc]:abc中其中一个
        [^abc]:不能是abc其中一个
        [a-zA-Z]:表示a~z A~Z范围内
        [a-z&&[^bc]] :a-z中一个 但是不能是b c

        . :表示任意一个字符
        \d:[0-9]
        \D:[^0-9]
        \s:留白 一个空格 回车 换行
        \S :非留白

        \w:word单词 [0-9A-Za-z]
        \W:非单词
描述固定字符的出现次数
         */

5. 集合相关的类

6. 异常相关的

7. I/O 流

8.线程相关的

9. 网络相关的

10.反射注解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值