Dúvidas sobre long

14 respostas
SirDominque
private static long MAX_STATS_INTERVAL = 1000000000L;

// private static long MAX_STATS_INTERVAL = 1000L;

// record stats every 1 second (roughly)

O que esse L quer dizer ?
private long statsInterval = 0L; // in ns ?

==========================================

Eu também queria saber sobre math.abs

14 Respostas

Rodrigo_Sasaki

ué, o L quer dizer que é um long da forma literal.

Todo número digitado no código é visto como um int portanto existem maneiras de dizer explicitamente que ele é de outro tipo: int i = 10; long l = 10L; float f = 10f; double d = 10d; Quanto ao método abs, qual a dúvida? você leu a documentação?

SirDominque

Rodrigo Sasaki:
ué, o L quer dizer que é um long da forma literal.

Todo número digitado no código é visto como um int portanto existem maneiras de dizer explicitamente que ele é de outro tipo: int i = 10; long l = 10L; float f = 10f; double d = 10d; Quanto ao método abs, qual a dúvida? você leu a documentação?

valeu pela respota, mas …
Não entendi a diferença entre digitar

long l = 10 e
long l = 10L

Rodrigo_Sasaki

é que no seu exemplo é como se estivesse atribuindo um int a um long e isso é perfeitamente válidoint i = 10; long l = i;Agora tente com um valor que não cabe em um int, assim:long l1 = [telefone removido]; long l2 = 10000000000L;

SirDominque

Rodrigo Sasaki:
é que no seu exemplo é como se estivesse atribuindo um int a um long e isso é perfeitamente válidoint i = 10; long l = i;Agora tente com um valor que não cabe em um int, assim:long l1 = [telefone removido]; long l2 = 10000000000L;

valeu!! Agora entendi :smiley:

package Testes;

/**
 *
 * @author André
 */
public class LongTeste {
    public static long myLong;
    public static long mySecondLong;
    public static int soma = 0;
    
    public static void main(String args[])
    {
        //Leva muito tempo:
        myLong =       100000000000l;
        mySecondLong = 100000000000l;
        somar();
        
        //100 L = 100 
        // Prova : 
        myLong = 100L;
        mySecondLong = 100;
        somar();
        
    }
    
    public static void somar()
    {soma = 0;
        
        for(int i=0;i< mySecondLong;i++)
        {
          soma++;
        }
        System.out.println("Soma : " + soma);
        soma = 0;
        
        //
        
        for(int i=0;i<myLong;i++)
        {
            soma++;
        }
        System.out.println("SomaII : " + soma);
   }
}
Ataxexe

Uma dica: use “L” (maiúsculo) pra deixar claro que não se trata do número 1. Dependendo da fonte isso causa uma confusão…

Rodrigo_Sasaki

Hahaha, ótima dica.

Pra mim já virou até um costume, porque na fonte do eclipse mesmo (que tem uma certa diferença) eu acabo confundindo.

SirDominque

Lawls, pior que eu tinha feito isso e depois mudei pra ver se tinha diferença haha.

Mas blz, agora vou ver esse Math.abs

Rodrigo_Sasaki

Andre Lopes:
Lawls, pior que eu tinha feito isso e depois mudei pra ver se tinha diferença haha.

Mas blz, agora vou ver esse Math.abs


Ele simplesmente retorna o valor absoluto do número informado. Não tem segredo.

SirDominque
Rodrigo Sasaki:
Andre Lopes:
Lawls, pior que eu tinha feito isso e depois mudei pra ver se tinha diferença haha.

Mas blz, agora vou ver esse Math.abs


Ele simplesmente retorna o valor absoluto do número informado. Não tem segredo.

Saquei, mas porque quando da 0.5, ele retorna 0 ?

package Testes;

/**
 *
 * @author André
 */
public class MathAbs {
    
    public int primeiroValor = 1;
    public int segundoValor = 2;
    public int terceiroValor = -1;
    
    public static void main(String args[])
    {
       MathAbs m = new MathAbs();
       m.mathAbs();
       
       
       System.out.println("\nMathAbsII : ");
       m.mathAbsII();
        
    }
    
    public void mathAbs()
    {
        
        int abs1 = Math.abs(primeiroValor);
        int abs2 = Math.abs(segundoValor);
        int abs3 = Math.abs(terceiroValor);
        
        System.out.println("ABS Primeiro Valor : " + abs1);
        System.out.println("ABS Segundo Valor : " + abs2);
        System.out.println("ABS Terceiro Valor : " + abs3);
        
    }
    
    
    public void mathAbsII()
    {
        double resposta  = Math.abs((primeiroValor + segundoValor +(4 * terceiroValor)) );
        System.out.println("Resposta = " + resposta);
        
        resposta = Math.abs((primeiroValor + segundoValor +(4 * terceiroValor)) / 2 );
        System.out.println("RespostaII = " + resposta);
    }
    
}
run:
ABS Primeiro Valor : 1
ABS Segundo Valor : 2
ABS Terceiro Valor : 1

MathAbsII : 
Resposta = 1.0
RespostaII = 0.0
CONSTRUÍDO COM SUCESSO (tempo total: 0 segundos)

A resposta II da 0

Rodrigo_Sasaki

Porque seu atributo é um int, mude pra double ou float.

E

"
Saquei, mas porque quando da 0.5, ele retorna 0 ?

"
Porque Long é um inteiro.

Abs.,

Ataxexe

Ou mude

resposta = Math.abs((primeiroValor + segundoValor +(4 * terceiroValor)) / 2 );

pra

resposta = Math.abs((primeiroValor + segundoValor +(4 * terceiroValor)) / 2.0 );

Isso forçará a divisão ser entre tipos de ponto flutuante.

SirDominque

Ataxexe:
Ou mude

resposta = Math.abs((primeiroValor + segundoValor +(4 * terceiroValor)) / 2 );

pra

resposta = Math.abs((primeiroValor + segundoValor +(4 * terceiroValor)) / 2.0 );

Isso forçará a divisão ser entre tipos de ponto flutuante.

RespostaII = 0.5

o.o, mas Math.abs nao era Int ? Ou ele depende dos valores com os quais esta trabalhando ?

Rodrigo_Sasaki

O método abs tem diversas sobrecargas.

<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Math.html#abs(double)" data-bbcode="true">abs(double a) </a>

<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Math.html#abs(float)" data-bbcode="true">abs(float a) </a>

<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Math.html#abs(int)" data-bbcode="true">abs(int a) </a>

<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Math.html#abs(long)" data-bbcode="true">abs(long a) </a>
Criado 13 de novembro de 2012
Ultima resposta 13 de nov. de 2012
Respostas 14
Participantes 4