【笔记】黑马Java就业班——Java基础语法

https://www.bilibili.com/video/BV1uJ411k7wy  笔记

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'
            如果是引用类型  默认为null

3.方法区(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.csdn.net/Jungle_hello/article/details/72851773

P140 08_字符串的分割方法

正则表达式

如果要匹配一个字符"\",需要使用"\\\\"。前两个转成一个"\",后两个转成一个"\",两个"\"合起来转成一个"\"。

https://yanbin.blog/understand-java-regex-backslash/

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: 子类“覆盖”父类的成员变量:

https://www.polarxiong.com/archives/JAVA-%E5%AD%90%E7%B1%BB-%E8%A6%86%E7%9B%96-%E7%88%B6%E7%B1%BB%E7%9A%84%E6%88%90%E5%91%98%E5%8F%98%E9%87%8F.html

P192 22_用instanceof关键字进行类型判断

向下转型,使用instanceof进行类型的判断。

 

P200 06_四种权限修饰符 

 

 publicprotected(default)private
同一个类(自己)YESYESYESYES
同一个包(邻居)YESYESYESNO
不同包子类(儿子)YESYESNONO
不同包非子类(陌生人)YESNONONO
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值