学习总结(二)
2017-12-08 16:07
260 查看
方法(函数)
在JAVA语言中,所谓的方法其实就相当于用户自定义函数,也就相当于是子函数 ,只不过是和其他语言的定义方式不同而已。在正确定义完方法后,便可以在main函数中对其进行调用,这样能减少主函数内的代码数量,还可以使代码变的更有逻辑,方便后期修改检查,提高了代码的重用性。JAVA中方法的声明格式为:
[修饰符1 修饰符2 …] 返回值类型 方法名(形式参数列表){ 程序代码; [return 返回值]; }
目前常用的修饰符为public、static两种;返回值类型则要看方法所实现的功能了,是需要返回值还是不需要返回值;而方法名在命名时第一个单词小写,后面紧跟的每个单词首字母需要大写;对于形式参数而言,实参的数目、数据类型和次序必须和所调用方法声明的形参列表匹配,这样方法中的形参才能准确的接收到实参值,便可以在方法中正确的进行运算。形参是针对方法中而言的,而实参则为实际的参数值。有些方法甚至可以不需要参数,仅从逻辑上完成就行。
其实在传递参数时,如果是基本数据类型,那么方法接收到的其实是数据的副本,不影响主函数中的数据值。而如果传递的参数是引用类型,则传递到方法中的则为参数地址。
如果方法需要像主函数返回返回值,则需要在方法的最后一行加上
return 表达式;表达式即为需要将方法中返回给主函数的值。如果仅仅只有return,没有返回值,那整个方法当即结束。
在JAVA语言中,主要只用以下几种形式来调用方法;
直接调用:方法名(实参列表);
类名调用:类名.方法名(实参列表);
对象调用:对象.方法名(实参列表);(面向对象会使用)
递归
递归其本身的含义就是递推再回归,其本质是方法自己调用自己,但在递归中一定要找到一个出口(结束条件),并且递归的方向一定往出口方向逼近的,这样才不会形成死循环。数组
数组其实是一个变量,是用来储存相同数据类型的一组数据。在往数组中输送数据时首先要先声明数组,之后再往其中存入相同类型的数据。声明变量与声明数组之间的差异就是在内存空间所划出的空间是否为单列还是连续。数组的基本要素有
【标识符,数组长度,元素下表】
标识符为数组的名称。
数组的长度就是数组中的元素个数。
元素下表是对数组中的元素进行编号,从0开始。相当于是数组中元素的地址。每个元素可以通过下标来进行访问。
声明数组
声明数组有三种方式int[ ] a; int b[ ]; String[ ] c;
数据类型 数组名[ ];
数据类型[ ] 数组名;
在声明数组时,不需要规定数组长度。
分配空间
在声明数组后,需要给数组分配空间a = new int[30]; b = new int[6]; c = new String[30];
括号中的数字为数组中最大的元素个数。
其实比较常用的方法有声明的同时并分配好数组的空间,其表达方式为
数据类型[ ] 数组名 = new 数据类型[大小] ;
赋值
在声明完并分配完空间之后,我们就需要往数组中赋值了,在这里我们可以通过数组下标一个个的往期空间内赋值a[0] = 89; a[1] = 79; a[2] = 76; ……
但是这样无用代码数会大幅度升高,所以一般来说我们常用静态初始化来对数组中的元素进行赋值
int[] a={65,59,73,71,98,66};,这样就会方便很多。
遍历数组
遍历数组其实就是”过“一边数组,这样才方便统计数组中的元素,或者是说方便输出。遍历数组的方式有以下两种,都采用的for循环1.
for(int i=0;i<array.length;i++){ // 逐个遍历元素array[i] }
2.
for(int x:array){ // x为当前正在遍历的数组元素 } //for(数据类型 变量名称:数组名称){ // … //}
用这两种方式都可以实现数组的遍历。
数组拷贝
系统类中有一个自带的静态copy方法,格式如下public static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int length);
src: 源数组名称
srcPos: 源数组的起始位置
dest: 目标数组名称
destPos:目标数组的起始位置
length:拷贝的数组元素个数
用该方法可以直接将一个现有数组中的任何元素copy到新的数组中去。
排序算法
冒泡排序
冒泡排序是我个人比较喜欢的一种排序方法,因为它理解起来较为简单,而且用代码实现起来也比较容易只需要两组循环嵌套就行了。冒泡排序的具体思路是,从无序数组中的第一个元素开始向后开始,每两个元素相比较,大的放后面小的放前面,这样一来第一轮各元素比较后就把最大的元素就没放到了最后一个位置,第二轮在从第一轮结束后的第一个元素开始,再重复两个元素比较大小,较大的元素放后面。这样一来很明显就需要两个循环,外层控制轮数,内层控制交换次数。具体结构如下for (int i = 1; i <= d.length-1; i++) { for (int j = 0; j < d.length-i; j++) { if(d[j]>d[j+1]) { int temp=d[j+1]; d[j+1]=d[j]; d[j]=temp; }
在内层循环中有一个数据交换的过程,这个过程需要我们自己定义一个中间变量,首先将第一个数据储存在中间变量当中,然后把第二个数据的值赋予第一个数据变量,再将中间变量的值赋予第二个数据变量当中。这样就算完成了数据交换的过程。
用图来表述其第一轮的逻辑过程如下
画的有些随意。。。
第二轮再次两元素比较,较大的排在后面,以此类推。
插入排序
插入排序的思路是,将目标元素放在前面已经排好序的元素中,让目标元素找到比前一个元素大,比后一个元素小的位置后即可完成该轮排序,之后再将下一个目标元素与上一轮排好的数列中每个元素相比较,放置好准确的位置即可,用图来表述即为快速排序
快速排序是思路是从待排序的数据序列中任取一个数据(如第一个数据)作为分界值,所有比它小的数据元素放到左边,所有比它大的数据元素放到它的右边,然后再分别从左/右部分的数据中再次完成开始的第一步,最终即可排序完成。二维数组
二维数组的声明及实例化
具体的声明及实例化结构为数据类型[][] 数组名称=new 数据类型[行的个数][列的个数];
而二维数组访问的具体元素的结构是
数组名称[行的索引][列的索引]
二维数组其实就是多个一维数组,第一个数字代表的是第n+1个一维数组,而第二个数字代表的是这个一维数组中的第m+1个元素。
二维数组的静态初始化
我们常用的二维数组静态初始化的方法格式为数据类型[][] 数组名称={ {元素1,元素2,....}, {元素1,元素2,....}, ... };
这样就可以完成二维数组的静态初始化
相关文章推荐
- Lucene学习总结之六:Lucene打分公式的数学推导
- 20162318 《程序设计与数据结构》第一周学习总结
- java中反射的学习总结
- Chrome插件学习总结
- UITableView学习总结
- 201521123045 《Java程序设计》第12周学习总结
- Kotlin学习总结(1)——Kotlin快速入门
- [学习记录]屏蔽Activity, Dialog风格Activity, AlertDialog的Home键功能方法(总结)
- 20145233 《信息安全系统设计基础》第6周学习总结
- 影响型领导的学习总结
- 20155203 2016-2017-3 《Java程序设计》第4周学习总结
- 8月~9月学习总结
- [推荐系统]Collaborative filtering 学习总结
- Linux配置汇总上(北大青鸟Linux课程学习总结)
- 20145324 《Java程序设计》第10周学习总结
- Java嵌入式数据库H2学习总结(二)——在Web应用程序中使用H2数据库
- 20145227《信息安全系统设计基础》第十一周学习总结
- 第三周工作学习总结
- ajax 学习总结(三)
- 「学习总结-Haskell-3] Haskell常用数据结构