Object类的基本定义:
Object 类是所有类的父类,如果一个类定义时没有明确继承某个类,那么它就是object类的子类;
Java里面的类的继承关系一直存在(除了object);
既然 Object 类时全部类的父类,那么好处:利用Object类可以接收全部类的对象,因为可以自动转型;所以在不确定参数类型时,使用Object是最好的选择;
为什么要在Object类里面有一个无参构造方法?
- 既然Object是所有类的父类,那么所有类对象实例化的时候,子类的构造方法一定要默认调用父类的无参构造方法;
Object 类的方法:
- 取得对象信息:toString();如果是字符串,则直接输出内容,如果是对象,则会输出编码;可以覆写toString(),这样直接输出对象就调用了toString(),也和String输出一致了;
- 对象比较:equals();
object类可以接收一切引用数据类型;
匿名内部类:
如果某一种类只使用一次,可以考虑使用匿名内部类;匿名内部类就是 new 一个对象之后,直接{},然后在花括号里面写你要实现的方法。
使用匿名内部类有一个前提:必须要基于接口或者抽象类的使用;需要强调,如果匿名内部类定义在方法里面,方法的参数或者变量要被匿名内部类所访问,那么必须加上 final 关键字(JDK1.8之后此方法被改变了)。
匿名内部类的好处就是,帮助用户减少了类文件的定义。
基本数据类型的包装类:
基本数据类型:byte(Byte)、 short(Short)、 int(Integer)、 long(Long)、 float(Float)、 long(Long)、 boolean(Boolean) char(Character);
以上给出的包装类又分为2种子类型:
- 对象包装类(Object直接子类):Character、Boolean
- 数值包装类(Number直接子类):Byte、Short、Integer、Float、Double、Long
Number是一个抽象类,里面一共定义了6个操作方法:intValue()、 shortValue()、 longValue()、 floatValue()、 doubleValue()、 byteValue();
装箱与拆箱:
基本数据类型与包装类,2种变量之间的转换通过以下操作:
- 装箱操作:将基本数据类型变成包装类的形式;
- 每个包装类的构造方法都可以接收各自数据类型的变量;
- 拆箱操作:从包装类种取出被包装的数据;
- 利用Number类中提供的一些列 xxxValue() 方法完成;
使用包装类的时候一定要记得使用equas();
现在已经支持自动拆箱与自动装箱了,在数据类型的选择上更多了一些;
数据类型转换(核心):
以String为例,使用几个代表类做说明:
- Integer类:public static int parseInt(String s);
public class TestDemo{
public static void main(String args[]){
String str = "123";
int temp = Integer.parseInt(str);
System.out.printIn(temp * 2);
}
}
- Double类:public static double parseDouble(String s);
public class TestDemo{
public static void main(String args[]){
String str = "1.3";
double temp = Double.parseDouble(str);
System.out.printIn(temp * 2);
}
}
- Boolean类:public static boolean parseBoolean(String s);如果转换的字符串不是true 也不是 false ,那么将通过认为它是false。
特别注意:Character类里面不存在字符串变字符的方法,String中有一个charAt()方法,可以根据索引取出字符;
基本数据类型变成字符串的操作:
- 方法1:基本数据类型与String进行 + 操作之后是变成了连接两个字符串;该种方法在进行数据类型转换的时候会产生垃圾;
- 方法2:public static String valueOf(数据类型 变量);因为该方法时 static 类型,所以直接由类名称调用;该种方法推荐使用,不会产生垃圾;