java学习day3

方法(函数)

语法

        返回值类型 方法名(参数列表){方法体}

        

        返回值类型:该方法必须返回一个这个类型的对象

                           当一个方法不需要返回值,返回值类型就定义为void

                           void中可以写return起到终止方法的作用

                           但是不能return null

        参数:

                形参:定义方法时,参数列表的参数名。

                实参:调用方法时,实际传入的参数。

                重载:在一个类中,方法名相同,参数列表不同,即为重载。

                        参数列表要素:

                                1.参数的类型不同

                                2.参数的个数不同

                                3.参数的顺序不同

                可变参数:

                        声明:sum(int… a)

                        使用:将可变参数当作数组使用

                        注意点:

                        1.一个方法当中只能有一个可变参数

                        2.可变参数必须在参数列表的最后一个

                        3.数量可变,类型不可变

                        4.调用可变参数的方法:可用数组代替

                        5.可变参数可以不传

递归

        是一个函数在其定义中直接或间接调用自身的一种方法。

        直接或间接地调用自身的算法称为递归算法。

        用函数自身给出定义的函数称为递归函数。

 

        构成递归需要构成的条件:

                1. 子问题须与原始问题为同样的事,且更为简单;

                2. 不能无限制地调用本身,须有个出口,化简为非递归状况处理。

 

        阶乘递归

        

排序算法

十大排序算法:冒泡排序选择排序插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序

冒泡排序(Bubble Sort)

        冒泡排序是一种简单的排序算法。他重复得走访过要拍排序的数列,一次比较两个元素,如          果他们得顺序错误就把他们交换过来,走访数列的工作是重复的进行直到没有再需要交换,          也就是说该数列已经排序完成。这个算法得名字由来是因为越小的元素会经由交换慢慢“浮”到         数列的顶端。(相邻对比交换位置)

        java代码:

        

选择排序(Selection Sort)

        选择排序是一种简单直观得排序算法,他的工作原理:首先在未排序序列中找到最小(大)          元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元              素,然后放到已排序序列的末尾。以此类推,直到所有的元素均排序完毕。(拿出最大或最          小,然后在剩余中再拿大或最小)

        java代码:

        

插入排序(Insertion Sort)

        插入排序的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于          未排序的数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,          通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程            中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。(将未排序的,在已          排序中找到位置插进去)

        java代码:

        

快速排序(Quick Sort)

        快速排序的基本思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所          有数据都比另外一部分的所有数据都要小,然后再按此方法对这俩部分数据分别进行快速排          序,整个排序过程可以递归进行,以此达到整个数据变成有序序列

        java代码:

       

         待补

二分查找

        待补

类是具有相同属性(成员变量)和行为(成员方法)的一组对象的集合。类声明就是定义一个类,其语法格式如下:

[访问符][修饰符] class 类名 [<类型参数列表>] [extends 父类名][implements 接口名列表]{

       [成员变量列表]

       [成员方法列表]

}

属性

        全局变量:在类中定义属性又叫做全局变量

        局部变量:在方法体或者代码块中声明的变量

        就近原则:在局部变量和全局变量重名的情况下,可以使用this关键字,标注全局变量

        类中的方法可以直接调用本类中的属性

构造方法

        定义构造方法

                1.没有返回值类型

                2.方法名和类名一样

                3.如果一个类没有定义任何的构造方法,系统会给予一个默认的空的构造方法,叫做空                  参构造

                4.如果定义了有参构造方法,系统默认的空参构造会消失,需要自己重新定义。

                5.通过构造有参构造方法的形式将参数设置给参数属性。

                无参构造和有参构造

        

实例化对象

        实例化对象,开辟内存对象

        

        设置对象的属性

                访问对象属性设置

                

                通过构造方法设置

                

                类中声明了哪些属性,对象中就有哪些属性

                staff类中声明的属性

                

        调用staff类方法

        ​​​​

                staff类中定义的方法

                

面向对象三大特性:封装、继承、多态

封装

        隐藏类的细节,不能让其他类随意的访问

        通过四个访问权限修饰符达到封装的效果

        public             protected                  default                private

        公共的     受保护的(家族性的)   默认(本包中)   私有的(本类中)

        通过getter和setter方法访问

        ​​​​​

        类中成员变量一般用小写

        java语言中对大小写敏感

继承

        关键字extends

        一个类可以继承父类,子类具有父亲中定义好的属性和方法

        但不是所有的属性和方法都能访问到

        public protected 和本包下的default可以访问

        private访问不到

        继承作用:

                1.实现了代码的重用

                2.是多态实现的基础

                注意:

                        1.一个子类只能继承一个直接父类

                        2.java支持多重继承

 

        子类继承父类

        Plane父类

        

        BigPlane子类继承父类

        

 

方法的重写:

        子类对父类中继承过来的方法重新定义

        可以使用@Override注解,验证方法是否是重写的方法

        注意:

                返回值,方法名,参数列表不能发生变化

                重写的方法的访问权限只能更开放,不能更闭塞

子父类之间的构造方法

        子类的构造方法中首行必须调用父类的构造方法

        默认调用父类的无参构造方法

        父类中没有无参构造方法,子类构造方法中必须明文声明,调用父类哪一个构造方法

        使用super关键字调用父类的构造方法

 

多态

        调用方法时可能出现多种结果

 

        静态多态:重载造成的,在类编译时就可以确定的调用的是哪一个方法

        动态多态:重写造成的,只有在执行到该行代码,才能确定执行的是哪个类中的方法

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值