java学习第十八天内容

1.前一天重点内容复习

        方法形式参数是抽象类和接口,实际参数如何传递

                如果是抽象类,调用该方法时,实际参数需要传递该抽象类的子类对象

                如果是接口类型,调用该方法时,实际参数需要传递实现接口的子实现类对象

        方法返回值如果是抽象类和接口,需要返回什么?

                如果是抽象类型,返回值为抽象类的子类对象

                如果是接口,返回值为实现接口的子实现类对象

        Object的equals方法

                功能:比较两个对象地址值是否相等

                建议所有子类重写,并重写hashCode()方法

                子类重写之后,功能变为比较两个对象的成员信息是否一致

        ==和equals的区别

                ==

                        连接的是两个基本数据类型,比较基本数据类型的值是否相同

                        连接到是两个引用数据类型,比较两个引用数据类型的地址值是否相同

                equals()

                        只比较引用数据类型,默认功能为比较对象地址值是否相同,重写之后为比较两个对象内容是否相同

        Object的toString()

                原码:

public String toString(){
    return getClass().getName()+"@"+Integer.toHexString(hashCode());
}

                 输出内容:

                        包名.类名@十六进制数据的字符串形式

                建议所有子类重写,可以自动生成(alt+ins,选择toString())

2.匿名内部类

        定义:没有名字的类

        使用:具体类使用很少,抽象类和接口使用较多

        格式:

new 类名(一般情况下为抽象类)或者接口名(){
    重写抽象类或者接口的抽象方法(){
        //代码块
    }
};

        本质:继承了该抽象类或者实现了接口的子类对象,所以可以使用变量名来引用

类名或者接口名 变量名 = new 类名(一般情况下为抽象类)或者接口名(){
    重写抽象类或者接口的抽象方法(){
        //代码块
    }
};

        使用:通过变量名引用来调用匿名内部类的方法 

3.拉姆达表达式

        当接口中有且仅有一个抽象方法的时候,这个接口称为”函数式接口“,可以通过->直接实现接方法

                普通方式:

​对像.方法名( new 类名或者接口名(){
    public void 方法名(){
        //代码块
    }
});

                拉姆达方式:

​​对像.方法名( 
        () -> {
            //代码块
        }
);

4.Object类的clone()方法

        作用:返回此对象的副本

        本质:将原对象的地址值赋值给新对象,内存中就是栈内存中的两个变量指向堆内存的一个对象

        使用:对象调用克隆方法,必须保证对象的类实现Cloneable标志接口,只有实现了标志接口,才可以调用clone()方法实现克隆

5.Scanner类

        java.util.Scanner:文本扫描器

        构造方法:

public Scanner(InputStream source)

                参数InputStream source含义:

                        InputStream:字节输入流

                        System类中有一个自定义常量:      

public static final InputStream in

        功能

                判断功能:判断下一个录入的是否为XXX类型

public boolean hashNextXXX(){}    XXX对应数据类型

                 获取功能:录入XXX类型的数据

​public boolean nextXXX(){}    XXX对应数据类型

6.键盘录入细节 

        先录入基本数据类型,再录入String类型有可能出现错误,这种错误是由录入第一个数据之后回车,回车也是符号,可以被String类型接受,所以第二个数据再按回车之后就被录入了,导致错误的录入,解决方法为使用next()方法或者重新建一个键盘录入对象

7.String类

        介绍:代表字符串类,是一个常量,一旦被创建,其地址值不能被更改,除非重新赋值,在内存中的方法区的常量池中开辟空间,存储内容,String类的底层是字符串数组构造的

        格式:String 字符串名 = "字符串内容";

        使用:直接输出字符串名,输出内容为字符串的内容,因为String类型重写了Object类的toString()方法

        构造方法

                String():空参构造   

                String(byte[] bytes):有参构造,里面是字节数组,将byte数组类型变成Sring类型,解码过程为将String看不懂的字节数组内容转为看得懂的字符内容

                String(byte[] bytes, int offset, int length):将一部分字节数组转换为字符串

                        参数1:字节数组

                        参数2:指定位置开始   

                        参数3:指定长度

                String(char[] value):将字符数组转为字符串

                String(char[] value, int offset, int count):将字符数组中的一部分转为字符串

                        参数1:字符数组

                        参数2:指定位置开始   

                        参数3:指定长度     

                String(String original):构造字符串对象,参数为字符串常量值          

8.空字符序列""和null的不同

        ""空字符序列:有对象存在,只不过没内容,可以调用方法

        null空对象:没有对象存在,不可以调用方法

9.数组、String类、集合有没有length()方法

        数组没有length()方法,但是有length属性

        String类中有length()方法

        集合没有length()方法,但是有sise()方法获取集合元素数

10.String类中的concat()方法

        功能:实现字符串的拼接功能

11.直接常量赋值给字符串和通过new对象来将常量赋值给字符串的区别

        直接常量赋值:在栈内存中开辟空间,放入字符串类型的引用变量,在方法区中的常量池中开辟空间,放入赋值内容,将方法区的常量池中内容的地址值给栈内存中的引用变量引用

        通过new对象来进行常量赋值:在栈内存中开辟空间,放入字符串类型的引用变量,在堆内存中开辟空间,放入字符串对象,赋值时发现常量标记,去方法区的常量池开辟空间,将内容存入方法区的常量池开辟的空间中,之后将方法区中常量池中的空间地址值给堆内存中的对象,堆内存中的对象又给了栈内存中的引用变量引用

12.String的判断功能

        public boolean contains(String s):判断字符串中是否包含指定字符串序列

        public boolean endsWith(String suffix):判断字符串中是否以指定字符结尾

        public boolean startsWith(String prefix):判断字符串中是否以指定字符开头

        public boolean isEmpty():判断字符串内容是否为空

        public boolean equals(Object anObject):不区分大小写的判断字符串内容是否相同

12.String的获取功能 

        public char charAt(int index):获取指定索引处的字符值

        public String concat(String str):拼接功能,获取到一个拼接后的字符串

        public int indexOf(int ch):返回指定字符第一次出现在字符串中的索引值

        public int indexOf(String str):返回指定子字符串在字符串中第一次出现的索引值

        public int lastIndexOf(int ch):返回指定字符最后一次出现在字符串中的索引值

        public int lastIndexOf(String str):返回指定子字符串在字符串中最后一次出现的索引值

        public String substring(int beginIndex):从指定位置开始默认截取到末尾,返回一个新的字符串

        public String substring(int beginIndex,int endIndex):从指定位置开始,截取到指定位置,返回一个新的字符串,包前不包后,最后只能取到结束位置的前一个

        public String[] split(String regex):按照指定的分割符号拆分成字符串数组

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值