JAVASE-API(Object/String/包装类/Date)+进制

1 Object

概述:
所有对象的顶级父类
存在于java.lang包中,这个包不需要我们手动导包

创建对象:
构造方法用来创建对象

new Object( );

常用方法:

protected  Object clone() 创建并返回此对象的一个副本。 
boolean equals(Object obj) 指示其他某个对象是否与此对象“相等”。 
protected  void finalize() 当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。 
Class getClass() 返回此 Object 的运行时类。 
int hashCode() 返回该对象的哈希码值。 
void notify() 唤醒在此对象监视器上等待的单个线程。
    //唤醒一个wait的线程,重新抢锁执行
void notifyAll() 唤醒在此对象监视器上等待的所有线程。 
String toString() 返回该对象的字符串表示。 
void wait() 在其他线程调用此对象的 notify() 方法或 notifyAll() 方法前,导致当前线程等待。 
    //挂起当前线程,释放获取到的锁
void wait(long timeout) 在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者超过指定的时间量前,导致当前线程等待。 
void wait(long timeout, int nanos) 在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者其他某个线程中断当前线程,或者已超过某个实际时间量前,导致当前线程等待。

总结:
1,Object是所有类的 超类/父类/基类
2,toString()--用来展示对象的字符串--重写前展示地址值--重写后展示属性值
3,equals()--比较两个对象是否相等--重写前比地址值--重写后比属性值

2 String

概述:
字符串底层维护了一个char[]。

特点:
1,是一个封装的数组对象
2,长度不可变,是个被final修饰的常量。
JAVASE-API(Object/String/包装类/Date)+进制_第1张图片

创建对象:

//1,创建String对象--String(char[] value) 
        //方法1:
        char[] a=new char[]{'a','b'};
        String s = new String(a);
        //方法2:
        String s2 = "abc";//相当于简写方式

常用方法:

String s2 = "abc";
//调用方法
System.out.println(s2.charAt(2));//c,根据下标,获取对应的字符        
System.out.println(s2.concat("zx"));//abczx,在后面拼接字符串        
System.out.println(s2.endsWith("c"));//true,判断结尾
System.out.println(s2.equals("abc"));//true,equals()在String类中已重写,判断两个字符串的内容是否相同
        
System.out.println(s2.hashCode());//96354,
System.out.println(s2.indexOf("a"));//0,获取第一次出现的索引值
System.out.println(s2.lastIndexOf("a"));//0
System.out.println(s2.isEmpty());//false,当且仅当 length() 为 0 时返回 true。
System.out.println(s2.length());//3,长度
        
System.out.println(s2.replace("a","d"));//dbc,旧字符换成新字符
System.out.println(s2.startsWith("ab"));//true,判断是否以指定内容开始
System.out.println(s2.substring(1));//bc,从1下标开始向后截取
System.out.println(s2.substring(0,2));//ab,从0下标开始,到2下标结束,包含0下标,不包含2下标,含头不含尾
System.out.println(s2.toLowerCase());//abc,全转为小写
System.out.println(s2.toUpperCase());//ABC,全转为大写
s2="   abc 1 23  ";
System.out.println(s2.trim());//abc 1 23,返回字符串副本,忽略前后的空格

//        static String ,,valueOf(int i)//  返回 int 参数的字符串表示形式。   
System.out.println(String.valueOf(123)+10);//12310,返回 int 参数的字符串表示形式。 
//        char[] ,,,toCharArray() //将此字符串转换为一个新的字符数组。 
char[] ss = s2.toCharArray();
System.out.println(ss);//   abc 1 23  ,将此字符串转换为一个新的字符数组。 
//         byte[],,, getBytes() //使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。 
byte[] bs = s2.getBytes();
System.out.println(Arrays.toString(bs));
//        String[] ,,,split(String regex) // 根据给定正则表达式的匹配拆分此字符串。 
s2="a1b1c1";
String[] ss1 = s2.split("1");//按照指定的字符串切割,放入数组
System.out.println(Arrays.toString(ss1));//[a, b, c]

StringBuilder/StringBuffer:

概述:一个可变的字符序列。

特点:
1、 封装了char[]数组
2、 是可变的字符序列
3、 提供了一组可以对字符内容修改的方法
4、 常用append()来代替字符串做字符串连接
5、 内部字符数组默认初始容量是16:initial capacity of 16 characters
6、 如果大于16会尝试将扩容,新数组大小原来的变成2倍+2,容量如果还不够,直接扩充到需要的容量大小。int newCapacity = value.length * 2 + 2;
7、 StringBuffer 1.0出道线程安全,StringBuilder1.5出道线程不安全

创建对象:

StringBuilder() 
      构造一个不带任何字符的字符串生成器,其初始容量为 16 个字符。

常用方法

append(String str) 
      将指定的字符串追加到此字符序列。

3 包装类

为对应的基本类型,提供丰富的功能。
image.png

3.1 Number类

概述:
是所有数字类型(前6个)包装类的抽象父类,不能new

特点:
1,抽象父类
2,继承Object类

共性方法:
可以把包装类转换成基本类型

byte byteValue()    以 byte 形式返回指定的数值。 
abstract  double doubleValue()  以 double 形式返回指定的数值。 
abstract  float floatValue()     以 float 形式返回指定的数值。 
abstract  int intValue()    以 int 形式返回指定的数值。 
abstract  long longValue()  以 long 形式返回指定的数值。 
short shortValue()  以 short 形式返回指定的数值。

3.2 Integer类

概述:
包装了一个基本类型int的值。

创建对象:

Integer(int value) 
          构造一个新分配的 Integer 对象,它表示指定的 int 值。
Integer(String s) 
          构造一个新分配的 Integer 对象,它表示 String 参数所指示的 int 值。
