黑马程序员技术交流社区
标题:
参数的问题
[打印本页]
作者:
孙沛
时间:
2012-9-4 21:48
标题:
参数的问题
class Test
{
public static String[] args = {"gg","ss","dd","dal"};
public static void main(String[] args){
System.out.println(args.length);
}
}
为什么打印的是0,而不是4
作者:
杨卓儒
时间:
2012-9-4 22:01
class Test
{
public static String[] args = {"gg","ss","dd","dal"};//定义字符串数组 args[]
public static void main(String[] args){ //注意主函数又初始化了args
System.out.println(args.length);// 所以这里打印的是主函数的元素列表,因为没有传值进去,所以当然是零了
}
}
复制代码
楼主把你的字符串名字换一下就ok了,换成arrs也行啊,打印的就是4了
作者:
王陶成
时间:
2012-9-4 22:03
这样是传不进去的
public static String[] args = {"gg","ss","dd","dal"};是定义了一个成员变量,它跟main方法里面的args不同。main方法里面的args是局部变量
你要往main方法里面传参数,就要在别的地方调用main方法,传参进去
就像这样
class Demo {
public static void main(String[] args) {
String[] arr = {"gg","ss","dd","dal"};
Test.main(arr);
}
}
public class Test {
public static void main(String[] args) {
for (int x = 0; x < args.length; x++) {
System.out.println(args[x]);
}
}
}
也可以使用cmd 传参
作者:
杨鹏鹏
时间:
2012-9-4 22:06
public class Test1
{
public static String[] args = {"gg","ss","dd","dal"};
static{
main(args)
;
System.out.println("静态代码块"+args.length);
}
public static void main(String[] args){
//System.out.println(args[2]);
System.out.println("main函数"+args.length);
}
}
main函数4
静态代码块4
main函数0
作者:
彭润生
时间:
2012-9-4 22:07
楼上说的很对,主线程先从主函数main开始执行所以执行的就是主函数中的参数的长度,默认的长度为0。可以写成public static String[] args1 = {"gg","ss","dd","dal"};然后调用args1.length就可以了
作者:
袁艳超
时间:
2012-9-4 22:08
其实就是一句话,就近访问原则
作者:
Tesla时光
时间:
2012-9-4 22:59
本帖最后由 翁发达 于 2012-9-4 23:05 编辑
因为args是成员变量,函数要调用局部同名变量要加this,因为是静态成员变量,所以前面加Test.args.length,写成这样就可以了
1png.png
(20.6 KB, 下载次数: 22)
下载附件
2012-9-4 23:03 上传
作者:
舒远
时间:
2012-9-5 10:55
成员变量和方法参数(局部变量)同名的时候,局部变量会覆盖成员变量,且作用域只在方法内部有效,此时你打印的是局部变量的长度,跟成员变量没有关系。想要打印静态成员变量的长度应该使用类名.属性的方式,如果非静态成员应该使用this.属性的方式。以示区分,避免混淆嘛。一般在类的getter和setter时才会把变量名写的一样,通常不要写成一样的。公司开发规范中也是如此。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2