Day 3 狂神说Java基础笔记(方法01-06,数组01-09,面向对象01-14)

一、方法

01-方法

一个方法一个功能,main()函数保持整洁

02-定义与调用

Java只有值传递
作业:值传递与引用传递区别
?调用的两种方法

03-方法的重载

方法名称相同,形参不同(个数、类型、顺序);
返回值可以不同。

04-命令行传参

args[ ]

javac

05-可变参数

JDK 1.5后可用
一个方法中只能指定一个可变参数,且必须是最后一个参数

int... i

06-递归

边界条件,前阶段,返回阶段
Java使用栈机制
占用内存较高

二、数组

01-概述

有序集合
长度固定

02-声明与创建

03-三种初始化及内存分析

  • 堆: 存放new的对象及数组; 可以被所有的线程共享,不会存放别的对象引用
  • 栈:存放基本变量类型(会包含这个基本类型的具体数值);引用对象的变量(会存放这个引用在堆里面的具体地址)
  • 方法区:可以被所有线程共享;包含了所有的class和static变量。
    ?堆大

数组是引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化

04-下标越界

数组是对象,每个元素相当于该对象的成员变量
Java中,对象在堆中

05-使用

06-多维数组

07- Arrays

fill
sort
equals
binarySearch

08-冒泡排序

作业:八大排序算法
冒泡优化:内层循环内置flag,12:26s

09-稀疏数组

行,列,有效值个数
有效值行,有效值列,有效值

三、面向对象(OOP)

01- 概述

以类的方式组织代码,以对象的方式封装数据
封装;继承;多态

02-方法

03-方法的调用

static 静态方法: 类名.方法名,和类一起存在
非静态方法:先实例化,类实例化后存在

04-类与对象的创建

new分配内存空间,默认赋值,构造器调用

05-构造器

和类的名字相同;没有返回值;
重载
alt+insert:快捷构造

06-创建对象内存分析

再看
栈:方法,变量的引用
堆:对象

07-小结

引用:栈–>堆

08-封装

高内聚,低耦合
类的内部数据操作细节自己完成;仅暴露少量的方法给外部使用。
属性私有,get/set
set可以做安全性的判断

09-继承

extends
Java中只有单继承,没有多继承
除了继承,类间关系还有依赖、组合、聚合
public;protected;default;private;
作业:继承权限,类
Ctrl+H 打开继承结构
Java中所有类都默认直接或间接继承自Object
有参构造后,默认无参没有了

10-Super

  • 调用父类的构造方法,[显式 super()]必须在子类的第一行
    //隐式:调用了父类的无参构造
    ==?==为什么,内存图
  • super只出现在子类的方法或者构造方法中
  • super和this不能同时调用构造方法,06:22s

11-重写*

重写都是方法的重写,与属性无关
需要有继承关系,子类重写父类方法

  1. 方法名必须相同
  2. 参数列表必须相同
  3. 修饰符:范围可以扩大
  4. 抛出的异常:范围可以缩小,不能扩大:ClassNotFoundException–>Exception(大,不可)
A a=new A();
B b=new A();

静态方法:父类的引用指向了子类;方法的调用 只和定义的数据类型有关
非静态方法:和右侧有关,子类重写了父类的方法.

12-多态*

左边决定可以使用的方法
都有使用子类的重载

Father f1 = new Son();

final、static、private类不可以进行多态

13-instanceof和类型转换

判断类的类型,父类引用引向子类对象;父类转换为子类,强制转换

14-static

静态代码块 优先于 匿名代码块 优先于构造方法
且静态代码块只执行一次
final不能被继承

你可能感兴趣的:(狂神学习,java)