static Integer--- valueOf(int i) 
          返回一个表示指定的 int 值的 Integer 实例。
          高效-----相同数据不再开辟空间存储,超出范围不高效了
          范围-----大小为基本类型的范围

常用方法:

int ----intValue()  以 int 类型返回该 Integer 的值。 
static int ----parseInt(String s) 将字符串参数作为有符号的十进制整数进行解析。

总结:
//1,包装类的作用,为对应的基本类型,提供丰富的方法
//2,自动装箱:把基本类型 包装 成包装类型
//3,自动拆箱:把包装类型 变回成 基本类型
//4,自动装箱有两种方式:构造方法创建对象+静态方法创建对象(高效,推荐)

    //1,创建方法
    Double d= new Double (1.1);//--------------自动装箱,,把基本类型包装成包装类型
    //高效,,相同数据不再开辟空间存储-128--127,底层已有
    Double d2 = Double.valueOf(1.1);
    System.out.println(d2);//1.1
    //2,调用方法
    double m = d.doubleValue();//---------------自动拆箱,,把包装类型拆成基本类型
    double m1 = Double.parseDouble("1.1");//将字符串的数字转化为基本类型的数字,以10进制进行解析
    System.out.println(m1);//1.1

4 Date

4.1 Date

概述:
存在于java.util.Date包。
用来封装一个毫秒值表示一个精确的时间点。
从1970-1-1 0点开始的毫秒值。

创建对象:

new Date() 
    分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒)

常用方法:

//创建对象
//Date() 分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒)。
Date date = new Date();//表示当前时刻
        
//调用方法
System.out.println(date.getDate());//15 今天是多少号
System.out.println(date.getDay());//6 今天是星期几
System.out.println(date.getHours());//11 现在是几点
System.out.println(date.getMinutes());//53 现在多少分钟
System.out.println(date.getMonth()+1);//7         现在是几月,,,,月-1,,,使用的时候记得+1
System.out.println(date.getSeconds());//25 现在是多少秒
System.out.println(date.getTime());//1597463605634 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
System.out.println(date.getYear());//120  从1900年到现在多少年
System.out.println(date.toLocaleString() );//2020-8-15 11:58:06  现在的是时刻

4.2 日期工具类SimpleDateFormat

概述:
日期格式化工具,可以把Date对象格式化成字符串,也可以日期字符串解析成Date对象。
创建对象:

SimpleDateFormat(String pattern) 
    用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。

常用方法:

String---- format(Date date) 
    //将给定的 Date 格式化为日期/时间字符串,并将结果添加到给定的String。 
    //Date --- String
Date---- parse(String text) 
    //解析字符串的文本,生成 Date。 
    //String  --- Date

测试:

//1,创建对象--参数是日期的格式----年y-月M-日d
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 
     
String str =sdf.format(new Date());//Date--String
System.out.println(str);//2020-11-06

Date d = sdf.parse(str);//String--Date
System.out.println(d.getMonth()+1);//11

5 BigDecimal/BigInteger

概述:
BigDecimal:常用来解决精确的浮点数运算。
BigInteger:常用来解决超大的整数运算。

创建对象:
BigDecimal(String val)
--推荐,String类型的运算不出错

常用方法:
add(BigDecimal bd): 做加法运算
substract(BigDecimal bd) : 做减法运算
multiply(BigDecimal bd) : 做乘法运算
divide(BigDecimal bd) : 做除法运算
divide(BigDecimal bd,保留位数,舍入方式):除不尽时使用
setScale(保留位数,舍入方式):同上
pow(int n):求数据的几次幂

private static void method2() {
        //接收两个小数
        double a = new Scanner(System.in).nextDouble();
        double b = new Scanner(System.in).nextDouble();
        //创建对象 
        BigDecimal bd1 = new BigDecimal(String.valueOf(a));//触发含参构造BigDecimal(String val)----推荐
        BigDecimal bd2 = new BigDecimal(b+"");
        //做运算
        System.out.println(bd1.add(bd2));         //加
        System.out.println(bd1.subtract(bd2));     //减
        System.out.println(bd1.multiply(bd2));     //乘    
//        System.out.println(bd1.divide(bd2));     //除    ---除不尽时--java.lang.ArithmeticException
      //重载divide(x,y,z)--x是要参与运算的对象名称,y是要保留的小数位,z是舍入模式
        System.out.println(bd1.divide(bd2, 5, BigDecimal.ROUND_HALF_UP));
    }

6 进制

概念:
进制也就是进位计数制。

二进制:0和1,逢二进一,以0b开始
八进制:0-7,逢八进一,以0开始
十进制:0-9,逢十进一
16进制:0-9,abcdef,逢16进一,以0x开始

通常情况下,1byte=8个二进制位。
所以表示一个数字用二进制来表示的话就可以这样表示:0000 0000
把这8个位进行组合,每三位组合就形成了八进制,每四位组合就形成了十六进制。

进制的转换:

十进制转二进制:不断除以2商0为止,取余,倒着写。

把十进制11转成2进制:1011。
JAVASE-API(Object/String/包装类/Date)+进制_第2张图片

二进制转十进制:从低位次,每位乘以2的位次次幂 再求和。

计算二进制数据:0000 1101对应的十进制
JAVASE-API(Object/String/包装类/Date)+进制_第3张图片

二进制转八进制:从低位次开始,每三位为一组,产生一个八进制数字,最高位不足补零。

计算二进制数据110 0111对应的八进制
JAVASE-API(Object/String/包装类/Date)+进制_第4张图片

八进制转二进制:把一个数字转为3个数字,不足三位的,最高位补零。

计算八进制数据:023 0653对应的二进制数据
JAVASE-API(Object/String/包装类/Date)+进制_第5张图片

你可能感兴趣的:(java-se)