笔记06

Object类:
跟线程相关:notify / notifyAll / wait*3
1)getClass():获得泪的字节码对象
类加载:
使用类的情况:
new 对象 -> 实例化
调用静态变量 / 静态方法
调用子类之前 , 必须先加载父类
xx.class
2)clone():
深克隆:复制对象
浅克隆:复制引用

3)finalize():
	GC - 垃圾回收机制

	内存溢出:100%
	内存泄漏:100% 实际使用内存50%

4)toString():将对象以字符串的形式输出
	默认实现:
		getClass().getName() + @ + Integer.toHexString(hashCode())
		@前:表示的是完成的类名
		@后:表示16进制的hashCode值
		如果想要自定义格式输出,那么就重写toString()
5)equals()
	作用:判断两个对象[this 和 obj]是否相等
	Object中默认实现方法:
		this == obj -> 判断两个地址值相不相等
	方法重写:
		目的:自定义比较规则
			步骤:
				1、判断是不是同一个对象
				2、判断是不是同一个类型
				3、既不是同一个对象,也不是同一个类型

	Object object(工具类) Arrays
	Collections

6)hashCode()
	作用:生成对象的hash值
		跟内存中的存储位置相关

	public native int hashCode();
	hashCode()不是抽象方法,但是也没有方法体,就是因为他是本地方法,这是跟底层相关的方法,底层是由C实现
	native:本地的
		java Native Interface

java.lang -> String 包装类 线程
java.util -> Arrays Collection Map
java.io -> Input Output
java.text -> 格式化 DateFormat
java.net -> 网络编程 TCP / IP

java.sql -> 数据库

跟时间相关的类:
long类型:
a、获得当前系统时间
long System.currentTimeMills()

	b、作用:通常用来做计算,计算效率(7天以内的计算)
	c、注意:
		在进行计算时,需要注意整数类型的默认值是int类型
		如果超出了int类型的范围,就是溢出了,会变成负数所以需要在计算之前先标记好是long类型,加L/l

Date类:
	a、作用:专门用来做时间的显示
	b、创建 - 构造方法
		1)得到当前系统时间
			new Date()
		2)得到long类型的时间
			new Date(long)
	c、常用API
		date1.after(date2)
		date1.before(date2)

		通过Date获得long(Date -> long)
		date.getTime()
		使用long类型的时间做计算,然后输出Date类型(long -> Date)
		date.setTime()

Calender - 万年历
	a、作用:专门用来做时间推算或者是时间跳转
	b、特点:是abstract修饰的类,是一个抽象类,所以不能直接new对象,只能创建子类或者调用类的静态方法
	c、创建
		Calendar.

		get() - 获取时间
		set() - 时间的跳转
		add() - 时间的推算

	Calendar 和 Date 之间的转换
		Calendar -> Date
			Date getTime()
		Date -> Calendar
			void setTime()
	Calendar 和 long之间的转换
		getTimeINMillis()
		setTimeINMillis()
	Date 和 long 之间的转换

java.text - 格式化

SimpleDateFormat
常用API
a、使用指定格式将时间格式化
String format(date)
b、将字符串转变成时间
Date parse(“String”)
c、注意:
要求必须符合SimpleDateFormat的格式否则就会出现ParseException

复习:

多态:
继承/重写/向上造型
向上造型: 父类型的引用 指向 子类型对象
Fu fu = new Zi();
编译时类型:看左边类型,决定对象能调用那些属性和方法
运行时类型:看右边类型,决定对象最终能调用的方法是那个

向下转型:
	类型转换异常:ClassCastException
	instanceof
	Dog
	Cat

内部类:
成员内部类
静态内部类
局部内部类(匿名内部类)

匿名内部类:只能使用一次的类
匿名对象:只能调用一次方法

API(application progamming Interface):应用程序接口
api -> 帮助文档

String java.lang.String
Math java.lang.Math
Scanner
System

