黑马程序员技术交流社区
标题:
请教一个有关参数的问题
[打印本页]
作者:
lucy198921
时间:
2013-3-21 21:29
标题:
请教一个有关参数的问题
本帖最后由 lucy198921 于 2013-3-22 21:08 编辑
这个问题有点不明白.
class Test
{
public static String[] args = {"gg","ss","dd","dal"};
public static void main(String[] args){
System.out.println(args.length);
}
}
打印出来的结果怎么是0,却不是4呢?
作者:
王晓楠
时间:
2013-3-21 21:41
第一个args是类的字段属性,第二个是main函数的局部变量,局部变量你没有赋值,再说main方法和Test这个类没有关系。
作者:
李尧
时间:
2013-3-21 21:48
你这个String[] args = {"gg","ss","dd","dal"} Test类的一个成员而已,并没有传给主函数作为参数.如果你用的是eclipise 在run as 时选config argments
把String[] args = {"gg","ss","dd","dal"}复制进去 作为参数传给主函数.结果就是4了.
作者:
梁志兵
时间:
2013-3-21 21:56
String[] args = {"gg","ss","dd","dal"}你里面还没赋值进去,所以它的默认值都是为0
作者:
胡国彬
时间:
2013-3-21 22:09
本帖最后由 胡国彬 于 2013-3-21 22:11 编辑
因为你外部有一个全局变量args,main方法里面还有一个局部变量args,一个方法里面,如果要调用参数的值,如果局部变量和全局变量重名,默认会调用局部变量.也就是在这里,调用的是main的参数args.如果你想要结果是4,很简单,只需要把main的参数args的名称改变,或者把全局变量的args的名称改变,结果就是4了.
另外,两个args虽然重名,但是是不同的对象,也就是在内存中是不同的地址
还有,外部的args相当于普通的变量,而main方法的args虽然可以和外部的变量一样用其他的名字命名,但是是有区别的,这个main方法的参数String[] args是在运行时由虚拟机自动初始化的,而且,main方法是用来接收运行时输入的参数的.比如你运行Test.class文件时,输入以下命令:
java Test you me
"you"和"me" 两个字符串就保存在args里面
测试:
在Hello.java加上输出args[]的代码
main(string args[]) {
System.out.println(args[0] +"\n" + args[1]
}
这个时候是可以打印出你输入的you 和me的
作者:
王俊杰
时间:
2013-3-21 22:52
首先,关于String[] args的意义:
在public static void main(String[] args)语句中,
String[] args表示main方法的入口参数,是一个字符串数组。此字符串数组中的元素是在执行程序时输入的命令行参数。
其中的args是Java命令行参数,我们在DOS中执行Java程序的时候使用“java 文件名 args参数”。args这个数组可以接收到这些参数。
其次,关于作用域的问题
当一个变量被定义的时候,它的作用域就被确定了。
按作用域的不同,变量可以分为以下类型:
1.成员变量 在类中声明,它的作用域是整个类
2.局部变量 在方法内部或者方法的一个代码块的内部声明 如果在一个方法内部声明,它的作用域就是整个方法 如果在一个方法的某个代码块的内部声明,他的作用域就是这个代码块 代码块:位于一个{}以内的代码。
3.方法的参数 方法或者构造方法的参数,他的作用域是整个方法或者构造方法。
通过以上两点可以知道,在主方法内的args是String[] args中的args,而不是外面的args.
在Eclipse中,光标置于某个变量处,可以方便地看出哪个是跟他同一个。
祝你进步!!
作者:
田光峰
时间:
2013-3-22 15:10
第一个args是静态的成员变量(全局的),而第二个args是方法中的参数变量(局部的),当System.out.println(args.length);运行时就找他最近的args即参数变量,但发现他是空的所以结果是0。如果想用成员变量可以用this来指定,程序就可以知道args是成员变量不是参数变量。
作者:
陈丽莉
时间:
2013-3-22 16:05
记得及时处理帖子哦,继续追问,或将分类改成【已解决】~
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2