SóProvas


ID
2765386
Banca
IF-RS
Órgão
IF-RS
Ano
2018
Provas
Disciplina
Programação
Assuntos

Considerando o código Java a seguir:


1 public class Programa {

2 public static void main(String[] a) {

3 long c = m(5L);

4 System.out.println(c);

5 }

6 static int m(long a) { return a*2; }

7 long m(int a) { return a * 4; }

8 }


É CORRETO afirmar que:

Alternativas
Comentários
  •            A questão aborta o assunto CASTING (conversão) da linguagem Java;

    Primeiramente, os valores dos tipos primitivos em java:

           byte  -8 bit                                   char -16 bit-

           short -16 bit-                                float -32 bit-

           int -32 bit-                                    double -64 bit-

           long -64 bit-                                   boolean - 1 bit-

     

    Basicamente, possuimos 2 tipos de casting em  java, são eles:

    1) Casting implicito

           Quando convertemos um tipo primitivo de tamanho menor para um tipo primitivo de tamanho maior ( ex.: int para long)

    2) Casting explicito

         Na conversão de um tipo primitivo de tamanho maior para um tipo primitivo de tamanho menor. Ao realizar o casting explicito, como o próprio nome já menciona, devemos faze-lo EXPLICITAMENTE.(ex.  x = //(int)i; )

     

     

    Sabendo do conceito acima, podemos verificar que na linha 6, temos uma parametro do tipo long (64 bits) sendo atribuido para uma método com o tipo primitivo int ( ou seja long para int, 64 bits para 32 bits) como não houve o casting explicito possuimos um erro de compilação na linha 6

     

    GABARITO LETRA B

     

    Adendo:

    Se na linha 6 possuíssemos: static long m (...  , o código iria imprimir na tela  o valor "10", valindando a alternativa D.

  • Long x Inteiro = Long