java一些新的知识


集合ArrayList

ArrayList list1 = new ArrayList();
// ArrayList<限制类型> list = new ArrayList<>();
ArrayList<String> list2 = new ArrayList<>();

注意进行.equals()比较时

s = "test"
"test".equals(s) // 而不是s.equals("text")

集合ArrayList

ArrayList list1 = new ArrayList();
// ArrayList<限制类型> list = new ArrayList<>();
ArrayList<String> list2 = new ArrayList<>();

注意进行.equals()比较时

s = "test"
"test".equals(s) // 而不是s.equals("text")

问题分析之————static关键字

就是多次创建对象,导致产生了不同的数组,本来school应该只存在一个,用static关键字解决
image

  • static修饰的特点 (记忆)
    • 被类的所有对象共享
      是我们判断是否使用静态关键字的条件
    • 随着类的加载而加载,优先于对象存在
      对象需要类被加载后,才能创建
    • 可以通过类名调用
      也可以通过对象名调用
  • 5.3static关键字注意事项 (理解)
    • 静态方法只能访问静态的成员
    • 非静态方法可以访问静态的成员,也可以访问非静态的成员
    • 静态方法中是没有this关键字

方法重写————static修饰的方法不能被重写(Override)

class Zi extends Fu {
	@Override // 注解,可以用来检查当前的方法是否是一个正确的重写方法
	public static void show() { // 会报错
		System.out.println("Zi...")
	}
}

抽象类

把共性的方法抽取到父类之后发现,该方法的时间逻辑无法在父类中给出具体明确,该方法就可以定义为抽象方法

抽象类不能创建对象,抽象类有有构造方法
抽象类的子类:必须重新父类中的所有抽象方法,或者 将自己也变成一个抽象类(意义不大)
抽象类里面的方法可以是普通方法或者抽象方法(甚至可以没有抽象方法)

final关键字

常量命名规范:大写字母,用下划线_分割
final修饰成员变量,要么在初始化时直接给值,要么正在构造方法结束之前完成赋值

改进StudentDao,数组用ArrayList替换

尽量在不修改原有代码下进行优化
数组相关代码需要保留下来

  • 步骤:
    1. 将原本的StudentDao复制一份,重命名为OtherStudentDao
    2. 在里面创建一个ArrayList集合容器对象
    3. 关于OtherStudentDao中的方法,其方法声明要和StudentDao中相同
      同时,如果其方法的返回值为数组,有两种方式
      – 第一种是直接将返回值修改为ArrayList
      – 第二种是在该方法中创建一个数组(Student[] students = new Student[stus.size()];),将ArrayList的数据传入该数组,然后和之前一样返回该数组
      – 更推荐使用第二种
    4. 完善方法(添加、删除、修改、查看)
      数组.length 改为 ArrayList.size()
      – 删除:数组[index]=null 改为 ArrayList.remove(index) - 修改:数组[index]=newStu改为ArrayList.set(index, newStu)“`
    5. 最后一步,将StudentService中的StudentDao对象,替换为OtherStudentDao

接口

当一个类中所有方法都是抽象方法时,我们可以将其定义为接口

  • 规则的定义
  • 程序的扩展性
// interface关键字
public interface i1 {
	
}
// 接口不能实例化
// 接口和类之间的关系是实现关系
public class s1 implements i1 {
	
}

多态

public class Test2Polymorpic {
    /*多态的成员访问特点:
      成员变量: 编译看左边 (父类), 运行看左边 (父类)
      成员方法: 编译看左边 (父类), 运行看右边 (子类)
    */
    public static void main(String[] args) {
        Fu f = new Zi();
        System.out.println(f.num);
        f.method();
    }
}

原创文章,作者:506227337,如若转载,请注明出处:https://blog.ytso.com/275189.html

(0)
上一篇 2022年7月18日
下一篇 2022年7月18日

相关推荐

发表回复

登录后才能评论