您的位置:首页 > 编程语言 > Java开发

java基础2--数组与方法

2011-01-14 00:46 411 查看
今天开始学习数组与方法。

一、数组的声明和使用

数组是一组相关数据的集合。

一维数组存放的数据类型是完全相同的,要使用java的数组,必须经过 声明数组分配内存空间 给数组两个步骤,这两个步骤的语法结构如下:

数据类型 数组名[] =null; //声明一维数组

数组名=new 数据类型[长度]; //分配内存给数组

例:

int score[]=null;

score=new int[3];

*对数组声明和分配内存的理解:

a、在 int score[]=null; 这一步编译器仅在 栈内存 分配了一个空间,用来保存指向数组实体的 地址名称,也就是说数组实体此时并没有存在,因为没有分配内存给它,而仅仅只是存在一个数组名称,它指向数组实体的内存地址。

b、score=new int[3]; 这一步使用了 new关键字,为数组实体在 堆内存 空间分配了地址,再将堆内存的操作地址给了数组名称score,它作为一个引用数据类型,因此score保存的是数组对内存的操作地址。

*数组元素中元素的访问方法

要访问数组中的元素,可以利用索引(下标)来完成。java的数组索引编号由0开始。

如以score[10]为例,score[0]为第1个元素,score[0]为第2个元素,score[9]为第10个元素。

*为数组中的元素赋值

要为数组中的元素赋值,可以用动态初始化和静态初始化两种。

二维数组的声明方式:

数据类型 数组名[][]=null;

数组名=new 数据类型[长度];

int score[][]=null;

score=new int[3][2];

二、方法的声明和使用

方法就是一段可以重复调用的代码段。

以下是定义一个可以被主方法main()调用的方法,因为在方法声明处加上了 public static 关键字。

public static 返回值类型 方法名(类型 参数名1,类型 参数名2....){

程序语句;

[return 表达式];

}

*方法的重载:

方法的重载 就是方法的名称相同但参数的类型和个数不同,通过传递的参数的个数不通可以完成不同功能的方法调用。

System.out.println() 就是一个重载方法,可打印任何数据。

方法的重载仅限于参数的类型和个数上有所不同,但返回值类型不能不同。

*方法的递归调用

方法的递归调用就是方法本身自己调用自己。注意递归调用时,必须有一个明确的结束条件,然后不断的改变传入的数据。

几道练习题

//1、编写程序求1!+2!+....20!的和并显示,要求使用方法完成。

public class Test4_1{

public static void main(String[] args){
long a = fun(20);
prin(a);
}

public static long fun(int n){
long sum=1,sum1=0;
for(int x=1;x<=n;x++){
sum *= x; //sum用于保存每个数的阶乘
sum1 += sum; //sum1用于保存阶乘的和
}
return sum1;
}

public static void prin(long num){
System.out.println("1到20的阶乘和为:"+num);
}

}

*这道题有个疑问,当计算1-30的阶乘和时,long型的数据溢出了,显示的时候成了负数。后来了解到有大数乘法,还有Math函数

中有提供相关的方法来完成。等以后深入学习再行研究

//2、定义一个由整数组成的数组,要求求出其中的奇数个数和偶数个数。
public class Test4_2{
public static void main(String[] args){
int arry[]={3,7,4,6,8,16,64,78,94,31};
int a =0,b=0;
for(int i=0;i<arry.length;i++){
if(arry[i]%2 == 0){
a++;
}
if(arry[i]%2 != 0){
b++;
}
}
System.out.println("数组中偶数的个数为:"+a+",奇数的个数为:"+b);
}
}

今天参加了黑马训练营在线课堂,由蒋涛总裁演讲IT 的行业发展,需要的人才,以及黑马训练营的目标和具体内容。

让我了解到了许多需要知道的内容,受益匪浅!蒋总很平易近人,个人很敬佩!时间关系就先到这了,明天继续做题!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: