黑马程序员技术交流社区

标题: 关于String [打印本页]

作者: 蒋映辉    时间: 2012-4-30 14:35
标题: 关于String
昨天看李刚老师的《疯狂JAVA》讲义   实例里边有这样一个东西,但是好像基础里没有讲,求解答
在编写梭哈游戏的时候有这样一个方法 public void initPlayer(String... names){..} 调用的时候是:sh.initPlayer("电脑玩家","孙悟空").看了一下,它是把调用的时候的字符串存在names数组里的感觉
  求详细解释。
作者: 胡生蒙    时间: 2012-4-30 14:53
这个方法的参数是可变参数,这是jdk1.5的新特性,就是函数不指定参数的个数,调用的时候,可以根据自己的需要传入几个参数。这不是将字符串存在names数组里
作者: 隋营营    时间: 2012-4-30 17:17
本帖最后由 隋营营 于 2012-4-30 17:25 编辑

应该和PrintStream类的  public PrintStream printf(String format, Object... args) 用法相似
测试了一下下:
public class Cunt {

    public static void main(String[] args) {
        fuck("verycd", "163", "tianya");
    }

    static void fuck(String... values) { //这里的values是一个String数组
        System.out.println(values[0]); //输出:verycd
    } //System.out.println(values[1]); 输出:163

} //System.out.println(values[2]); 输出:tianya
作者: 罗旭维    时间: 2012-4-30 18:04
这是可变参数的写法,当你不确定这个方法应该接受几个参数时用,
有一些限制,就是可变参数必须是参数列表里最后一个。
使用的场景如:
public void initPlayer(String... names){
       for(String name:names)


}
作者: 杨志    时间: 2012-4-30 22:21
这个是java的JDK 1.5 以后的新特性,开始支持动态参数列表。
比如说:
  1. public void test(String ...name){
  2. for(int i = 0 ; i < name.length ; i ++){
  3.   System.out.println(name[i]);
  4. }
  5. }
复制代码
这里的动态参数列表会以数组的方式去接受。
但是要注意,就是这个动态参数列表只能出现在参数的最后。
比如::
  1. public void test(String ...name,int n ){
  2. for(int i = 0 ; i < name.length ; i ++){
  3.   System.out.println(name[i]);
  4. }
  5. }
复制代码
这样的话就不可以了。必须是:
  1. public void test(int n ,String ...name){
  2. for(int i = 0 ; i < name.length ; i ++){
  3.   System.out.println(name[i]);
  4. }
  5. }
复制代码
不知道能不能帮上你!谢谢!

作者: 何阳    时间: 2012-4-30 22:45
//这个传递的参数是JDK1.5以后的新特性
//如果是JDK1.4的话 ,我们应该这么写(Object [] obj)或者(String []str)
//但是你在外面传递的时候数组是固定的,
//如果你不想固定数组的长度,就可以用可变参数String ...names传递
//你想传递几个都可以。例如 String name1=“张三”,String name2=“李四”;
//你可以这样调用方法sh.initPlayer(name1);或者sh.initPlayer(name1,name2);





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2