为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我们需要双重定义从 main 传递到方法的变量?

为什么我们需要双重定义从 main 传递到方法的变量?

SMILET 2021-10-28 09:17:16
取以下代码:public static void print(ArrayList<String> list) {    for (String word : list) {        System.out.println( word );    }}public static void main(String[] args) {    ArrayList<String> list = new ArrayList<String>();    list.add("Java");    list.add("Python");    list.add("Ruby");    list.add("C++");    print(list);}为什么我们需要在main中将'list'定义为一个ArrayList,然后在方法中的参数中重新定义呢?为什么不能将变量类型从 main 传递给方法?有没有办法做到这一点?您希望类型在 main 和 method 之间更改的任何示例?感觉就像不必要地重复两次相同的步骤。例如,为什么我们不能只使用:public static void print(list) {    for (String word : list) {        System.out.println( word );    }}public static void main(String[] args) {    ArrayList<String> list = new ArrayList<String>();    list.add("Java");    list.add("Python");    list.add("Ruby");    list.add("C++");    print(list);}
查看完整描述

3 回答

?
繁华开满天机

TA贡献1816条经验 获得超4个赞

什么是list?


public static void print(list) {

    for (String word : list) {

        System.out.println( word );

    }

}

在面向对象编程的上下文中,假设一个外部类想要使用此方法。它会在这里传递什么?这里能传入什么?它怎么会知道?


从根本上说,您对variables和parameters之间的区别感到困惑。两者都必须是类型的,因为 Java 是一种强类型语言,但两者都不一定相互关联。您可以使用与稍后声明的变量名称相同的参数以提高可读性,但没有其他规定为此在任何地方设置。


为了说明这一点,这里再次使用相同的方法:


public static void print(ArrayList<String> l) {

    for (String word : l) {

        System.out.println( word );

    }

}

参数的名称无关紧要,只要输入的是。


查看完整回答
反对 回复 2021-10-28
?
繁星淼淼

TA贡献1775条经验 获得超11个赞

Java 是一种强静态类型语言,它要求您声明该方法接受的类型。如果您不希望该方法接受任何类型的列表,您可以这样做:


// this method can accept an ArrayList, LinkedList, etc

public static void print(List<String> list) {

    for (String word : list) {

        System.out.println( word );

    }

}


public static void main(String[] args) {

    ArrayList<String> list = new ArrayList<String>();

    list.add("Java");

    list.add("Python");

    list.add("Ruby");

    list.add("C++");


    print(list);

}


查看完整回答
反对 回复 2021-10-28
  • 3 回答
  • 0 关注
  • 129 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信