Java高级学习-Object + API
Object
java.lang.object 类是根类,超类。所有对象都实现这个类方法。
toString()
public String toString() : 返回对象类型+ @ + 内存地址值
@override public String toString() { return xx}
直接打印对象的名字。其实就是调用对象的toString,打印堆内存的地址。
**需要进行覆盖重写。直接快捷键生成。**System.out.print(对象名)判断是否重写。
equals
指示其他对象是否与此对象"相等"。
基本数据类型:比较值 引用数据类型:比较地址
Object obj : 可以传递任意的对象
重写equals方法,比较两个对象的属性。
问题:隐含着多态 { 父类指向子类 } ,多态的弊端无法使用子类的特有的内容(属性和方法)
解决:使用向下转型,将obj类型,转换为子类,再使用子类的属性,比较内容(值)
@override
public boolean equals ( Object obj ) { //比较传递的obj参数是不是this本身,返回true //判断传递的参数是否为null,返回false, //提高程序效率 //防止ClassCastException 类型转换异常 if (obj instanceof 子类名) { 子类名 对象名 = (子类名) obj ; boolean b = this.name.equals (对象名.name ) ; return b; } return false;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
快捷键 alt + ins ---- equals()and hashCode()
Object类的equals 方法:对两个对象进行比较,防止空指针异常
Object.equals (null,x1); //返回false
日期时间类
Date类
java.util.Date 类表示特定时间,到毫秒 1000毫秒 = 1 秒 s/1000/60/60/24 = 天
System.currentTimeMillis() // 获取当前系统时间从1970年1.1日 八点 经历了多少毫秒。
构造方法:
无参:Date date = new Date(); //date 为获取的当前系统日期和时间
带参:Date date = new Date( 0 L);//date 为:1970年1.1日 08:00:00,参数为毫秒。
long getTime() 日期转毫秒值,相当于 System.currentTimeMillis()
long t = data.getTime();// t为毫秒值
DateFormat类
格式化 日期–文本,解析 文本–日期
java.text.DateFormat 抽象类,不能直接创建对象。
成员方法:
String format(Date date) // 按照指定格式,把Date日期转化为符合格式的字符串(文本)
Date parse (String source) // 按照指定格式,把字符串转化为Date日期
SimpleDateFormat
使用DateFormat 的子类进行创建对象:SimpleDateFormat
构造方法:
SimpleDateFormat (String pattern) // 用给定模式和默认语言环境进行构造
y 年 M 月 d 日 H 时 m 分 s 秒
例如:yyyy年MM月dd日 HH 时 mm 分 ss 秒
SimpleDateFormat sdf = new SimpleDateFormat (“yyyy年MM月dd日 HH 时 mm 分 ss 秒”);
sdf.format(date);
parse 把字符串格式的日期,解析为Date格式的日期
parse 声明了一个parseExcption 解析异常{ 字符串和构造方法的模式不一致} ,需要 throws 继续抛出异常,或者try,catch自己处理。
Date date = sdf.parse(" xx ");
Calendar
java.util.Calendar是日历类,抽象类
提供了YEAR,MONTH,DAY_OF_MONTH(天),DAY_OF_WEEK (星期几), HOUR
Calendar.getInstance()静态方法返回一个Calendar子类对象,使用的是多态,父类抽象类接收子类对象。
成员方法:
get(Calendar.YEAR)
set(Calendar.YEAR,1999),set(9999,12,30)—重载
add(Calendar.YEAR,-2)
Date date = x.getTime()日历变日期
System
System.currentTimeMillis() // 获取当前系统时间从1970年1.1日 八点 经历了多少毫秒。测试程序耗时。
arraycopy 数组复制
System.arraycopy (源数组,起始位置索引,目标数组,起始位置索引,元素数量)
StringBulider
字符串缓冲区,支持可变的字符串,在内存中是一个数组,效率高
byte[ ] value = new byte[16];
成员方法:
append():添加任意类型的字符形式,并返回当前对象自身(this),地址相同。
链式编程,方法返回是一个对象,可以继续调用方法。
append().append().append()
toString():将StringBulider–>String
StringBulider(String str):将String–>StringBulider
包装类
将基本类型的数据用类装起来,在类中定义一些方法,这个类是包装类,使用类中的方法进行使用基本类型。包装类可以设置为null
int – Integer , char – Character
装箱与拆箱
装箱:把基本类型的数据,包装到包装类中(基本类型 --> 包装类)
构造方法:
Integer(int value),Integer(String s),例如:new Integer(“100”)
构造新分配的 Integer 对象
静态方法:
static Integer valueOf(int value),static Integer valueOf(String s)
返回指定 int 的 Integer 实例,返回指定 String 的 Integer 实例,
Integer in = Integer.valueOf(1); Integer in = Integer.valueOf("a"); //出现数组格式化异常 NumberFormatException
- 1
- 2
- 3
拆箱:从包装类取出基本类型(包装类 --> 基本类型)
int intValue();以 int 类型返回 Integer 值。
自动装箱与拆箱
基本类型的数据与包装类可以自动的相互转换
自动装箱:直接把int类型的整数赋值包装类
Integer in = 1;
自动拆箱:包装类无法直接参与运算,自动转换为基本数据类型进行计算
in + 2 == in.invalue() + 2;
基本类型与字符串类型的转换
基本类型 --> 字符串:
1.基本类型 + " "
2.包装类的静态方法Integer. toString(参数)。不是Object的toString(),是重载
3.String类的静态方法String. valueOf ( int i ),返回 int 参数的字符串表示形式
字符串 --> 基本类型:
使用包装类的静态方法parseXXX(“数组类型的字符串”):
int parseInt(String s) ;double parseDouble(String s)
int i = Integer.parseInt ( s ) ;
作业
简述String类中的equals方法与Object类中的equals方法的不同点
Object是判断同一个对象是否一样,比较内存地址空间,String是判断对象内容是否相同。
简述StringBuilder类与String类的区别
StringBuilder字符缓冲区,字符可以进行添加,是一个容器,内部拥有数组来存储字符串内容,可以直接进行再数组添加东西。String对象内容不能进行改变,每一次拼接时是创建一个新的对象。
文章来源: blog.csdn.net,作者:αβγθ,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/weixin_38022166/article/details/115381824
- 点赞
- 收藏
- 关注作者
评论(0)