Object类
Java中,Object类是所有引用类型的父类,我们也可以称为超类。这意味着对于所有引用类型,都可以调用Object的定义的公开(public)或者受保护(protected)的方法,并且所有的上述方法都可以进行重写,大大增加了代码的灵活性。
//获取对象的hash值
int hashCode();
//对比该对象与o对象是否相等,默认比较两者地址是否相同
boolean equals(Object o);
//将对象转成字符串类型表示,默认为类名加hash转换的地址
void toString();
//获取对象的类型
Class getClass();
//拷贝一份对象
Object clone();
//对象被回收时调用的方法
void finalize();
...
String类
用于表示字符串的类。是最常用的表示字符串的类。但由于是通过由final修饰的字符数组进行保存字符,所以对象保存的字符串将不可变。
构造方法:
java中通过 " "英文的双引号表示字符串,并且允许将String通过赋值字符串直接创建对象
//通过字符串字面量直接赋值
String s1="111";
//常规创建对象
String s2=new String("111");
//通过字符数组c 组合为字符串创
String s3=new String(char[] c);
//将字节数组 b 按照 charset 表示的编码 进行创建字符串对象
String s4=new String(btye[] b,String charset);
...
常用方法:
//获取字符串长度
int length()
//获取所在位置的字符,下标从0开始
char charAt(int index)
//比较字符串是否匹配有s字符串的片段
boolean contains(String s)
//将字符串转化为字节数组
char[] toCharArray()
//比较字符串是否与str相等
boolean equals(String str)
//比较字符串是否与str相等,并且忽略大小写
boolean equalsIgnoreCase(String str)
//将小写的字母转化为大写
String toUpperCase()
//将大写的字母转化为小写
String toLowerCase()
//显示首次出现s字符串的位置,下标从0开始
int indexOf(String s)
//比较字符串是否以s字符串结束
boolean endsWith(String s)
//比较字符串是否以s字符串开始
boolean startsWith(String s)
//获取子字符串
String substring(int startInder,int end)
//获取去除字符串两段无用字符后的字符串。
String trim()
//以s字符串为分隔符进行分隔,返回分隔的字符串数组
String[] split(String s)
StringBuffer类和StringBuilder类
为解决String类的不可变性。Java提供了StringBuilder类以及StringBuilder类。这类字符串类可以进行字符串的可变保存。两者最大的不同就是StringBuffer类为所有方法进行加锁处理,用法与String类似。
构造方法:
//创建一个空的字符串的StringBuffer类对象
StringBuffer sb =new StringBuffer();
//创建一个s内表示字符串的对象
StringBuffer sb =new StringBuffer(String s);
常用方法:
//向字符串末尾添加参数的对象转为字符串的值。返回的调用的对象
StringBuffer append(参数)//当调用的是StringBuilder类对象时将返回StringBuilder
//将所表示的字符串返回
String toString()
Date类
用于保存年月日的类型,本质是通过保存1970年1月1日0点到保存日期的毫秒数实现的。
构造方法:
//创建一个创建对象时的时间的Date对象
Date d1=new Date();
//创建一个l表示的时间的Date对象
Date d1=new Date(Long l);
//其他构造方法基本都已弃用,本篇将不提及
常用方法:
//获取1970年1月1日0点到Date表示的时间的毫秒数。
long getTime()
//设置时间,以1970年1月1日0点到要设置的时间的毫秒数为准
void setTime(Long l)
Calendar抽象类
更规范的用于保存年月日的类型。
//静态方法,负责自动识别地区并返回对应的日历实现类
Calendar.getInstance()
//设置时间,月是从0开始表示的
void set(int year,int month,int date)
//增加对应参数年月日的时间
void add(表示要修改的年月日,增加的时间)
//获取Calendar类表示的时间的Date类
Date getTime()
BigDecimal,BigInteger类
由于基本数据类型是直接通过位进行保存,所以对于超过容量的数字,或者精确的小数运算将会出现溢出,失真等问题。当我们需要进行精确的小数运算,或者极大值的数字运算时。我们可以通过BigDecimal类或BigInteger类实现。
构造方法:
//表示字符s所表示的数字,当s表示的并非数字将会抛出异常
BigInteger bi1=new BigInteger(String s);//BigInter当s表示的不是整数时将会抛出异常
常用方法:
//与b相加,获取和
BigInteger add(BigIneger b)
//与b相减,获取差
BigInteger subtract(BigIneger b)
//与b相乘获取积
BigInteger multiply(BigIneger b)
//与b相除,获取商
BigInteger divide(BigIneger b)
//与b相除,获取商与余数,数组第一个元素为商,第二个元素为余数
BigInteger[] divideAndRemainder(BigIneger b)
包装类
由于基本数据类型保存方式与对象不同,所以在java中为我们提供了这些基本数据类型的包装类。常见的包装类有:
boolean —> Boolean
char —> Character
byte—> Byte
short—> Short
long—>Long
int —> Integer
float—> Float
double—> Double
自动拆或装箱
在一般情况下我们可以将包装类当成基本类型使用。
自动拆箱:当方法需要我们传入一个基本数据类型的值进去时,我们可以将对应类型的包装类进行传入,java会自动将包装类进行转换为对应的基本类型。为基本数据类型赋值时也可以直接将包装类进行赋值。
String s= "11";
Integer i1=new Integer("1");
s.charAt(i1);
int i2=i1;
自动装箱:与自动拆箱相同,我们可以将基本数据类型直接赋值给包装类对象。
Integer i1=1;
注意:
本质上包装类不是基本数据类型!!
包装类的取值可以取到 null 基本数据类型不行。
包装类数组与对应的基本数据类型数组java并不能进行自动拆或装箱操作。