java第八章数组上机_JAVA-初步认识-第八章-数组工具对象建立

一.

说完了静态关键字的一些特点和使用注意事项,同时也交代了静态应用场景以后。现在准备写个具体的例子,将前面的知识点串起来。

5d190050f29006e2219d0ab5fc356c9c.png

这个例子从最基础的开始穿起。

需求:求数组最大值

a55c0c799b2ad4d3326be23a261cc27f.png

最开始,我们的写法是将代码写在主函数里面,运行一下就可以了。下面是我们之前学习时的解题方法。

c43625047fdfc69808ef48e6ced41b7e.png

(代码中的每一句话都是有其存在的意义的,没有意义和作用的语句可以不用写。public static void main(String[] args)这句话是保证程序的独立运行的,但是本类不需要独立运行,所以本类中没有主函数。)

DOS一运行上面截图中的程序,需求就解决了。但是,我们说以后不要再这么写代码了。主函数只是入口,是用来调用其他程序。那么,这里应该怎么写?

截图中的求最大值程序只能求解一个数组的最大值,数组arr,和for语句中x

为了提高代码的复用性,要将功能封装起来。(这就是我们后来讲的函数。开始是数组,然后由数组衍生出一系列的操作,接着就是函数封装功能) 之前讲述的时候,只有主函数一个,所有的代码都放置在主函数里。现在把代码封装起来,进行复用,我们可以对很多数组求最大值。只要把数组告诉我们就可以了。

这时,定义一个功能,获取整型数组的最大值。

对下面的程序进行展开讲解,public是修饰符,表明最大的访问权限(不太懂?自己的理解)。static的存在,是因为本类中,主函数也是static修饰的,主函数要想调用本方法,必须是static修饰的(?),getMax方法参数中的arr和主函数中的arr不是同一个东西,只是重名。功能函数最后要返回最大值。需求就是获取最大值,返回值就是数组中的最大值。

b2dd50a5e90b9394ca350534f8d3ef74.png

封装功能过后的程序书写如下,主函数中的内容大大缩减。到目前,我对主函数的理解就是,主函数就像一个控制面板,上面就几个按钮。每个按钮背后复杂的工作都被影藏了起来。

cfac0c33bc2aaf11b53e12f47ab2d175.png

函数的出现提高了复用。接着扩展一下思维,另外的一个类中,也需要求解最大值,(这时就不是在一个类中求解了)。而且不关是求解最值,排序,折半..全都需要,这就意味着有很多方法,现在应该怎么办?

按照对象的思想。我们不应该把它们都定义成方法,而是应该把这些方法放置在一个类里面,换句话说,就是封装到对象里面去。我找到了操作数组的对象,是不是找到了操作数组这个功能啊?这是个过渡,从最早期的主函数,过渡到我们自定义的函数进行封装,再过渡到把我们所需的众多功能,进行对象(那么这个对象里面全是方法?对象的参数列表怎么写?)进行封装。我们不再面向过程,而是面向对象。因此,我们这里单独写了一个类。这个类写完以后,我能用,你也能用。

0ca6512d77343ab498c8f893a094db14.png

17c67c488496b975999ba9e195978635.png

在第二个方法中,有一个特殊的地方,if语句中应该是 进行位置置换,位置置换是个功能,在这写个功能就完事了。这种开发方式很多见,因为我们的思路就建立在我这块肯定需要一个功能,我们不用管怎么实现,先写个这个功能,后面再去细解怎么实现这个功能。

swap功能是给selectSort服务的,不需要提供出去,所以用private修饰。swap的参数列表是三个,给一个数组,再给两个变量(就是两角标)。因为我们要置换的是数组中的两个两个位置,数组明确吗?数组不明确。这里是如何调用swap方法的呢?在selectSort方法的某一个语句中,调用了swap方法。先是有确定的数组调用了seleceSort方法,在selectSort方法被执行的过程中,selectSort方法又调用了swap方法,具体的调用书写为swap(arr, x, y); 这里是不需要返回值的。

在来个简单查找,这里的return -1是什么意思,忘记了。

49bae0429092af0b55229179c8b5016b.png

这里还有一个打印数组的功能,把数组变成字符串应该是一个方法,返回的是一个字符串,这里面最简单的就是用字符串连接的方式,大家都知道,任何数据和字符床相加,想连接。String str="";   是null么?这是一个真实的字符串,只是里面没有内容而已,

1280a112697ca6493e61ecc3ce8b4828.png

(首先是将所有的方法集合在一个类中,里面的方法间,也会有联系)

至此,把这个功能写完了,封装在了一个对象叫ArrayTool里面,叫做数组工具对象。接着结合之前的类,我们想要来一个数组的最值获取。

c99655fd16c2317103eb4d7b8d210c9d.png

对象写完以后,我们想要求最值怎么办?

b654da2c6e09db69d038f0ab85fb32dc.png

这里其实是两个java文件,一个是ArrayTool.java,还有一个是ArrayToolDemo.java。ArrayToolDemo.java文件中包含有主函数,ArrayToolDemo是别人写的,准备用我们的工具。两个文件,先编译谁?按理说,先编译ArrayTool,ArrayToolDemo是在用ArrayTool。如果连ArrayTool.class文件都没有,怎么使用

a71adf2456eee57563715e5aec1c1114.png

DOS中将执行的顺序表示了出来。

1572bf5a8507d36dbd53d39aba9e2f72.png

接着又做了一些改变,如下。本类做了改变,工具类并没有发生变化。

abca1029769ada807fecf82fbce428f4.png

ce80005be2e895794135cce9495f4702.png

接着有趣的事儿来了,先编译了ArrayToolDemo.java,一编译,两个类都出来了。

dd5f6a51032502f005ef029519ec128a.png

cd6dc56fcc75fe2722d47d428bcfdbf6.png

解析:ArrayTooleDemo它这个类中确实用到了ArrayTool.class,可是ArrayTool.class它有吗?是没有的,java编译器很有意思,它发现了该类中用到了其他类,它会去classpath路径下找这个类,或者去当前目录下找这个类,一找发现没有,它会继续找,找什么?找和这个类名相同的.java文件。因为这个类通常对应着一个源文件,找到源文件,对其进行编译,再产生这个class文件。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值