Questão sobre static

4 respostas
M

então, qual a saída do código abaixo? roda direitinho? da erro? pq?

public class FooClass {
	
   static byte m1() 
   {
      final char c = '\u0001';
      return c;
   }

   static byte m3( final char c ) 
   {
      return c;
   }
	
   public static void main( String[] args ) 
   {
      char c = '\u0003'; 
      System.out.print( "" + m1() + m3( c ) );
   }

}

4 Respostas

F

da erro, pq nos metodos declaram o tipo de retorno byte e retornam um char… se fosse o contrario acho q funcionava…

S

Da erro apenas no método m3, você pode declarar o retorno como byte e retornar uma constante char ou short desde que essa constante seja constante em tempo de compilação.
No método m3, o retorno não é uma constante em tempo de compilação. Nunca se sabe o que o parametro pode conter, por isso da pau, mas já no método m1, o retorno é uma constante em tempo de compilação e isso não gera problema.

M

isso ai, o samuel toco o horror… ehaheahae, se o m3() fosse retornado assim:

…até rolava :slight_smile:

F

“matheus”:
isso ai, o samuel toco o horror… ehaheahae, se o m3() fosse retornado assim:

…até rolava :)

concordo, mas o cast deveria ser assim: return (byte) c;

Criado 20 de maio de 2004
Ultima resposta 25 de mai. de 2004
Respostas 4
Participantes 4