2021-1-25~29学习总结

千峰2021-1-25~2021-1-29学习总结
第一天
  1. 什么是接口
    接口是一种额外的功能----本身是当前现实世界事物没有的功能

  2. 接口的特点
    1)接口中的功能是抽象方法,不能有方法体
    2)接口不能实例化
    3)如何实例化呢?
    ​ 通过" 接口多态"
    ​ 接口名 对象名 = new 子实现类名();
    ​ 接口是通过子实现类实例化,前提这个子实现类是一个具体类

  3. 接口中的成员特点
    成员变量: 公共静态常量( public static final(可以省略不写))
    成员方法:公共抽象方法(public static final (可以省略不写))
    构造方法:没有构造方法

  4. 接口与接口的关系
    ​ 继承关系:extends
    ​ 接口与接口之间是继承关系,可以单继承,也可以是多继承

  5. 接口与子实现类的关系
    ​ 实现关系:implements
    ​ 类---->接口的子实现类,实现接口的功能!

    ​ 一个类在继承另一个类的同时,可以实现多个接口

  6. 方法的形式参数:
    ​ 引用类型:
    ​ 1)数组:实际参数需要传递当前数组对象
    ​ 2)类:
    ​ 具体类:实际参数传递,需要该具体类对象(要么接匿名对象,要么 具体类名 对象名 = new 具体类名())
    ​ 抽象类:实际参数传递,需要该抽象类的子类对象(通过抽象类多态的形式);或者通过匿名内部类进行传递
    ​ 接口类型:实际参数传递,需要该接口的子实现类对象(通过接口多态的形式);或者通过匿名内部类进行传递

    方法形式参数:  如果是引用类型(除过String),形式参数的改变会直接影响实际参数
    方法形式参数:如果是基本数据类型或String类型,形式参数的改变不会直接影响实际参数
    
  7. 方法的返回值是引用数类型

    ​ 具体类:方法需要结束,返回的是当前具体类型----有一个空间地址值(匿名对象/有名字对象 类名 对象名 = new 类名())

    ​ 抽象类 :方法需要结束,返回的是当前抽象类的子类对象,定义一个子类继承抽象 类; 或者通过匿名内部类进行传递
    ​ 接口类型:方法需要结束,返回的是当前接口的子实现类对象,定义接口的子实现类实现接口(接口多态) ;或者通过匿名内部类进行传递

第二天
  1. 修饰符

    1)状态修饰符:
    ​ final:最终的,无法更改的
    ​ 可以修饰类,当前类不能被继承
    ​ 可以修饰变量,此时这个变量是一个常量
    ​ 可以修饰成员方法,此时这个方法不能被重写

    2) 静态修饰符
    ​ static: 共享(共用):
    ​ 随着类/接口的加载而加载
    ​ 优先于对象存在 (不能this关键字)
    ​ 被static修饰 的成员变量,可以被多个对象共用
    ​ 被static修饰的,它的访问方法是 :

    ​ 推荐—>使用类名/接口名.变量;/方法名()

    3)抽象修饰符

    ​ abstract:抽象
    ​ 可以修饰类----抽象类(描述:现实世界事物中,比较概括性的东西)
    ​ 可以修饰成员方法---->抽象方法
    ​ 可以在抽象类中使用
    ​ 也可以接口中使用
    4)public 权限:在整个项目中都可以访问
    ​ private 权限:在当前类中可以访问
    ​ default(默认修饰符) 权限:到同一个包下的其他类都可以访问
    ​ protected:权限:最大到不同包下的子类

  2. 什么是内部类
    一个类中定义另一个了类
    ​ 举例:
    ​ 在类A中定义了一个类B,那么将类B称为类A的内部类,类A是当前类B的外部类
    ​ 内部类的特点:
    ​ 1)内部类中的成员可以访问外部类的成员,包括私有
    ​ 2)外部类的成员访问内部类(成员内部类)中的成员方法,需要创建内部类对象来访问

  3. 内部类的划分
    1)成员内部类: 在一个类的成员位置定义的类,(外部类中,方法外)
    ​ 特点:
    ​ (1)它的成员可以访问外部类的成员,包括私有
    ​ (2)测试类中,访问当前成员内部类中的成员方法
    ​ 当前成员内部类:是非静态的!
    ​ 格式: 外部类名.内部类名 对象名 = new 外部类名().new 内部类名();
    ​ 对象名.方法名/属性

    在成员内部类上加入static 修饰
    ​ 特点:
    ​ 静态的成员内部类中的成员方法(静态/非静态)只能访问外部类的静态的成员,否则报错
    ​ 非静态的成员内部类中不能出现静态的成员
    ​ 在测试类中,访问静态的成员内部类的成员?
    ​ 外部类名.内部类名 对象名 = new 外部类名.内部类名() ;

    ​ 推荐:外部类名.内部类名.方法名/属性

    2)局部内部类:在方法定义中定义的类

    ​ 特点:
    ​ (1) 局部内部类的成员都可以访问外部类的成员,包括私有
    ​ (2) 外部类的成员要访问局部内部类中的成员
    ​ 通过对象访问 内部类名 对象名 = new 内部类名() ;

    3)什么是匿名内部类

    ​ 匿名内部类,就是没有名字的一个类

    ​ 使用格式:
    ​ new 类名/接口名(){
    ​ 重写方法;
    ​ } ;

    ​ 匿名内部类的本质是什么?
    ​ 本质就是继承了该抽象类或者是实现了该接口的 子类对象

