9.面向对象(1)

news/2024/9/24 1:27:17

MODULE 9 面向对象

1.会定义静态成员以及会调用静态成员

2.会使用可变参数(会给可变参数传参)

3.会二分查找(手撕)

4.会冒泡排序(手撕)

5.会debug的使用

一、static关键字

(一)static的介绍以及基本使用

1.概述:static是一个静态关键字

2.使用:

(1)修饰一个成员变量:

static 数据类型 变量名

(2)修饰一个方法:

修饰符 static 返回值类型 方法名(形参){

方法体

Return 结果

}

(3)调用静态成员方法:

类名直接调用(不用new对象)

(4)静态成员特点:

A.静态成员属于类成员,不属于对象成员(非静态的成员属于对象 成员)

B.静态成员会随着类的加载而加载

C.静态成员优先于非静态成员存在内存中

D.凡是根据静态成员所在的类创建出来的对象,都可以共享这个静 态成员

(二)static修饰成员的访问特点

1.在静态方法中能直接访问非静态成员嘛?不能

想要调用:new对象调用

2.在非静态方法中能直接访问静态成员嘛?能

(1)同类:

直接调用

类名调用

(2)不同类:

类名调用

3.在静态方法中能直接访问静态成员嘛?能

(1)同类:

直接调用

类名调用

(2)不同类:

类名调用

4.在非静态方法中能直接访问非静态成员嘛?能

(1)同类:

直接调用

new对象调用

(2)不同类:

new对象调用

总结:

(1)不管在不在同一个类中,非静态成员都可以new对象调用

(2)不管在不在同一个类中,静态成员都可以类名调用

问题一:既然static成员那么好使(类名直接调用),那么我们在实际开发中, 能不能将所有的成员都定义成静态

不能

由于静态成员会随着类的加载而加载,如果将所有的成员都变成静态 的,那么类一加载,静态成员都会进内存,会大量占用内存空间

问题二:那么静态成员啥时候定义呢?

一般情况下,我们在抽取工作类的时候可以将工具中的所有成员都定 义成静态的

问题三:啥时候定义工具类?

比如我们在写代码的过程中,发现有的功能在反复实现,代码,功能 一样,此时就可以抽取出来,形成工具类

二、可变参数

1.需求:

定义一个方法,实现n个整数相加

2.分析:

方法参数位置,只明确了参数类型,但是不明确参数个数,此时就可以定义成 可变参数

(一)介绍和基本使用

1.定义格式:

数据类型...变量名

2.注意:

(1)可变参数的本质是一个数组

(2)参数位置不能写多个可变参数,而且当可变参数和其他普通参数一起使 用时,可变参数需要放到列表最后

三、递归

1.概述:方法内部自己调用自己

2.分类:

(1)直接递归:

public static void method(){

method()

}

(2)间接递归:

A(){

B()

}

B(){

A()

}

(3)注意:

A.递归必须要有出口,否则会出现“栈内存溢出”

B.递归即使有出口,递归次数不要太多

3.练习:

输出3到1

计算n的阶乘

斐波那契数例

四、数组常见算法

(一)数组翻转

1.概述:数组对称索引位置上的元素互换

(二)冒泡排序

数组的排序,是将数组中的元素按照大小进行排序,默认都是以升序的形式进行排序,数组排序的方法很多,比如冒泡排序

排序都是要进行数组元素大小的比较,再进行位置的交换,冒泡排序是采用数组中相邻元素进行比较换位

(三)二分查找

1.前提:数组中的数据必须是有序的

2.查询思想:

A.老式查询:遍历数组,一个一个比较 -> 查询效率慢

B.二分查找:每次找中间索引对应的元素进行比较查询(每一次查询少一半数据)

五、对象数组

(一)对象数组

1.需求:定义一个长度为3的数组,存储3个Person对象,遍历数组,将三个Person对象中的属性值获取出来

六、方法参数

(一)基本数据类型作为方法参数传递

基本类型做方法参数传递,传递的是值,不是变量本身

方法运行:压栈

方法运行完毕:弹栈 -> 释放栈内存

(二)引用数据类型作为方法参数传递

引用数据类型做方法参数传递时,传递的是地址值

七、命令行参数

八、其他操作

(一)快速生成方法

1.要求先定义再调用,可以先调用

A.快捷键:Alt + 回车

2.快速将一段代码抽取到一个方法中:

A.选中要抽取的方法

B.按ctrl+alt+m

(二)debug测试

1.概述:调试代码的一种操作

2.作用:能清楚的看到每个变量在代码执行过程过中的变化去找错

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/57026.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

深入了解Vite:依赖预构建原理

前言 前面我们有提到Vite在开发阶段,提倡的是一个no-bundle的理念,不必与webpack那样需要先将整个项目进行打包构建。但是no-bundle的理念只适合源代码部分(我们自己写的代码),vite会将项目中的所有模块分为依赖与源码两部分。 依赖: 指的是一些不会变动的一些模块,如:…

在keil中使用git

目录搜集官方相关帮助1.application note2.软件附带帮助文件基础准备git命令行MDK版本操作步骤1.Abstract(摘要)2.Introduction3.Workflows3.1.Centralized Workflow4.Using Git with Vision4.1.Project Files under Version Control4.2.Files that do not need to be monitore…

1000多天我开发了一个免费的跨浏览器的书签同步、阅读排版、任意网页标注插件

自我介绍 大家好,我是阿浩,一位后端开发工程师,同时也略懂前端技术。业余时间,我开发了这款小工具——《藏趣云》。 我为什么要写这么个工具 需求来源于我自己,因为我是做开发的。我日常都会使用多款浏览器来测试项目,一次需要登录多个账号,寻找各种测试地址链接。之前因…

02-逻辑概述负判断

https://blog.csdn.net/vviccc/article/details/106694210 来源