Dúvidas sobre long

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

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?

[quote=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?[/quote]

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

long l = 10 e
long l = 10L

é 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 = 10000000000; long l2 = 10000000000L;

[quote=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 = 10000000000; long l2 = 10000000000L;[/quote]

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);
   }
}

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…

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.

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

[quote=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 [/quote]
Ele simplesmente retorna o valor absoluto do número informado. Não tem segredo.

[quote=Rodrigo Sasaki][quote=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 [/quote]
Ele simplesmente retorna o valor absoluto do número informado. Não tem segredo.[/quote]

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);
    }
    
}

[code]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)
[/code]

A resposta II da 0

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

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

"
Porque Long é um inteiro.

Abs.,

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.

[quote=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.[/quote]

RespostaII = 0.5

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

O método abs tem diversas sobrecargas.

abs(double a)
abs(float a)
abs(int a)
abs(long a)