String... como funciona?

5 respostas
C

quando vc declara em um método um parametro utilizando String… como essa string funciona? já vi q vc pode passar tanto uma String quanto String[], tem mais alguma coisa?

5 Respostas

P

Eu naum entendi mtu bem a sua pergunta, mas vamo lá.
Se você declara um método assim:
Public String seuMetodo() --> Significa que seu método ira retorna um valor String.
Public void seuMetodo( String string ) —> Significa que seu método declaro um parâmetro String, e só ira receber dados desse tipo.
String string --> eh uma variavel
String string[] --> eh uma matrix
Espero ter ajudado.
Flw

J

Esse recurso chama-se Varargs, é uma forma de criar um tipo de "sobrecarga dinâmica" do método, o que ocorre é que você pode passar vários parâmetros e eles são interpretados dentro do método como um array, seria algo assim:

public class Calculadora{
   public double somar(double... nums){
      double total = 0.0;

      for(double n : nums){
        total += n;
      }

      return total;
   }

   public static void main(String[] args){
      Calculadora calc = new Calculadora();
      System.out.println(calc.somar(1.0, 5.3, 10.5, 20.7));
      System.out.println(calc.somar(5.0, 10.0));
      System.out.println(calc.somar(100.0, 53.0, 25.0));
      double[] numeros = {10.0, 20.0, 30.0};
      System.out.println(calc.somar(numeros));
   }
}

Há algumas regras quanto a isso, como por exemplo o parâmetro vararg tem sempre que ser o ultimo, o que restringe o parâmetro vararg a apenas 1.

Isso por exemplo não é valido:

public double somar(double... nums, int outroparametro){

}

public void metodo(double... param1, String... param2){

}

http://java.sun.com/j2se/1.5.0/docs/guide/language/varargs.html

Tenho um vídeo sobre isso, mas ainda não recoloquei no meu site depois que reformulei ele, mas vou colocar logo, depois você vê lá...

C

realmente eu q nao expliquei bem deixa eu revisar se vc declarar um método com

void metodo(String… s) {
}

com os (…) mesmo- vc pode passar pra esse método tanto String quanto String[] ou seja:

String s1 = “”;

metodo(s1);

String[]  s2 = {""};

metodo(s2);

tava querendo saber se esse tipo de declaracao de (String… ) tem mais alguma outra propriedade pq tava mexendo aki e verifiquei que onde eu tinha usado ela parece q nao é obrigatorio ta passando um parametro pro metodo por exemplo

void metodo(int i, String… s) {
}

eu chamei o metodo apenas com

metodo(1);

quero saber mais sobre essa declaracao

C

respondido na mensagem acima

S

Se você não passa esse parâmetro, então é passado um array de tamanho 0.

Criado 17 de janeiro de 2007
Ultima resposta 17 de jan. de 2007
Respostas 5
Participantes 4