JAVA流程控制

一、Scanner对象
java.util.Scanner是Java5的新特征,我们可以通过Scanner类来获取用户的输入。

二、JAVA方法
方法的重载:重载就是在一个类中,有相同的函数名称,但形参不同的函数。
方法的重载的规则:
1、方法名称必须相同。
2、参数列表必须不同(个数不同、或类型不同、参数排列顺序不同等)
3、方法的返回类型可以相同也可以不相同
4、仅仅返回类型不同不足以成为方法的重载

命令行传参:
靠传递命令行参数给main()函数实现。

三、可变参数
JDK1.5开始,JAVA支持传递同类型的可变参数的一个方法
在方法声明中,在指定参数类型后加一个省略号(…)。
一个方法中只能一个可变参数,它必须是方法的最后一个参数,任何普通的参数都必须在它之前声明。

四、数组的三种初始化
1、静态初始化
int[] a={1,2,3};
Man[] mans={new Man{1,2},new Man(3,4)};
2、动态初始化
int[] a=new int[2];
a[0]=1;
a[1]=2;
3、数字的默认初始化
数组是引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方法被隐式初始化

五、数组的四个基本特点
1、其长度是确定的。数组一旦被创建,它的大小就是不可以改变的。
2、其元素必须是相同类型,不允许出现混合类型。
3、数组中的元素可以是任何数据类型,包括基本类型和引用类型
4、数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量。数组本身就是对象,Java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中的。

5、for-each循环
JDK1.5开始:数组使用没有下标
int[] arrays={1,2,3,4,5};
for(int array:arrays){
}

6、数组作方法入参
Void printArray(int[] arrays){

}

7、数组作为返回值

8、具有以下常用功能
给数组赋值:通过fill方法。
对数组排序:通过sort方法,按升序
比较数组:通过equals方法比较数组中元素值是否相等
查找数组元素:通过binarySearch方法能对排序好的数组进行二分查找法操作

9、数组的工具类:Arrays类
9.1 数组的工具类java.util.Arrays
9.2 由于数组对象本身并没有什么方法可以调用,可以使用工具类Arrays类
9.3 Arrays类中的方法都是static修饰的静态方法。

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

七、构造器
使用new关键字创建的时候,除了分配内存空间之外,还会给创建好的对象进行默认的初始化以及对类中构造器的使用

类中的构造器也称为构造方法,是在进行创建对象的时候必须调用的,并且构造器有以下俩特点
1、必须和类的名字相同
2、必须没有返回类型,也不能写void

作用
1、new本质在调用构造方法
2、初始化对象的值
注意点:
1、定义有参构造之后,如果想使用无参构造,显示的定义一个无参的构造
在这里插入图片描述

八、封装
1、该露的露,该藏的藏
追求“高内聚,低耦合”。
高内聚就是类的内部数据操作细节自己完成,不允许外部干涉。
低耦合就是仅暴露少量的方法给外部使用

2、封装(数据的隐藏)
应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问。这称为信息隐藏。

九、继承 (ctrl+H可以查看继承关系)
1、继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模。
2、extends的意思是“扩展”,子类是父类的扩展
3、JAVA中类只有单继承,没有多继承;一个儿子只有一个爸爸,但是一个爸爸可以有多个儿子。
4、继承是类和类之间的一种关系,除此之外,类和类之间的关系还有依赖、组合、聚合等。
5、继承关系的两个类,一个为子类(派生类),一个为父类(基类), 子类继承父类,使用关键字extends来表示。
6、子类和父类之间,从意义上讲应该具有"is a"的关系
7、所有的类,都默认直接或者间接继承object

十、super注意点
1、super调用父类的构造方法,必须在构造方法第一个。
2、super必须只能出现在子类的方法或者构造方法中。
3、super和this不能同时调用构造方法!
4、VS this:
4.1 代表的对象不同:
this:本身调用者这个对象
super:代表父类对象的引用
4.2 前提:
this:没有继承也可以使用
super:只能在继承条件才可以使用
4.3 构造方法:
this():默认调用本类的构造方法
super():默认调用父类的构造;

十、重写
需要有继承关系,子类重写父类的方法!子类的方法和父类必须要一致,方法体不同。
1、方法名必须相同。
2、参数列表必须相同。
3、修饰符:范围可以扩大但不能缩小,public>protected>Default>private
4、抛出的异常范围可以被缩小但不能扩大。
5、alt+insert:override

以下情况的方法不能重写:
1、static方法,属于类,它不属于实例。
2、final常量
3、private方法

十一、多态
即同一方法可以根据发送对象的不同而采用多种不同的行为方式。
一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多。
多态存在的条件:1、有继承关系 2、子类重写父类方法 3、父类引用指向子类对象

多态注意事项:
1、多态是方法的多态,属性没有多态。
2、父类和子类有联系,不然会出现类型转换异常!ClassCastException!
3、存在条件:继承关系,方法需要重写,父类引用指向子类对象!

子类能调用的方法都是自己的或者继承父类的。
父类型可以指向子类,但不能调用子类独有的方法。
对象能执行哪些方法,主要看对象左边的类型,和右边关系不大!
子类重写了父类的方法,执行子类的方法。

父类引用指向子类的对象,但子类的引用不能指向父类的对象
把子类转换为父类,向上转型。
把父类转换为子类,向下转型,强制转换。
多态方便方法的调用,减少重复的代码!

匿名代码块,静态代码块,构造方法的执行顺序:
1、静态代码块(只执行一次)
2、匿名代码块
3、构造方法

抽象类
abstract修饰在class上该类为抽象类;
abstract修饰在方法上则为抽象方法;抽象方法只有方法名字,没有方法的实现!
1、不能new这个抽象类,只能靠子类去实现它。
2、抽象类中可以写普通的方法
3、抽象方法必须在抽象类中

接口
interface关键字
1、接口中的所有定义方法其实都是抽象的,默认是public abstract,可以不用加上这个前缀。
2、接口中的所有定义属性其实都是常量,默认是public static final,可以不用加上这个前缀。
3、接口都需要有实现类
4、implements 关键字来实现接口,可以实现多个接口
5、实现了接口的类,就需要重写接口中的方法
6、利用接口实现多继承。
7、接口不能被实例化,接口中没有构造方法
8.必须要重写接口中的方法。

参考自狂神说https://www.bilibili.com/video/BV12J41137hu?t=890&p=80

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值