第三天
  1. 类 Object 是类层次结构的根类
    获取字节码文件方式:
    (1)Object类中getClass()
    public final Class getClass() 表示正在运行的类
    获取到的这个Class----class 包名.类名
    ​ (2)任意 Java类型class属性
    ​ Class c =类名.class;

    public String toString() 返回该对象的字符串表示。通常,toString 方法会返回一个“以文本方式表示”此对象的字符串。结果应是一个简明但易于读懂的信息表达式。 ----->建议所有子类都重写此方法

    public boolean equals(Object obj) 指示其他某个对象是否与此对象“相等”?
    如果默认执行的是Object类中的equals方法,比较的是两个对象的地址值是否相同;
    如果重写了equals方法,比较的是两个对象的内容是否相同(成员变量信息是否一致)
    protected Object clone()
    ​ throws CloneNotSupportedException创建并返回此对象的一个副本
    Object 类的 clone 方法执行特定的复制操作。首先,如果此对象的类不能实现接口 Cloneable,则会抛出 CloneNotSupportedException。注意,所有的数组都被视为实现接口 Cloneable

  2. String类

      String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现
    
    	字符串是常量;它们的值在创建之后不能更改
    

    构造方法
    ​ String() :构造一个空字符序列
    ​ public String(byte[] bytes):将字节数组构造成一个字符串(解码的过程-平台默认的解码格式:UTF-8)
    ​ public String(byte[] bytes,int offset,int length):将一个部分字节数组构造成字符串
    ​ 参数1:字节数组对象
    ​ 参数2:指定的角标
    ​ 参数3:指定的长度
    ​ public String(char[] value):将字符数组构造成字符串
    public String(char[] value,int offset,int count):将字符数组的一部分构造成字符串
    ​ public String(String original):将某个字符串数据常量–构 造成String对象

  3. 数组中有没有length(),字符串中有没有length(),集合中有没有length()方法?
    ​ 数组中没有length方法的,获取数组长度 :length属性
    ​ String类中:有length() :获取字符串中的字符的长度
    ​ 集合中:没有length() : 获取集合的元素数:size()

