2020-8-7 面向对象_01

匿名内部类:

就是内部类的简化写法;

前提:存在一个类或接口,类可以是具体类,也可以是抽象类;

格式:

new 类名或接口名(){重写方法;}

本质:是一个继承了类或实现了接口的子类匿名对象;

将匿名内部类用多态的方式接收并使用,就可以调用重写的方法;

例:

Inter i=new Inter(){public void show(){方法体;}};

i.show;(调用重写方法);

使用匿名内部类的好处:

用完后立即回收,不占用内存;

API:

JAVA中API指的就是JAVA中提供的各种功能的java类;

Object类:

Object类在java.lang包下,所以使用时无须导包;

Object类是类层次结构的根类,所有类都直接或间接继承自该类;

构造方法:

public Object();

Object类中的成员方法:

public int hashCode():

返回调用该方法对象的哈希码值,支持此方法是为了提高哈希表的性能;

本质是将调用对象的内部地址转换成一个整数来实现;

public final class getClass(Class类中的方法):

返回调用对象的运行时类,返回调用对象的字节码文件对象,可以看成是返回该类对象;

public String getName()(Class类中的方法):

以String的类型返回此Class对象所表示的实体(类,接口,数组类,基本类型或void)名称,返回一个全路径名称;

例:

Student s=new Student;

s.getClass().getName;

public String toString():

返回该对象的字符串表示,通常,toString方法会返回一个以文本方式表示此对象的字符串.结果应该是一个简明且易于读懂的信息表达时式,建议所有子类重写该方法;

默认的Object类的toString方法返回的值为:

getClass.getName+'@'+Interger.toHexString(hashcode());

public static String toHexString(int i):

以十六进制(基数16)无符号整数形式返回一个整数型参数的字符串表现形式;

直接输出一个对象名称,其实就是调用Object类中的toString方法;

public boolean equals(Object obj):

指示其他某个对象是否与此对象"相等";

==:基本类型:比较的就是值是否相同;

  引用类型:比较的就是地址值是否相同;
  		
源码:
public boolean equals(Object obj){
	return (this==obj);
}

注意:当此方法被重写时,通常有必要重写hashCode方法,以维护hashCode方法的常规协定,该协定声明相等对象必须有相同的哈希码

一般我们使用equals方法都要进行重写;

public boolean equals(Object obj)(String类中):

将此字符串与指定的对象作比较(比较的是内容);

注意:使用String类中的equals来比较字符串重写Object类的equals方法时,要将obj进行向下转型为需要的类型以调用get/set或其他方法;

零碎知识点:

protected void finalize():

当垃圾回收器确定不存在对该对象的更多引用时,由该对象的垃圾回收期调用此方法,子类重写此方法,以配置系统资源式执行其他清除(回收的时机不确定);

protected Object clone():

创建并返回此对象的一个副本;

调用此对象需要实现Cloneable接口;

Cloneable为标记接口,告诉我们实现该接口的类就可以实现对象的复制;

clone出来的对象与原对象无关联,对原对象作删改不会影响到clone的对象;

Scanner:

构造方法:

public Scanner (InputStream Source):创建一个新的Scanner,从指定的输入流扫描;

public static final InputStream in(System类中):

作为System类中的静态常量,"标准输入流",此流已打开并准备提供输入数据,通常,此流对应于键盘输入或由主机环境或用户指定的另一个输入流;

成员方法:

hasnextXxx():判断是否还有一个输入项,其中Xxx可以是Int,Double等.如果判断是否包含下一个字符串,则可以省略Xxx;(用于判断输入的数据是否为Xxx类,并返回一个布尔类型的数据);

nextIntXxx:获取下一个输入项,Xxx可以是Int,Double等,字符串省略Xxx(返回一个Xxx类型的数据);

注意事项:

使用Scanner录入数据时,先获取数据,再获取字符串,字符串将获取到换行符;

例:

Scanner sc=new Scanner(System.in);

int i=sc.nextInt();

String s=sc.next();

在输出i和s的时候,s的输出像是空值一样,其实是i数据换行符被s所接收导致;

针对这个问题,有两种解决方案:

1.获取数据后,创建一个新的Scanner对象 ;

2.把所有数据都先用字符串获取,然后要什么,就转换成什么;

String类(java.lang):

字符串是由多个字符组成的一串数据(字符序列);

字符串可以看成是字符数组;

字符串为常量,在字符串缓冲区支持可变字符串;

构造方法:

1.public String():空构造;

2.public String(byte[] bytes):把字节数组转为字符串;

3.public String(byte[] bys,int offset,int length):把字节数组从offset开始,长度为length的数组转换为字符串;

4.public String(char[] value):把字符数组转换为字符串;

5.public String(char[],int offset,int length):把字符数组从offset开始,长度为length的数组转换为字符串;

6.public String(String original):把字符串常量转换为字符串;

字符串的方法:

public innt length():

返回此字符串长度;

String中的toString方法有重写,输出为空;

字符串赋值:

先到字符串常量池里去找,如果有就直接返回,没有就先创建在返回;

字符串赋值,值不能变,引用(地址)可以变;

String s=new String("hello");

String s="hello";

这两者的区别在于:前者在常量池和堆内存分别造了一个对象,后者只在常量池创建了一个对象;

字符串如果是常量相加,先相加,然后在常量池创建对象或找寻已有常量值;

字符串如果是变量相加,先开辟空间,再相加;

String类的判断功能:

1.public boolean equals(Object obj):比较字符串内容是否相同,区分大小写;

2.public boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,不分大小写;

3.public boolean contains(String str):判断大串中是否包含小串;

4.public boolean startWith(String str):判断字符串是否以某个指定的字符串开头;

5.public boolean endWith(String str):判断字符串是否以某个指定的字符串结尾;

6.public boolean isEmpty():判断字符串是否为空,要注意空指针异常;	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值