方法与数组和参数传递

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011301372/article/details/79980942

方法与数组和参数传递

方法:完成某个功能的代码块。被{}括起来
在很多语言里都有函数的定义。
函数而在Java中函数被称为方法。
格式:

修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2…){
方法体语句;
return 返回值;
}
修饰符:目前就用 public static 。后面的将详细讲解
返回值类型:就是功能结果的数据类型。
参数:
实际参数:就是实际参与运算的
形式参数:在方法上定义的,用于接收实际参数的
参数类型:就是参数的数据类型
参数名:变量名
方法体语句:完成功能的代码
return 结束方法的
返回值:就是功能的结果,由return 带回给调用者
如何调用?(有明确的返回值的调用)
单独调用,一般没有意义,所以不推荐
输出调用,但是不够好,因为我们可能需要针对结果进行进一步的操作
赋值调用,推荐方案
方法的注意事项:
方法不调用不执行
方法与方法是平级关系,不能互相嵌套
方法定义的时候,参数之间用逗号隔开
方法调用的时候,不需要再传递数据类型
如果方法有明确的返回值,一定要用return返回值
方法重载
方法重载(在同一个类中,方法名相同,参数列表不同,与返回值类型无关)
在同一个类中,允许存在一个以上的同名方法,只要他们的参数个数或者参数类型不同即可
方法重载特点
与返回值类型无关,只看方法名和参数列表
在调用时,虚拟机通过参数列表的不同来区分同名方法
数组
数组是存储多个变量(元素)的东西(容器)
这多个变量的数据类型要一致
数组
(存储同一个数据类型多个元素的集合,也可以看做是容器)
(数组既可以存储基本数据类型,也可以存储引用数据类型)
数组的定义格式
格式1:数据类型[]数组名; int[] a;定义一个int类型的数组a变量
格式2:数据类型 数组名[]; int a[];定义一个int类型的a数组变量
注意:两种格式,效果是一样的,只是念法有些不同,推荐使用第一种
数组的初始化
动态初始化,初始化时只指定数组长度,由系统为数组分配初始值
静态初始化,初始化时指定每个数组元素的初始值,由系统决定数组长度
动态初始化 格式:
数据类型[] 数组名=new 数据类型[数组长度]
数组长度其实就是数组中元素的个数
例如:
int[] arr=new int[3];
左边
int:说明数组中的元素的数据类型是int类型
[]:说明这是一个数组
arr :是数组名
右边
new:作用是为数组分配内存空间
[]:数组
3:数组长度,其实也是数组中元素的个数
<解释>:定义一个int类型的数组。这个数组可以存放三个int类型的值。
如何获取数组中的元素?
通过:
数组名[索引];
最大的索引值即是 数组长度-1
java程序在运行时,需要在内存中的分配空间,为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据和内存管理方式
java中的内存分配,为了提高程序效率,就对数据进行了不同空间的分配,具体划分为一下五个内存空间:
栈 存储局部变量
堆 存储new出来的东西
方法区(后续待讲)<面向对象部分详细讲解>
本地方法区(和系统相关)<了解>
寄存器(给CPU用)<了解>
局部变量:在方法定义中或者方法声明上的变量都称为局部变量

int[] arr=new int[4];                       
System.out.println(arr);//地址值————>十六进制表示的地址
System.out.println(arr[0]);//0
System.out.println(arr[1]);//0
System.out.println(arr[2]);//0

堆内存的特点:
A:每一个new出来的东西都有地址值
B:每个变量都有默认值
byte short int long 0
float double 0.0
char ‘\u0000’
Boolean false
引用类型 null
C:使用完毕就变成了垃圾,但是并没有立即回收,会在垃圾回收器空闲的时候回收
栈 内存的数据用完就释放
静态初始化
静态初始化,初始化时指定每个数组元素的初始值,由系统决定数组长度
格式:
数据类型[] 数组名=new 数据类型[]{元素1,元素2,…}
举例:
int[] a=new int[]{1,3,5};
<解释>:
定义了一个int类型的数组,这个数组中了一存放3个int类型的值,并且其初始值分别为1.3.5
<简化写法>:
int[] a={1,3,5}
注意事项:
不要同时动态和静态进行
如以下格式:
int[] a=new int[3]{1,3,5} <错误>
数组操作的两个常见小问题
A:数组索引越界异常,原因:访问了不存在的索引
B: 引用类型的常量,空常量null时,空指针异常。原因:地址为空,数组已经不再指向堆内存了,而你还要用数组名去访问元素。

int[] a={1,2,3};
a=null;
System.out.println(a[0]);

数组的练习(常见操作)
(1)数组遍历(依次输出数组中的每个元素)
(2)数组获取最值(获取数组中的最值)
(3)数组元素逆序(就是把元素对调)
(4)数组查表法(根据键盘录入索引,查找对应星期)
(5)数组元素查找(查找指定元素第一次在数组中出现的索引)
(6)数组排序和二分查找(后面在数组高级部分讲解)
数组遍历:
用for循环
数组给我们提供了一个属性:length 专门用于获取数组的长度
格式:
数组名.length 返回数组长度

遍历数组的方法
返回值 void
参数列表 数据类型[] 数组名 如:int[] arr

数组元素逆序
分析
A 定义一个数组,并进行静态初始化
B 思路:
把0索引和arr.length-1的数据交换
把1索引和arr.length-2的数据交换

只要做到arr.length/2的时候即可
二维数组(就是一个元素为一维数组的数组)
二维数组概述
某中学一年级的某个班有很多的学生,我们用数组来存储学生,而同时又有很多个一年级的班级,这个也应该用一个数组来存储,此时,java提供了二维数组来使用。

二维数组的定义格式:
格式1:
数据类型[][] 变量名=new 数据类型[m][n];
其中:
m表示这个二维数组有多少个一维数组
n表示每一个一维数组的元素个数
举例:

int[][] arr=new int[3][2];
定义一个二维数组arr
这个数组有3个一维数组,名称是arr[0],arr[1],arr[2]
每个一维数组有两个元素,可以通过arr[m][n]来获取
表示获取第m+1个数组的第n+1个元素

格式2:
数据类型[][] 变量名=new 数据类型[m][];
其中:
m 表示一个数组有多少个一维数组
这一次没有直接给出一维数组的元素个数,可以动态的给出
举例:

int[][] arr=new int[3][];
arr[0]=new int[2];
arr[1]=new int[3];
arr[2]=new int[1];

格式3:
数据类型[][] 变量名=new 数据类型[][]{{ 元素…},{元素…},{元素…}}
简化格式:
数据类型[][] 变量名={{元素…},{元素…},{元素…}}
举例:
int[][] arr={{2,3,4},{4,6},{8}};
注意:
以下格式也可以表示二维数组
数据类型 数组名[][]=new 数据类型[][];
数据类型[] 数组名[] = new 数据类型[][];
注意下面定义的区别
int x,y ;定义了int类型的变量x,同时也定义了int 类型的y
int x;
int y;
int[] x,y[];定义了一个一维数组x 和一个二维数组y
int[] x;
int[] y[];

java中的参数传递问题(都是传递的值,具体数值和地址值 ):

基本类型:形式参数的改变对实际参数没有影响

引用类型:形式参数的改变直接影响实际参数,因为传递的是地址值

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页