第四天
  1. String类的判断功能
    public boolean equals(Object an):和指定的字符串进行比较(字符串重写了Object类中的equals方法):比较的是字符串 内容是否相同
    public boolean equalsIgnoreCase(String anotherString):不区分大小写比较
    public boolean contains(String s/字符序列):判断是否包含指定的字符序列
    public boolean endsWith(String suffix):判断当前此字符串是否以指定的子字符串结尾
    public boolean startsWith(String prefix):判断当前此字符串是否以指定的子字符串开
    public boolean isEmpty():判断此字符串是否为空

  2. 字符串常量相加和字符串变量相加的区别
    字符串常量相加:
    先相加,然后在常量池中找是否存在这个常量,如果存在,直接返回值常量池中的该地址值; 如果不存在,在常量池中开辟空间
    字符串变量相加:
    ​ 先开辟空间,然后对结果----拼接----新的字符串变量(== 考虑其地址值)

  3. String类的获取功能:

     	public char charAt(int index):获取指定索引处的字符
     	public String concat(String str):将指定的字符串和此字符串进行拼接,获取一个新的字符串
     	public int indexOf(String str):获取子字符串在当前字符串中第一次出现的索引值
     	public int lastIndexOf(String str):获取子字符串在当前字符串最后一次出现的索引值
     	public int length():获取字符串的长度
     	public String substring(int beginIndex):从指定位置开始默认截取到末尾,获取当前字符串
     	public String substring(int beginIndex,int endIndex):从指定位置开始截取到指定位置结束,包左不包右
    
  4. String类的转换功能

    ​ public byte[] getBytes():编码过程(将能看懂的东西转换成看不懂的):将字符串转换字节数组
    public char[] toCharArray():将字符串转换成字符数组
    public String[] split(String regex):将字符串转换成字符数组(分割/拆分功能)
    public String toLowerCase():将字符串转换小写
    public String toUpperCase():将字符串转换成大写
    public static String valueOf(int/long/float/double/boolean/Object):万能方法,将一些部分基本数据类型和引用类型转换成String

  5. String类的其他功能

    替换功能
    ​ String replace(char oldChar, char newChar)
    去除两端空格
    ​ public String trim()

  6. public int compareTo(String anotherString)按字典顺序比较两个字符串
    两个字符串进行比较(字典顺序)​

    ​ s1,s2
    1)将s1,s2分别转换成字符数 组,获取这个两个长度:len1,len2
    2)获取两个字符数组中长度的最小值 通过Math.min(len1,len2) ;----int lim
    3)分别将字符数组的元素进行初始化:
    char v1[] = {‘元素1’,‘元素2’…};
    char v2[] = {‘元素1’,‘元素2’…} ;
    4)定义统计变量k
    while(k<lim){ //k 从0开始
    //获取第一个字符数组中的第一个元素
    char c1 = v1[k] = v1[0] = ‘元素1’;
    char c2 = v2[k] = v2[0] = ‘元素1’ ;
    //c1和c2相等,继续判断,继续判断第二个字符是否一致,依次这样,
    (如果都一致,条件不成立)while循环结束
    if(c1!=c2){
    return c1 -c2 ;//字符对应的ASCII码表的值相减
    }
    k++;
    }
    5)return len1-len2;

  7. StringBuffer类:

      线程安全的可变字符序列------  字符串缓冲区
      	构造方法
     		StringBuffer() :无参构造方法 :构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符。
     		public StringBuffer(int capacity):构造一个字符串缓冲区,指定容量大小
     		 public StringBuffer(String str):构造一个带内容的字符串缓冲区:字符串的初始容量为 16 加上字符串参数的长度
     	方法:
     		public int capacity():获取容量大小
     		public int length():获取字符串长度
    
第五天
  1. StringBuffer的添加功能

    ​ public StringBuffer append(xxx);将任意类型的内容追加到此序列中(字符串缓冲区中)
    public StringBuffer insert(int offset,String xxx):在指定位置处插入指定的元素

  2. StringBuffer的删除功能

    ​ public StringBuffer deleteCharAt(int index):删除指定位置处的字符序列,返回值是StringBuffer本身
    ​ public StringBuffer delete(int start,int end):从指定位置删除到指定位置结束的字符序列(包含start位置,结束到end-1),返回值自己本身

  3. StringBuffer的其他功能

    ​ 替换功能:
    ​ public StringBuffer replace(int start,int end,String str)
    ​ 从指定位置处开始到end-1处,使用str字符进行替换,返回StringBuffer

    ​ 本身反转功能:

    ​ public StringBuffer reverse():将缓冲区中的字符串进行反转,返回的StringBuffer本身

  4. StringBuffer的截取功能:

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

    ​ public String substring(int start,int end):从指定位置开始截取到end-1的位置,返回值是新的字符串

  5. String和StringBuffer之间的相互转换

    1)将.String转为StringBuffer
    ​ 方式一:利用StringBuffer的构造方法 //StringBuffer(String str)
    ​ String s = “hello” ;
    ​ StringBuffer sb = new StringBuffer(s) ;
    ​ System.out.println(“sb:”+sb);
    ​ 方式二:利用StringBuffer的追加功能 append //空参构造
    ​ String s = “hello” ;
    ​ StringBuffer sb2 = new StringBuffer() ;
    ​ sb2.append(s) ;
    ​ System.out.println(“sb2:”+sb2);

    2)将StringBuffer转为String
    ​ 方式一: 利用String的构造方法 public String(StringBuffer buffer)
    ​ StringBuffer buffer = new StringBuffer(“Javaee”)
    ​ String result = new String(buffer) ;
    ​ System.out.println(“result:”+result);
    ​ 方式二:StringBuffer的功能 //public String toString()
    ​ StringBuffer buffer = new StringBuffer(“Javaee”)
    ​ String result2 = buffer.toString();
    ​ System.out.println(“result2:”+result2);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值