day06
- 一维数组的定义
- 一维数组元素的调用
- 好玩的点:
arr[index[i]];
一个数组的元素值作为另一个数组的索引。
int[] arr = new int[] { 8, 2, 1, 0, 3 };
int[] index = new int[] { 2, 0, 3, 2, 4, 0, 1, 3, 2, 3, 3 };
for (int i = 0; i < index.length; i++) {
tel += arr[index[i]];
}
- Scanner类的使用
创建一个实例,使用.来调用方法,下面的代码是最简单的一个程序
import java.util.Scanner;
Scanner scan = new Scanner(System.in);
System.out.println(scan.nextInt());
day07
- 二维数组所有元素总和,采取二重循环的方式,注意第二个循环的条件
for(int i = 0;i < arr.length;i++){
for(int j = 0;j < arr[i].length;j++){
sum += arr[i][j];
}
}
- 注意数组名的赋值不是表示复制,而是表示两个数组名指向堆里面的同一个地址
- 数组的工具类(Array.xXX)
- 杨辉三角
- 冒泡排序(算法层面)
- 快速排序(算法层面)
day08
- 对象数组的建立
Student[] stus = new Student[10]; //String[] arr = new String[10];
for(int i = 0;i < stus.length;i++){
//给数组元素赋值
stus[i] = new Student();
//给Student对象的属性赋值
stus[i].number = (i + 1);
//年级:[1,6]
stus[i].state = (int)(Math.random() * (6 - 1 + 1) + 1);
//成绩:[0,100]
stus[i].score = (int)(Math.random() * (100 - 0 + 1));
}
- 随机数的生成:使用Math类
int max=100,min=1;
int ran2 = (int) (Math.random()*(max-min)+min);
day09
- 参数的值传递,将对象作为参数
- 匿名对象
- 可变形参
- 递归方法
day10
- this关键字
- 封装性(private)
day11
-
继承性
-
方法的重写(区别于重载)
-
权限修饰符
-
super关键字
如果子类和父类里面定义了同名变量,那么仅仅用变量名去调用就会产生问题,所以就要用this和super关键字进行区分
super调用构造器:调用this()和super()只能是二选一,默认的是super() -
(对象的)多态性:父类的引用指向子类的对象
People p1 = new Man()
调用子父类同名同参数的方法的时候,实际执行的是子类重写父类的方法(虚拟方法调用)
编译看左边,执行看右边 -
instanceof
判断a是不是b的实例 可以用在控制向下转型 -
Object类
Object类是所有类的根父类 -
equals和==操作符
= = 是一个运算符,可以对一般的数据结构(比较值),也可以对引用数据结构(比较地址)
equals是一个方法,必须通过一个实例来调用,未经过改写,继承的是object类里面的方法(比较地址),如果是要比较内容,就要对equals方法进行重写(也可以自动生成) -
toString方法: 方法可把一个 Number 对象转换为一个字符串,并返回结果
-
包装类: 将基本数据类型“包装”成类
以下就不按照dayxx来写了
static
设计模式
- 单例饱汉
- 单例饿汉
main
代码块
final关键字
抽象类和抽象方法
- 抽象类不可实例化
- 抽象类中构造器便于子类对象实例化用
- 抽象方法没有方法体
- 包含抽象方法的类一定是抽象类,抽象类里面可以没有抽象方法
- 子类必须重写父类中所有的抽象方法,才能实例化
接口
- 接口可以实现多继承的效果,接口和类是一个并列关系
- 接口只能声明全局常量(pub sta fin,可以省略)和抽象方法(pub abs ,可以省略)(jdk 7前)
- 接口里面不可以定义构造器,接口不可以实例化
- 实现类对接口方法的“重写”我们一般都称之为实现
- 接口和接口之间可以是多继承
- 接口的本质是契约,规范
直接点击这里可以调出模板