Java day04(数组与函数)

数组和函数

在执行程序的时候,经常要存储大量的数据,如果我们要读入100个数,并对其进行一系列操作,必须声明100个变量,这样会出现很多的变量的声明,为了解决这种问题,Java中提供了一种数组的数据结构。(array)

数组常见的有一维的和二维的,数组一旦被创建,它的大小是固定的。使用一个数组引用变量,通过下标来访问数组中的元素。

数组是用来存储数据的集合,数组其实是一个存储具有相同数据类型的变量的集合。

数组

1.数组的声明

声明数组变量的时候并不会在内存中给数组分配任何空间。只是创建一个对数组的引用

的存储位置。如果变量不包含对数组的引用,这个变量值为null。如果数组已经被创建

才能对其进行分配元素,一般用new操作符对数组进行创建。

元素类型 [ ] 数组引用变量

数据类型 [ ] [ ] 数组名

Int [ ] arr;

int [] [ ] matrix ;

2.数组的创建

数组变量 = new 元素类型 [ 数组的大小];

Arr = new int [ size];

也可以将数组的声明和创建放在一起。

      Int [ ] arr = new int [size];

    数组在内存创建的过程:首先在栈内存中声明一个数组变量,让该变量指向堆内存中数组的首地址。数组创建后数组中的默认值为0。数组刚开始是从角标0开始计数的。

3.数组的初始化

    matrix = new int [ 5 ][ 5 ]

    元素类型 [ ] 数组引用变量 = {值1,值2,……};

    Int[ ] arr = {1,2,4,5,6,7};

    等价于

    Int[ ] arr = new int [6 ];

    arr[0] = 1;

    arr[1] = 2;

    arr[2] = 4;

    arr[3] = 5;

    arr[4] = 6;

    arr[6] = 7;

 在数组中一般用for循环对数组进行初始化。

double max= myList [ 0 ] ;//找数组中最大的数

for ( int i= 1 ; i < myList . length ; i + + ) {

if ( myList [ ij > max )

 max= myList [ i ] ;

}

4.数组的复制

在 Java 中,可以使用賦值语句复制基本数据类型的变量 , 但不能复制数组 。 将一个数组变童賦值给另一个数组变量,实际上是将一个数组的引用复制给另一个变量 , 使两个变量都指向相同的内存地址 。

复制数组有三种方法 :

1 ) 使用循环语句逐个地复制数组的元素。

2 ) 使用 System 类中的静态方法 arrayCopy 。

3 ) 使用 clone 方法复制数组

int [] sourceArray - { 2 , 3 , 1 , 5 , 10 } ;

int [ ] targetArray = new int [ sourceArray . length ] ;

for (int 1 = 0 ; i < sourceArray .length;i + + ) {

       targetArray [ i ] = sourceArray [ i ] ;

}

获取二维数组的长度

Java day04(数组与函数)

二维数组实际上是一个一维数组,它的每一个元素都是一个一维数组。数组x的长度是数组中元素的个数,可以用x.length获取数组的长度,元素x[0],x[1],也是一个数组,可以用x[0].length获取长度。二维数组是一个一维数组,它的每一个元素是另一个一维数组。Java day04(数组与函数)

函数

函数在Java语言中又称为方法, 方法可以用于定义可重用的代码以及组织和简化编码 。

1.函数的定义

修饰符 返回值类型 函数名 ( 参数列表 ) {

/ / 函数体 ;

}

Public static void java(int x,int y){

 

}

2.方法的调用

调用方法又两种途径,一种是有返回值的方法,一种是返回值为void的调用,对带返回的方法而言,return 语句是必需的 。

Java day04(数组与函数)

“ 定义方法 ”和 “ 声明变量 ” , 两者的细微差别 。 定义是指被定义的条目是什么 , 而声明通常是指为被声明的条目分配内存来存储数据 。

//方法求和

class MethodDemo

{

    public static void main(String[] args)

{

  int a = 3;

   int b = 4;

        int sum = getSum(a,b);

        System.out.println("sum="+sum);

    }

    public static int getSum(int i , int j)

    {

        return i + j;

    }

}

函数在程序中运行时,首先,主函数进入栈内存,开始执行main中的代码,开始给变量a,b开辟空间存放3和4。当程序执行到int sum = getSum(a,b);时,会将getSum函数加载进栈内存中,同样在getSum所属的栈区域中开辟i和j变量空间,接受main方法中的getSum(a,b);传递的值。然后执行getSum函数中的代码,当getSum函数执行结束后,函数会出栈(弹栈)。程序回到main方法的调用语句int sum =getSum(a,b);处,并将getSum方法执行完返回的结果赋值给sum变量,程序继续往下执行。打印sum的值。

3.方法的重载

重载的概念

 重载方法使得你可以使用同样的名字来定义不同方法 , 只要它们的签名是不同的 

在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同

即可,这时就形成了重载。重载和返回值类型无关

void show(int a,float b,char c){}

下列哪些函数和给定函数重载了

a.int show(int x,float y,char z)//没有重载,这个函数不允许和给定函数存在于

同一个类中。因为会产生调用的不确定性。

b.void show(float b,int a,char c)/重载了,参数类型不同。

c.void show(int c,float a,char b)//没有重载,和给定函数一样。不允许存在。

d.void show(int a,int b,int c)//重载了,因为类型不同。

e.double show()//重载了,因为个数不同

4.变量的作用域

变量的范围是程序中该变量可以被引用的部分。

方法内定义的变量被称为局部变量。

局部变量的作用范围从声明开始,直到包含它的块结束。

局部变量必须声明才可以使用。

方法的参数范围涵盖整个方法。参数实际上是一个局部变量。

for循环的初始化部分声明的变量,其作用范围在整个循环。