P58 03_IDEA的项目结构
P61 06_IDEA的常用快捷键
输入缩写,点击enter,即可自动补全。如psvm、sout...
alt+/ : 提示
alt+enter : 尝试修改错误
ctrl+alt+L :格式化代码
ctrl+D:复制当前行
ctrl+/ : 单行注释
ctrl+shift+/ : 多行注释
alt+insert:自动生成代码
alt+shift+上下箭头:调整代码上下位置
P63 08_复习简单方法的使用
5.fori : 自动转成for循环
P65 10_方法的三种调用格式
System.out.print1n("变量的值:”+ number); 字符串后面可以直接用‘+’号
P72 17_方法的注意事项
1、方法必须定义在类之中
2、方法定义的前后顺序无所谓
P74 19_方法重载的注意事项
方法重载:函数名称相同,参数列表不同。
ps:与返回值类型无关。与参数名称无关。
P84 07_Java中的内存划分
Java的内存需要划分成为5个部分:
1.栈(Stack):存放的都是方法中的局部变量。方法的运行一定要在栈中运行。
局部变量:方法的参数,或者是方法{}内部的变量;
作用域:一旦超出作用域,立刻从栈内存当中消失。2.堆(Heap):凡是new出来的东西,都在堆当中。
堆内存里面的东西都有一个地址值:16进制
堆内存里面的数据,都有默认值。
规则:如果是整数 默认为0
如果是浮点数 默认为0.0
如果是字符 默认为'\u0000'
如果是引用类型 默认为null3.方法区(Method Area):存储.class相关信息,包含方法的信息。
4.本地方法栈(Native Method Stack):与操作系统相关。
5.寄存器(pc Register):与CPU相关。
P95 18_数组作为方法返回值返回地址
任何类型的数据都可以作为函数的参数、返回值。
P96 01_面向对象思想的概述
面向过程:当需要实现一个功能的时候,每一个具体的步骤都要亲力亲为,详细处理每一个细节。
面向对象:当需要实现一个功能的时候,不关心具体的步骤,而是找一个已经具有该功能的人,来帮我做事儿。
P107 12成员变量和局部变量的区别
局部变量和成员变量:
1.定义的位置不一样[重点]
局部变量:在方法的内部
成员变量:在方法的外部,直接写在类当中2.作用范围不一样[重点]
局部变量:只有方法当中才可以使用,出了方法就不能再用
成员变量:整个类全都可以通用。3.默认值不一样[重点]
局部变量:没有默认值,如果要想使用,必须手动进行赋值
成员变量:如果没有赋值,会有默认值,规则和数组一样4.内存的位置不一样(了解)
局部变量:位于栈内存
成员变量:位于堆内存5.生命周期不一样(了解)
局部变量:随着方法进栈而诞生,随着方法出栈而消失
成员变量:随着对象创建而诞生,随着对象被垃圾回收而消失
P116 03_Scanner的使用步骤
引用类型的一般使用步骤
1.导包
import 包路径.类名称;
如果需要使用的目标类,和当前类位于同一个包下,则可以省略导包语句不写。
只有java.lang包下的内容不需要导包,其他的包都需要import语句。2.创建
类名称 对象名= new 类名称();3.使用
对象名.成员方法名()
P133 01_字符串概述和特点
java 中String是 immutable的,也就是不可变,一旦初始化,引用指向的内容是不可变的(注意:是内容不可变)。
也就是说,假设代码中有String str = “aa”; str=“bb”;,则第二条语句不是改变“aa”原来所在存储地址中的内容,而是另外开辟了一个空间用来存储“bb”;同时由于str原来指向的“aa”现在已经不可达,jvm会通过GC自动回收。
https://blog.youkuaiyun.com/Jungle_hello/article/details/72851773
P140 08_字符串的分割方法
正则表达式
如果要匹配一个字符"\",需要使用"\\\\"。前两个转成一个"\",后两个转成一个"\",两个"\"合起来转成一个"\"。
P145 13_静态static关键字修饰成员方法
静态变量:类名称.静态变量
静态方法:类名称.静态方法()1.静态不能直接访问非静态。
原因:因为在内存当中是[先]有的静态内容,[后]有的非静态内容。2.静态方法当中不能用this。
原因:this代表当前对象,通过谁调用的方法,谁就是当前对象。
P154 03_继承中成员变量的访问特点
直接通过子类对象访问成员变量:
等号左边是谁,就优先用谁,没有则向上找。间接通过成员方法访问成员变量:
该方法属于谁,就优先用谁,没有则向上找。
P156 05_继承中成员方法的访问特点
无论是成员方法还是成员变量,如果没有都是向上找父类,绝对不会向下找子类的。
P158 07_继承中方法的覆盖重写_注意事项
方法覆盖重写的注意事项:
1.必须保证父子类之间方法的名称相同,参数列表也相同。
@Override:写在方法前面,用来检测是不是有效的正确覆盖重写。
这个注解就算不写,只要满足要求,也是正确的方法覆盖重写。2.子类方法的返回值“类型范围”必须【小于等于】父类方法的返回值“类型范围”。
小扩展提示:java.lang.object类是所有类的公共最高父类(祖宗类),java.lang.String就是object的子类。3.子类方法的权限必须【大于等于】父类方法的权限修饰符。
小扩展提示:public > protected >(default) > private
备注:(default)不是关键字default,而是什么都不写,留空。
P160 09_继承中构造方法的访问特点
继承关系中,父子类构造方法的访问特点:
1.子类构造方法当中有一个默认隐含的"super()"调用,所以一定是先调用的父类构造,后执行的子类构造。
2.子类构造可以通过super关键字来调用父类重载构造。
3.super的父类构造调用,必须是子类构造方法的第一个语句。不能一个子类构造方法调用多次super构造。
P161 10_super关键字的三种用法
super关键字的用法有三种:
1.在子类的成员方法中,访问父类的成员变量。
2.在子类的成员方法中,访问父类的成员方法。
3.在子类的构造方法中,访问父类的构造方法。
P162 11_this关键字的三种用法
super关键字用来访问父类内容,而this关键字用来访问本类内容。用法也有三种:
1.在本类的成员方法中,访问本类的成员变量。
2.在本类的成员方法中,访问本类的另一个成员方法。
3.在本类的构造方法中,访问本类的另一个构造方法。在第三种用法当中要注意:
A. this(...)调用也必须是构造方法的第一个语句,唯一一个。
B. super和this两种构造调用,不能同时使用。
P178 08_接口的静态方法使用
注意事项:不能通过接口实现类的对象来调用接口当中的静态方法。
正确用法:通过接口名称,直接调用其中的静态方法。
格式: 接口名称.静态方法名(参数);
注意事项:
1.接口当中的常量,可以省略public static final,注意:不写也照样是这样。
2.接口当中的常量,必须进行赋值,不能不赋值。
3.接口中常量的名称,使用完全大写的字母,用下划线进分隔。(推荐的命名规则)
P183 13继承父类并实现多个接口
使用接口的时候需要注意:
1.接口不能有静态代码块或构造方法;
2.一个类的直接父类是唯一的,但是一个类可以同时实现多个接口。
3.如果实现类所实现的多个接口当中,存在重复的抽象方法,那么只需要覆盖重写一次即可。
4.如果实现类没有覆盖重写所有接口当中的所有抽象方法,那么实现类就必须是一个抽象类。
5.如果实现类所实现的多个接口当中,存在重复的默认方法,那么实现类一定要对冲突的默认方法进行覆盖重写。
6.一个类如果直接父类当中的方法,和接口当中的默认方法产生了冲突,优先用父类当中的方法。
P184 14_接口之间的多继承
1.类与类之间是单继承的。直接父类只有一个。
2.类与接口之间是多实现的。一个类可以实现多个接口。
3.接口与接口之间是多继承的。注意事项:
1.多个父接口当中的抽象方法如果重复,没关系。
2.多个父接口当中的默认方法如果重复,那么子接口必须进行默认方法的覆盖重写,【而且带着default关键字】
P188 18_多态中成员方法的使用特点
在多态的代码当中,成员方法的访问规则是,看new的是谁,就优先用谁,没有则向上找。
对比一下:
成员变量:编译看左边,运行还看左边。
成员方法:编译看左边,运行看右边。
弹幕中内容:
编译的时候,obj对象会认为是Fu类的实例,用Fu类的实例调用子类方法会报错的!
重点是,只有方法能覆盖重写,其他的没有办法覆盖重写,所以调用的是父类的成员变量
//父类!
public class Person {
String name = "Person";
int age;
public void method1() {
System.out.println("调用父类");
}
}
//子类!
public class Man extends Person {
String name = "Man";
@Override
public void method1() {
// super.method1();
System.out.println("调用子类");
}
public void method2(){
System.out.println("子类特有方法");
}
}
//测试类!
public class PersonTest {
public static void main(String[] args) {
Man ha = new Man();
System.out.println(ha.name);
Person do_ = new Man();
System.out.println(do_.name);
int num = do_.age; //此行错误!!Person类的对象不能调用它的子类Man类的成员变量
do_.method2(); //此行错误!!Person类的对象不能调用它的子类Man类的成员方法
}
}
/*
输出:
Man
Person
*/
JAVA: 子类“覆盖”父类的成员变量:
P192 22_用instanceof关键字进行类型判断
向下转型,使用instanceof进行类型的判断。
P200 06_四种权限修饰符
public | protected | (default) | private | |
同一个类(自己) | YES | YES | YES | YES |
同一个包(邻居) | YES | YES | YES | NO |
不同包子类(儿子) | YES | YES | NO | NO |
不同包非子类(陌生人) | YES | NO | NO | NO |