方法与数组和参数传递

原创 2018年04月17日 21:13:01

方法与数组和参数传递

方法:完成某个功能的代码块。被{}括起来
在很多语言里都有函数的定义。
函数而在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中的参数传递问题(都是传递的值,具体数值和地址值 ):

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

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

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

数组

-
  • 1970年01月01日 08:00

将数组作为参数传递(C# 编程指南)

数组可作为实参传递给方法形参。 由于数组是引用类型,因此方法可以更改元素的值。 将一维数组作为参数传递 可以将初始化的一维数组传递给方法。 例如,下面的语句将数...
  • adc_god
  • adc_god
  • 2016-01-03 19:42:14
  • 260

Java第六章__数组.ppt

  • 2011年12月03日 12:54
  • 212KB
  • 下载

C++学习 - 数组参数传递及编程技巧

数组形参 形参的长度会引起误解 数组实参 通过引用来传递数组 多维数组的传递 传递给函数的数组处理 标记结束 标准库方法 显示传递数组大小在C++中传递数组参数是一件很简单的事情,但是这里面也有一些需...
  • chenfs1992
  • chenfs1992
  • 2015-09-18 22:06:39
  • 772

数组作为函数参数并传递数组元素个数的几种有效方法

数组作为函数参数并传递数组元素个数的几种有效方法  //由于数组的元素个数默认情况下是不作为实参内容传入调用函数的,本程序用来讨论有此带来的  //相关问题,以及解决问题方法,即给调用函数...
  • woxinyijiuw
  • woxinyijiuw
  • 2012-05-30 11:29:25
  • 6021

一维数组和二位数组作为函数参数进行传递的方式

一维数组的传递 #include //C++将数组名解释为该数组第一个元素的地址,并视函数名为指针 using namespace std; int main() { double chooseMet...
  • Jerry_ICCAS
  • Jerry_ICCAS
  • 2016-04-08 17:37:06
  • 1341

C语言数组与指针作为传递参数的使用

学习笔记中的内容多少会有一点文不对题,因为C语言中数组无法作为函数的一个传递参数。而数组名在作为函数传递参数使用的时候实际上也被转换成了一个指针。 编写如下代码; #include"stdio.h...
  • grey_csdn
  • grey_csdn
  • 2017-02-27 00:32:49
  • 1617

数组作为参数进行传递

今天编程序时发生了个这样的错误: 在头文件里 定义了一个数组: View Code 1 char s[]="1234567890"; 又定义了一个现显示组的函数: View Code...
  • dream_1996
  • dream_1996
  • 2016-11-07 16:48:31
  • 827

C++数组作为函数参数的几个问题

本文需要解决C++中关于数组的2个问题: 1. 数组作为函数参数,传值还是传址? 2. 函数参数中的数组元素个数能否确定? 先看下面的代码。   [cpp] view...
  • lz465350
  • lz465350
  • 2014-02-13 14:58:35
  • 3213

C/C++中多维数组指针作为函数参数传递程序

  • 2009年04月22日 17:38
  • 26KB
  • 下载
收藏助手
不良信息举报
您举报文章:方法与数组和参数传递
举报原因:
原因补充:

(最多只允许输入30个字)