----------android培训、java培训期待与您交流!----------
数组与方法
若想定义多个重复类型的变量,那么使用数组是一个很好的方法。数组就是一组相关数据的集合,一个数组实际上就是一连串的变量。
一维数组
一维数组可以存放数据,并且这些数据的类型是完全相同的
声明数组语法结构
数据类型[] 数组名 = new 数据类型[长度]
范例
int[] c = mi;//声明整数数组类型
c = new int[3]//为数组c分配内存空间,其元素个数为3个
内存分配流程图
一个数组开辟了堆内存后,将在堆内存中保存数据,并将堆内存的操作地址给了数据名称s。数据是引用数据类型,所以数据变量s所保存的是堆内存的参考地址
数组中关于堆栈内存的解释
数组的操作中,在占内存中保存的永远是数组的名称,值开辟了栈内存空间的数组是永远无法使用的。必须有指向的堆内存才可以使用,要想开辟新的堆内存则必须使用new关键字,然后只是将此堆内存的使用权交给了对于gin的栈内存空间,而且一个堆内存空间可以同时被多个栈内存空间指向
数组中元素的表示方法
若要访问数组中的元素,可以利用索引哎完成。java的数组索引编号从0开始
代码实例:数组的声明和输出
public class Demo {
public static void main(String args[]) {
int score[] = null ; //声明数组
score= new int [3]; //为数组开辟空间,大小为3
System. out.println("score[0] = " + score[0]) ;
System. out.println("score[1] = " + score[1]) ;
System. out.println("score[2] = " + score[2]) ;
for(int x=0;x<3;x++){
System. out.println("score[" +x+"] = " + score[x]) ;
}
}
}
结果:score[0] = 0
score[1] = 0
score[2] = 0
score[0] = 0
score[1] = 0
score[2] = 0
取得数组的长度
代码实例
public class Demo {
public static void main(String args[]) {
int score[] = null ; //声明数组
score= new int [3]; //为数组开辟空间,大小为3
System. out.println("数组长度为:" + score.length) ;//通过length获得数组的长度
}
}
结果:数组长度为:3
数组的静态初始化
语句格式:数据类型[]数组名 = {初值1,初值2,初值3。。。。。}
代码实例
public class Demo {
public static void main(String args[]) {
int score[] = {1,2,3,4,5,6}; //使用静态初始化声明数组
for(int x=0;x<score.length;x++){ //循环输出
System. out.println("score[" +x+"] = " + score[x]) ;
}
}
}
结果:score[0] = 1
score[1] = 2
score[2] = 3
score[3] = 4
score[4] = 5
score[5] = 6
数组的应用范例
求数组中的最大最小值
public class Demo {
public static void main(String args[]) {
int score[] = {67,9,7,69,10,75,90}; //使用静态初始化声明数组
int max = 0; //保存数组中的最大值
int min = 0; //保存数组中的最小值
max= min = score[0] ; //把第一个元素的内容赋值给max和min
for(int x=0;x<score.length;x++){ //循环输出
if(score[x]>max){ //依次判断后续元素是否比max大
max= score[x]; //如果大,则修改max的内容
}
if(score[x]<min){ //依次判断后续的元素是否比min小
min= score[x]; //如果小,则修改min内容
}
}
System. out.println("最高成绩:" + max) ;
System. out.println("最低成绩:" + min) ;
}
}
结果:最高成绩:90
最低成绩:7
二维数组
二维数组相当于一个excel表格
姓名 | 年龄 |
张三 | 1 |
张四 | 2 |
张五 | 3 |
声明格式
数据类型数组名 = new数据类型[行的个数][列的个数]
代码实例
public class Demo {
public static void main(String args[]) {
int score[][] = new int[4][3]; //声明并实例化二维数组
score[0][1]= 11; //为数组中的内容赋值
score[1][0]= 22; //为数组中的内容赋值
score[2][2]= 33; //为数组中的内容赋值
score[3][1]= 44; //为数组中的内容赋值
score[1][1]= 55; //为数组中的内容赋值
for(int i=0;i<score.length;i++){ //循环输出
for(int j=0;j<score[i].length;j++){ //循环输出
System. out.print(score[i][j] + "\t") ;//输出内容
}
System.out.println( "") ;
}
}
}
结果:0 11 0
22 55 0
0 0 33
0 44 0
方法的声明及使用
方法时一段可以反复调用的代码
声明格式
public (static) 返回值类型方法名称(类型参数,类型参数){
程序语句;
return 表达式
}
PS:定义方法,一个单词的首字母小写,之后每个单词的首字母大写
1 如果不需要传递参数到方法中,只要将括号写出,不必填入任何内容
2 如果方法没有返回值,则在返回值类型处要明确写出void,此时在方法中的return语句可以省略
3 方法执行完后无论是否存在返回值都将返回到方法的调用出并且继续向下执行
代码实例
public class Demo {
public static void main(String args[]){
printInfo(); //调用printInfo()方法
printInfo(); //调用printInfo()方法
printInfo(); //调用printInfo()方法
System. out.println("Hello World!!!" ) ;
}
public static void printInfo(){//有stati关键字,表示方法可以有main方法直接调用
char c[] = {'H' ,'e' ,'l' ,'l' ,
'o'} ; //定义字符数组
for(int x=0;x<c.length;x++){ //循环输出
System. out.print(c[x]) ;
}
System. out.println("" ) ; // 换行
}
}
结果:Hello
Hello
Hello
Hello World!!!
方法的重载
方法名称相同,但是参数的类型和参数的个数不同。是比较参数的类型和个数。
代码实例
public class Demo {
public static void main(String args[]){
int one = add(10,20); //调用整型的加法操作
float two = add(10.3f,13.3f); //调用浮点数的加法操作
System. out.println("add(int x,int y)的计算结果:" + one) ;
System. out.println("add(float x,float y)的计算结果:" + two) ;
}
//定义方法,完成两个数字的相加操作,方法返回一个 int型数据
public static int add(int x,int y){
int temp = 0; //方法中的参数,是局部变量
temp= x + y ; //执行加法计算
return temp; //返回计算结果
}
//定义方法,完成两个数字的相加操作,方法的返回值是一个float型数据
public static float add(float x,float y){
float temp = 0; //方法中的参数,是局部变量
temp= x + y ; //执行加法操作
return temp; //返回计算结果
}
}
结果:
add(int x,int y)的计算结果:30
add(float x,float y)的计算结果:23.6
使用return结束一个方法
在java中,可以是哟个return语句直接结束一个方法
public class Demo {
public static void main(String args[]){
System. out.println("1、调用fun()方法之前。" ) ;
fun(10);
System. out.println("2、调用fun()方法之后。" ) ;
}
public static void fun(int x){
System. out.println("3、进入fun()方法。" ) ;
if(x==10){
return ; //结束方法,返回被调用处
}
System. out.println("4、正常执行完fun()方法。" ) ;//此处不会执行到
}
}
结果:
1、调用fun()方法之前。
3、进入fun()方法。
2、调用fun()方法之后。
数组的引用传递
前面的方法传递和返回的都是基本数据类型,方法中也可以传递和返回数组。如果要向方法中传递一个数组,则方法的接收参数必须是符合其他类型的数组。而且数组属于引用数据类型,所以在把数组传递进方法之后,如果对数组进行了修改,修改的结果也将保存
代码实例:向方法中传递数组
public class Demo {
public static void main(String args[]){
int temp[] = {1,3,5}; //利用静态初始化方式定义数组
fun(temp); //传递数组
for(int i=0;i<temp.length;i++){
System. out.print(temp[i] + "、" ) ;
}
}
public static void fun(int x[]){ //接收整型数组的引用
x[0]= 6 ; //修改第一个元素,此时数组的x[0]元素的值已经被改变
}
}
结果:6、3、5、(原本x[0]值为1,使用fun()方法后,x[0]的值被修改为6,并且保存了下来)
学习小结
1 数组是由一组相同类型的变量所组成的数据类型,他们是以一个共同的名称来表示的。数组存放按元素的复杂程度分为一维,二维数和多维数组
2 使用java中的住宿必须经过声明数组和开辟内存给该数组2个步骤
。声明数组时会在栈内存开辟空间,只开辟栈内存空间爱你的数组是无法使用的。必须有指向的堆内粗给你空间才能够使用,可以使用new关键字开辟堆内存空间,同时制定开辟的空间大小。
3 在java中,要取得数组的长度,,可以利用数组.length来完成
4 java允许二维数组中每一行的元素个数不相同
5 方法时一段可以重复调用的代码段
6 方法的成功在为方法名称相同,参数的类型或者个数不同
7 数组的传递属于引用传递,传递的是堆内存地址的使用权,一个数数组可以有多个名称指向同一个堆内存空间,没一个名称都可以修改堆内存中的内容