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修饰的常量。
创建对象:
//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 包装类
为对应的基本类型,提供丰富的功能。
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。
二进制转十进制:从低位次,每位乘以2的位次次幂 再求和。
计算二进制数据:0000 1101对应的十进制
二进制转八进制:从低位次开始,每三位为一组,产生一个八进制数字,最高位不足补零。
计算二进制数据110 0111对应的八进制
八进制转二进制:把一个数字转为3个数字,不足三位的,最高位补零。
计算八进制数据:023 0653对应的二进制数据
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。