9.面向对象(1)

news/2024/9/21 20:54:29/文章来源:https://www.cnblogs.com/swh666/p/18395494

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.hqwc.cn/news/792732.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

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

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

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

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

02-逻辑概述负判断

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

信息学奥赛初赛天天练-83-NOIP2014普及组-基础题2-输入设备、输出设备、操作系统、二进制、整数除法、while、do while循环

1 NOIP 2014 普及组 基础题2 4 以下哪一种设备属于输出设备( ) A 扫描仪 B 键盘 C 鼠标 D 打印机 5 下列对操作系统功能的描述最为完整的是( ) A 负责外设与主机之间的信息交换 B 负责诊断机器的故障 C 控制和管理计算机系统的各种硬件和软件资源的使用 D 将没有…

webstorm使用缩写生成自定义注释

/** =========================$END$========================= **/$END$代表生成的时候光标在哪里 date怎么写? date("Y-MM-d HH:mm:ss")

005.MinIO-DirectPV分布式多租户存储部署

MinIO部署准备 部署概述 本实验结合Kubernetes进行MinIO部署,实现MinIO于Kubernetes的融合。 minio官方支持通过简单的快速部署,以便于进行基础测试: curl https://raw.githubusercontent.com/minio/docs/master/source/extra/examples/minio-dev.yaml -O kubectl apply -f …

软件工程实践第一次作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzu/SE2024这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/SE2024/homework/13243这个作业的目标 适应在接下来的学习任务中使用博客园进行作业的提交学号 1022011371.个人logo文生图任务设计理念:一望无际的大…

2024秋软件工程课程个人作业(第一次)

2024秋软件工程课程个人作业(第一次)软件工程课程 班级链接作业要求 作业链接作业目标 搭建个人博客,熟练使用AI工具,自我评估并规划未来发展学号 102201312一、个人logo文生图任务使用免费的AIGC图像生成工具为你的Github和博客园账号创建一个独特的个人Logo。推荐工具:DA…

libreoffice24.2--arm环境源码编译--构建RPM包

1、下载源代码地址:https://zh-cn.libreoffice.org/download/libreoffice/ 2、构建环境,使用docker容器,在容器内编译,使用的基础镜像是:fedora:latest,使用过centos9和centos10,centos9 gcc版本不够;centos10安装fakeroot包有问题,无法构建rpm包。3、在解压后的libr…