常用类:Object
1.是所有类的基类/父类,所以类都默认继承Object
2.11方法
1)Class getClass()
(1)作用: 对象通过该方法,可以获得对象对应的类的字节码对象
xx.java -> xx.class -> JVM
类加载 - 方法区 - 字节码对象
加载:类只加载一次,所以方法区中类信息只有一个,所以字节码对象也只有一个

				加载的触发条件(使用类) - 工具:类加载器(ClassLoader)
					I: 实例化对象 new
					II: 静态方法/静态变量
					III:使用子类,父类必须先加载
					IV: Class.forName("java.lang.String") --手动加载指定的类
					V: String.class -> 获得类的字节码对象

		(2)notify/notifyAll/wait * 3  -> 跟线程相关,先不学

	2)Object clone() - 克隆
		(1)对象的克隆方式(图解)
			深克隆:复制对象
				是复制一份全新的,属性内容一致的对象,但是内存中的地址值一定不一样
			浅克隆:复制引用

		(2)调用
			clone调用时 -> not visible(不可见)
				要求: clone的对象必须标记是可克隆的,因为他是protected修饰的,只能在子类中可见,所以要进行重写

		(3)一般不会重写clone方法
			I:因为clone方法不常用到
			II: 可以直接使用 - 引用复制
			III: 如果要重写clone方法,直接调用,则要实现Cloneable接口,否则会抛出CloneNotSupportedExecption
				Cloneable是一个空接口.目的只有一个就是为了标记是 可克隆的

	3)void finalize() - GC 垃圾回收机制
		内存溢出:在内存中没有存储的地方
		内存泄漏:内存被无效对象占用
			一个对象分配内存之后,在使用结束时没有来得及释放,导致一直在占用内存,使得实际可用内存减少

		GC - 垃圾回收机制,定时清理内存
			I: 在程序运行时是开始启动,不定时回收内存中标记的垃圾,没有引用的对象,会被内存标记为垃圾
			II: GC是自动调用的,也可以手动调用GC - Sytem.gc();

		总结: 原则上,Java中是不存在内存泄漏的

4)toString():将对象以字符串的形式输出
默认实现:
getClass().getName() + “@” + Integer.toHexString(hashCode())
@前:表示的是完整的类名
@后:表示16进制的hashCode值
如果想要自定义格式输出,那么就重写toString()

5)equals()
作用:判断两个对象[this 和 obj]是否相等
Object中默认实现方式:
this == obj -> 判断两个地址值相不相等
方法重写:
目的:自定义比较规则
步骤:
1.判断是不是同一个对象
2.判断是不是同一个类型
3.既不是同一个对象也不是同一个类型就直接返回fasle

Object Objects(工具类) Arrays Collections
  1. hashCode()
    作用:生成对象的hash值
    跟内存中的存储位置相关
    public native int hashCode();
    hashCode() 不是抽象方法,但是也没有方法体,就是因为他是本地方法,这是跟底层相关的方法
    底层是由c实现
    native: 本地的
    Java Native Interface

java.lang -> String 包装类 线程
java.util -> Arrays Collection Map
java.io -> Input Output
java.text -> 格式化 DateFormat
java.net -> 网络编程 TCP/IP

java.sql -> 数据库


跟时间相关的类:
long类型:
a.获得当前系统时间
long Systen.currentTimeMills()

b.作用:通常用来做计算,计算效率(7天以内的计算)
c.注意:
在进行计算时,需要注意整数类型的默认值是int类型
如果超出了int类型的范围,就是溢出了,就会变成负数
所以需要在计算之前先标记好是long类型,加L/l

Date类:
a.作用:专门用来做时间的显示
b.创建 - 构造方法
1)得到当前系统时间
new Date()
2)得到long类型的时间
new Date(long)
c.常用API
date1.after(date2)
date1.before(date2)

	通过Date获得long(Date -> long)
	 date.getTime()
	使用long类型的时间做计算,然后输出Date类型 (long -> Date)
	 date.setTime()

Calendar - 万年历
a.作用: 专门用来做时间推算或者是时间跳转
b.特点: 是abstract修饰的类,是一个抽象类,所以不能直接new对象,只能创建子类或者调用类的静态方法
c.创建
Calendar.getInstance()
d.常用API
get() - 获取时间
set() - 时间的跳转
add() - 时间的推算

Calendar 和 Date 之间的转换
	Calendar -> Date:
		Date	getTime()
	Date -> Calendar:
		void	setTime()

Calendar 和 long 之间的转换
	getTimeInMillis() 
	setTimeInMillis() 

Date 和 long 之间的转换
	getTime()
	setTime()

java.text - 格式化

SimpleDateFormat
常用API
a.使用指定格式将时间格式化(date -> String)
String format(date)
b.将字符串转变成时间(String -> date)
Date parse(“String”);
c.注意:
要求必须符合SimpleDateFormat的格式
否则就会出现ParseException

gitHub
Git
VCS - 版本控制系统

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值