方法是数组类型时候,传入参数的一点小疑问

方法是数组类型时候,传入参数的一点小疑问

import java.util.Scanner;

public class FloatDemo {

	public int plus(int a, int b) {
		return a + b;
	}

	public double plus(double a, double b) {
		return a + b;
	}

	public int plus(int[] a) {
		int sum = 0;
		for (int n : a) {
			sum += n;
		}
		return sum;
	}

	public static void main(String args[]) {

		FloatDemo fd = new FloatDemo();
		int m = 10, n = 15;
		double a = 10.3, b = 14.7;
		int[] s = { 1, 2, 3, 4, 5, 6 };
		System.out.println("整数相加和为:" + fd.plus(m, n));
		System.out.println("浮点数相加和为:" + fd.plus(a, b));
		
		System.out.println(fd.plus(1, 2));
		System.out.println(fd.plus(1.2, 2.3));
//		System.out.println(fd.plus({1,2,3}));

	}
}

/最后一句报错,为啥参数是整数或者浮点数的时候,可以不定义变量,直接传入。但是参数的数组的时候,不能将数组直接传入。是因为数组是引用数据类型必须先定义变量才能使用吗?/

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,并不是这样的。

数组和整数、浮点数等的数据类型有本质的区别,所以不能互相转化。那么当参数声明为整数的时候,传入数组就会参数不匹配,导致报错。这里与数组存储的数据类型无关,只要是数组,就会报错。这就像参数声明要求传入int类型,但实际想要传入String时是一样的,哪怕这个字符串真的是由纯数字构成,它的本质也是String而不是int,是无法匹配的。数组也是同理。

祝学习愉快~

  • 自然的诱惑 提问者 #1

    但是函数参数就是数组啊,传的也是数组。

    2024-02-16 09:15:53
  • 好帮手慕小蓝 回复 提问者 自然的诱惑 #2

    同学你好,上面是老师理解错误了。

    同学疑问的是,注释的位置,传入的“{1,2,3}”会报错,但是传入“s”不会报错吗?

    如果是,这是数组声明和创建的问题。如前面课程中所讲,声明数组时有三种方式:

    1.声明数组,然后使用new关键字创建长度,然后依次赋值:

    int[] a = new int[3];
    //也可以分为两行写:
    int[] a;
    a = new int[3];

    2.声明数组,然后使用new关键字创建数组,但不指定长度,直接赋值:

    int[] a = new int[]{1,2,3};
    //也可以分为两行写:
    int[] a;
    a = new int[]{1,2,3};

    3.声明数组,不写new关键字也不指定长度,直接赋值:

    int[] a = {1,2,3};

    上面只有第三种形式不能分成两行写,因为在Java中不能直接识别大括号的形式。在Java中,大括号代表代码块而不是数据区域。在同学的代码中,参数中直接写入大括号和数据,会被识别为代码块而不是数组。这就是报错的主要原因了。

    祝学习愉快~

    2024-02-16 10:00:18
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
Java工程师 2024版
  • 参与学习       2020    人
  • 提交作业       1249    份
  • 解答问题       1202    个

2024重磅革新,超百小时内容豪华升级,加速提升高级技能与高薪就业竞争力 课程紧贴企业最新人才需求,历经7年持续迭代,帮助万名学子入行转行 从零起点到高阶实战,学习路径稳健顺滑,成就从小白到工程师高薪

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师