- 视频+资料(工程源码、笔记)【链接:https://pan.baidu.com/s/1MdFNUADVSFf-lVw3SJRvtg 提取码:zjxs】
- Java基础--学习笔记(零起点打开java世界的大门)--博客汇总表
目 录
01_类名作为形参和返回值
1.1、类名作为形参和返回值
1、类名作为方法的形参
- 方法的形参是类名,其实需要的是该类的对象。
- 实际传递的是该对象的【地址值】
2、类名作为方法的返回值
- 方法的返回值是类名,其实返回的是该类的对象。
- 实际传递的,也是该对象的【地址值】
02_抽象类名作为形参和返回值
1.2、抽象类名作为形参和返回值
- 方法的形参是抽象类名,其实需要的是该抽象类的子类对象。
- 方法的返回值是抽象类名,其实返回的是该抽象类的子类对象。
03_接口名作为形参和返回值
1.3、接口名作为形参和返回值
- 方法的形参是接口名,其实需要的是该接口的实现类对象。
- 方法的返回值是接口名,其实返回的是该接口的实现类对象。
04_内部类
1.1、内部类概述
05_成员内部类
1.2、成员内部类
按照内部类 在类中定义的位置不同,可以分为如下两种形式:
- 在类的成员位置:成员内部类
- 在类的局部位置:局部内部类
成员内部类的定义位置
- 在类中方法,跟成员变量是一个位置。
成员内部类,外界如何创建对象使用呢?(外界创建成员内部类格式)
- 格式:外部类名.内部类名 对象名 = 外部类对象.内部类对象;
- 举例:Outer.Inner oi = new Outer().new Inner();
成员内部类的推荐使用方案
- 将一个类,设计为内部类的目的,大多数都是不想让外界去访问,所以内部类的定义应该私有化,私有化之后,再提供一个可以让外界调用的方法,方法内部创建内部类对象并调用。
使用 成员内部类,就是为了 成员内部类中的内容隐藏起来,并不想让外界直接看到(不能直接访问)。
∴ 内部类的修饰符,一般用private,而不是public。【“ Outer.Inner oi = new Outer().new Inner(); ” 失效!!!】
06_局部内部类
1.3、局部内部类
局部内部类 定义位置
- 局部内部类是在方法中定义的类。
局部内部类 调用方式
- 局部内部类是在方法中定义的类,外界无法直接使用,需要在方法内部创建对象并使用。
- 该类可以直接访问外部类的成员,也可以访问方法内的局部变量。
07_匿名内部类
1.4、匿名内部类
重写方法:继承类或实现接口。
new xxx:说明是一个对象,但是对象没有名字。
匿名内部类,本质是一个对象,继承类或实现接口。
多次调用匿名内部类的方法:
匿名内部类是一个对象,对象有返回值类型。此匿名内部类实现了Inter接口,并重写了接口的show()方法,因此 匿名内部类{}整体可以看成Inter的一个实现类对象,既然是实现类对象,所以应该可以按照多态的形式 赋值给Inter接口。
08_匿名内部类在开发中的使用
1.5、匿名内部类在开发中的使用
多种动物,每次都要创建一个类,太麻烦了,∴ 采用 匿名内部类。
匿名内部类在开发中的使用:当发现某个方法需要 接口或抽象类的子类对象,可以传递一个匿名内部类过去,来简化传统的代码。
09_Math
1.1、Math类概述
Math在java.lang包下,不用导包就可以直接使用。
Math没有构造方法,但方法用static修饰,可以直接通过类名调用方法。
1.2、Math类的常用方法
10_System
2.1、System概述
System包含几个有用的类字段和方法,它不能被实例化(不能创建对象)。
2.2、System类的常用方法
11_Object类的toString()方法
3.1、Object类的概述
Object类概述
- Object是类层次结构的根,每个类都可以将Object 作为超类。没有继承任何类,Object是任何类的祖宗类。
所有对象(包括数组)都实现了这个类的方法。
- 所有类都直接或者间接的继承自该类,换句话说,该类所具备的方法,所有类都会有一份。
Object构造方法
- public Object()
查看方法源码的方式
- 双击选中方法,右键 -> Go To -> Declaration
- 双击选中方法,按下Ctrl + B
重写toString方法的方式
- Alt + Insert 选择toString
- 在类的空白区域,右键 -> Generate -> 选择toString
toString方法的作用:
- 以良好的格式,更方便的展示对象中的属性值。
回想面向对象中,为什么说子类的构造方法默认访问的是父类的无参构造方法( super(); )?
- 因为它们的顶级父类(Object)只有无参构造方法。
查看方法源码的方式
- 双击选中方法,右键 -> Go To -> Declaration
- 双击选中方法,按下Ctrl + B
建议所有子类覆盖(重写)此方法:toString()
怎么重写呢?自动生成即可。
重写toString方法的方式
- Alt + Insert 选择toString
- 在类的空白区域,右键 -> Generate -> 选择toString
12_Object类的equals()方法
3.2、Object类的常用方法
equals方法的作用
- 用于对象之间的比较,返回true和false的结果。
- 举例:s1.equals(s2); // s1和s2是两个对象
重写equals方法的场景
- 不希望比较对象的地址值,想要结合对象属性进行比较的时候。
重写equals方法的方式
- Alt + Insert 选择 equals() and hashCode(),IntelliJ Default,一路next,finish即可
- 在类的空白区域,右键 -> Generate -> 选择equals() and hashCode(),后面的同上。
重写equals()方法
按“Alt+Insert”:
13_冒泡排序原理
4.1、冒泡排序
排序:将一组数据按照固定的规则进行排序。
冒泡排序概述
一种排序的方式,对要进行排序的数据中相邻的数据进行两两比较,将较大的数据放在后面,
依次对所有的数据进行操作,直至所有数据按要求完成排序。
如果有n个数据进行排序,总共需要比较n-1次。
每一次比较完毕,下一次的比较就会少一个数据参与。
14_冒泡排序代码实现
package com.itheima_01;
/*
冒泡排序:
一种排序的方式,对要进行排序的数据中相邻的数据进行两两比较,将较大的数据放在后面,
依次对所有的数据进行操作,直至所有数据按要求完成排序
*/
public class ArrayDemo {
public static void main(String[] args) {
//定义一个数组
int[] arr = {24, 69, 80, 57, 13};
System.out.println("排序前:" + arrayToString(arr));
//第一次比较
for(int i=0; i<arr.length-1-0; i++) {
//ArrayIndexOutOfBoundsException
if(arr[i] > arr[i+1]) {
int temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
System.out.println("第一次比较后:" + arrayToString(arr));
//第二次比较
for(int i=0; i<arr.length-1-1; i++) {
//ArrayIndexOutOfBoundsException
if(arr[i] > arr[i+1]) {
int temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
System.out.println("第二次比较后:" + arrayToString(arr));
//第三次比较
for(int i=0; i<arr.length-1-2; i++) {
//ArrayIndexOutOfBoundsException
if(arr[i] > arr[i+1]) {
int temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
System.out.println("第三次比较后:" + arrayToString(arr));
//第四次比较
for(int i=0; i<arr.length-1-3; i++) {
//ArrayIndexOutOfBoundsException
if(arr[i] > arr[i+1]) {
int temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
System.out.println("第四次比较后:" + arrayToString(arr));
for(int x=0; x<arr.length-1; x++) {
for(int i=0; i<arr.length-1-x; i++) {
if(arr[i] > arr[i+1]) {
int temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
}
System.out.println("排序后:" + arrayToString(arr));
}
//把数组中的元素按照指定的规则组成一个字符串:[元素1, 元素2, ...]
public static String arrayToString(int[] arr) {
StringBuilder sb = new StringBuilder();
sb.append("[");
for (int i = 0; i < arr.length; i++) {
if (i == arr.length - 1) {
sb.append(arr[i]);
} else {
sb.append(arr[i]).append(", ");
}
}
sb.append("]");
String s = sb.toString();
return s;
}
}
15_Arrays
4.2、Arrays类的概述和常用方法
private修饰的无参构造:外界无法通过构造方法创建对象。强制要求:通过类名来访问成员方法。
private Arrays {} :如果一个类没有无参构造方法,系统将会自动提供一个无参构造方法。Arrays的方法,用static修饰,强制要求用类名访问。
在帮助文档中,没有看到构造方法,不代表这个类没有构造方法,因为系统会给构造方法。--> 看源码(构造方法)