java视频学习路径(java基础语法)java数组和方法

1、数组的概念

1、数组是相同类型的数据按顺序组成的一种引用数据类型。

2、数组的声明和创建:

//声明一个整型数组
int[] intArray;
//声明一个字符串类型的数组
String strArray[];

//创建数据
intArray=new int[5];
strArray=new String[10];

//声明同时创建
float[] floatArray=new float[4];

//初始化数组
char[] ch=['a','b'];

(1)首先数组没有初始化就会自己创建默认值,在数字数组都是0,比如int类型是0,float类型是0.0,String类型的默认值是null

(2)数组中的下标移除问题(运行时异常)

package com.imooc;
import java.util.Scanner;
public class FloatDemo {
	public static void main(String[] args) {
		array();
	}
	
	public static void array() {
		int[] intArray=new int[5];
		for(int i=0;i<5;i++) {
			intArray[i]=i+9;
		}
		for(int i=0;i<=5;i++) {
			System.out.print(intArray[i]+"  ");
		}
	}
}

运行上面这个代码我们可以看到错误提示

9  10  11  12  13  Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
	at com.imooc.FloatDemo.array(FloatDemo.java:14)
	at com.imooc.FloatDemo.main(FloatDemo.java:5)

这个错误提示就很清楚了,当输入第六个值的时候,在吗main方法中出现了数组下标超出边界的异常,这个错误发生在com.imooc的包中的FloatDemo类中的array函数和main函数中的第14行和第5行。


2、增强型for循环

1、foreach循环:用法如下:

int[] array=[1,2,3,4,5,6];
for(int n:array)
    System.out.print(n);

2、上面这个就是说把array中的每个数据在for循环中都赋值给n,显示n的值,这个就很有效的防止了下标越界的问题。

3、二维数组

1、二维数组的形式:数据类型 [ ][ ]  数组名 = new 数据类型[m][n];举例:int [ ][ ]  arr=new  int [5][3];  也可以理解为“5行3例”

4、方法简介

1、什么是方法?我们之前用的main主方法,也是程序执行的入口。

Scanner sc =new Scanner(System.in);
sc.nextInt(); //从键盘获取int类型值的方法
sc.next();    //从键盘获取字符串的方法

2、所谓方法,就是用来解决一类问题的代码的有序组合,是一个功能模块。

3、方法名和变量一样,都需要写成驼峰形式,也就是一个单词全部小写,多个单词第一个单词全小写,其他首字母大写。

4.1、无参无返回值方法

1、main方法调用其他方法又两种形式,第一就是使用对象作为方法调用主体,另一种就是使用类名去调用,前者需要使用类去生成一个对象,后者是需要这个方法是静态的,可以直接使用类名作为调用主体,不用新生成对象。

2、不是main方法的方法调用同一个类中的方法就直接调用就可以了

4.2、无参有返回值的方法;有参有(无)返回值的方法

4.3、数组作为方法的参数

1、数组名也是个对象,指向我们数组中的第一个元素

package com.imooc;

public class Rectangle {
	public void printArray(int[] arr) {
		for(int i=0;i<arr.length;i++) {
			System.out.println(arr[i]);
		}
	}
	public static void main(String[] args) {
		Rectangle obj=new Rectangle();
		int[] arr1=new int[5];
		obj.printArray(arr1);
	}

}

4.4、方法重载

1、什么是方法重载?就是方法名相同,方法参数不相同。这里特别要注意,方法重载的两个必要条件就是方法名和方法参数,方法参数的类型不同和数量不同都属于方法参数的不同,但是,方法返回值的类型不同不能作为重载的判断条件

4.5、基本数据类型的传值

1、我们把变量作为参数传到函数中,实际是根据变量的地址去内存中找到值,把值拷贝一份给了参数,并不是把地址传给参数,所以参数值的改变不会影响给参数赋值的变量。

4.6、可变参数列表

1、比如说像这样的就属于可变参数列表:public void sum(int... n){}

2、使用和变化的方法:int... n表示可以有一个int类型的参数,可以有两个int 类型的参数。。。可以有n个int类型的参数

package com.imooc;

public class ArgsDemo {
	public static void sum(int... n) {
		int sum=0;
		for(int i:n) {
			sum=sum+i;
		}
		System.out.println(sum);
	}
	public static void main(String[] args) {
		sum(1,2,3);
		sum(1,2);
	}
}

3、使用增强型for循环和可变参数列表,可以让程序更简单。特别注意的是:当可变参数有两个或者两个参数以上的参数,可变参数列表一定是整个参数体中最后一个所以一个方法中只能有一个可变参数。什么意思,就是下面的代码中,sum函数的参数列表中int... n必须是最后一个,写在int a前面就是错误的,比如下面这样:(因为可变参数列表本来就是可变的,写在前面程序不知道所以的参数中哪些属于可变参数列表中的内容

public static void sum(int... n,int a) {}  //错误写法
package com.imooc;

public class ArgsDemo {
	public static void sum(int a,int... n) {
		int sum=0;
		for(int i:n) {
			sum=sum+i;
			if(sum>=a)break;
		}
		System.out.println(sum);
	}
	public static void main(String[] args) {
		sum(5,1,2,3,5);
		sum(1,2,1);
		int[] a= {1,2,3,4};
		sum(9,a);    //可以将数组传递给可变参数列表
	}
}

4、可以将数组传递给可变参数列表,如上面的代码所示。但是可变参数列表是不能给数组传值的

4.7、可变参数列表作为方法参数的重载问题

1、当我们使用可变参数列表做为一个方法的重载,那么在参数数量相同的情况下,程序会执行无参数列表的那个方法,还有有可变参数类表的方法?如下图所示:

package com.imooc;

public class ArgsDemo2 {

	public int plus(int a,int b) {
		System.out.println("没有可变参数列表:"+a+b);
		return a+b;
	}
	
	public int plus(int... n) {
		int c=0;
		for(int i:n)
			c=c+i;
		System.out.println("有可变参数列表:"+c);
		return c;
	}
	public static void main(String[] args) {
		ArgsDemo2 ad=new ArgsDemo2();
		ad.plus(1,2);
	}
}

2、上面代码的执行结果是

没有可变参数列表:3

那么就知道了在同样的条件下,程序选择执行了没有可变参数列表的那个方法的重载。结论就是:可变参数列表的方法是最后被访问的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值