Java实训笔记(2022/12/8)

面向对象vs面向过程

大象装进冰箱需要三步 开、装、关

面向对象 找一个大象 让他自己打开 装 关 或 找一个冰箱 能自己开关

面向过程 思路非常清晰 执行主体是自己

类与对象 对象一定要依赖于类

人与张三的区别 抽象与具体的区别

普通的类

属性:年龄 姓名… 静态
方法:装 打开 关闭 动态
构造器 定义如何得到一个实例对象

封装

私有化成员 对外提供公开的访问、设置方法

继承

继承 一个类 想用另一个类的属性和方法,使用extend super final
super调用父类非私有的方法
final 最后的 修饰类:这个类不能被继承 修饰方法:方法不能重写 变量:不可变

子类中包含父类中所以非私有的属性和方法

子类中如果有何父类一样的方法声明,这叫方法重写 父类有这个方法,但是子类觉得不够,要重新写

方法重写:声明一模一样(绝大多数) 子类的访问权限不能比父类低 子类的异常不能比父类的更抽象 Exception -->RuntimeException -->NullPointerException

多态抽象类

多态 多种形态 在代码运行过程中,一个对象有多种形态

父类的引用 指向子类对象

抽象 abstract

不懂 就是抽象

没有方法体的方法:抽象方法,必须有abstract修饰

有抽象方法的类:抽象类,必须有abstract修饰

抽象类不能直接被new,天生就是被继承的

有子类继承了抽象类,必须重写父类的抽象方法或者子类也是抽象类

接口 interface

接口的引用执行子类对象

一个类全抽象 这个类改为接口

接口不是类 interface

接口是规范

方法默认修饰 public abstract

变量默认修饰 public static final

常量
抽象方法
普通方法

Object 所有类的部分

hashCode 理解为对象在堆里的地址

toString 返回对象的字符串形形式

直接打印对象就是调用toString

getClass 获取正在运行的类

equals vs ==

== 判断两个值是否相等 如果是基本数据类型,就是比较值

如果是引用数据类型,比较的是地址值(hashcode不是地址值,但是可以这样理解)

如果想 两个学生名字一样则视为同一个对象 让equals返回true 需要重写equals

alt+insert 产生代码快捷键

泛型 广泛的类型 不确定的类型

Person < String > zhangsan = new Person<>();
尖括号当中只能写类,Int属于八大基本类型,其对应的包装类有 int->Integer

数组 高配版数组

集合 将引用数据的引用集合起来 List Set Map

(1)List

List<String> list = new ArrayList<>();

三种遍历方法:

 for(int i =0;i<list.size();i++){
     String s= list.get(i);
     System.out.println(s);
        }
for (String s: list){
     System.out.println(s);
        }
 //迭代器遍历
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()){
    String next = iterator.next();
    System.out.println(next);
        }

(2)set
不能保证元素的存入顺序

Set<String> set = new HashSet<>();

遍历方法:

for (String s:set){
     System.out.println(s);
        }
Iterator<String> iterator = set.iterator();
        while (iterator.hasNext()){
             System.out.println(iterator.next());
        }
       

(3)Map
不保证存入顺序,键不能重复

Map<String,String> map = new HashMap<>();

遍历:

 //获取所有的Key
Set<String> set = map.keySet();
//遍历
for (String sn:set){
    //根据Key拿值
    String name = map.get(sn);
    System.out.println(sn+":"+name);
    }
//把键值看成一个整体
Set<Map.Entry<String, String>> entries = map.entrySet();
Iterator<Map.Entry<String, String>> iterator = entries.iterator();
while (iterator.hasNext()){
      Map.Entry<String, String> next=iterator.next();
//sout           
System.out.println(next.getKey()+":"+next.getValue());
 }

万能随机算法 [a.b] [0,100]
[0,1)*100—— (int)[0,100)=[0,99]

[50,100] —— [0,1) *51—— (int)[0,51)=[0,50] +50 =[50,100]

[a,b]—— (int)Math.random()*(b-a)+1 + a

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是小蔡呀~~~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值