91aaa在线国内观看,亚洲AV午夜福利精品一区二区,久久偷拍人视频,久久播这里有免费视播

<strong id="fvuar"></strong>

  • <sub id="fvuar"><dl id="fvuar"><em id="fvuar"></em></dl></sub>

    1. 千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

      手機(jī)站
      千鋒教育

      千鋒學(xué)習(xí)站 | 隨時隨地免費(fèi)學(xué)

      千鋒教育

      掃一掃進(jìn)入千鋒手機(jī)站

      領(lǐng)取全套視頻
      千鋒教育

      關(guān)注千鋒學(xué)習(xí)站小程序
      隨時隨地免費(fèi)學(xué)習(xí)課程

      當(dāng)前位置:首頁  >  技術(shù)干貨  > Java Long類型詳解

      Java Long類型詳解

      來源:千鋒教育
      發(fā)布人:xqq
      時間: 2023-11-23 00:10:24 1700669424

      Java中的Long類型是一種基本數(shù)據(jù)類型,它用于表示整數(shù),范圍是-2^63到2^63-1。在實(shí)際開發(fā)中,我們經(jīng)常使用Long類型來存儲大量的整數(shù)數(shù)據(jù),比如表示文件大小、時間戳等等。

      一、Long類型的定義和使用

      在Java中,我們可以使用如下方式定義一個Long類型的變量:

      
      Long num = 123456789L;
      

      其中,L表示將整數(shù)直接轉(zhuǎn)換成Long類型。如果沒有L,則默認(rèn)是int類型,如果超出了int的范圍,編譯器會報錯。

      我們可以調(diào)用Long類提供的一些方法來對Long類型的數(shù)據(jù)進(jìn)行處理,比如:

      
      Long num = 123456789L;
      System.out.println(num.intValue());   //輸出:123456789
      System.out.println(num.toString());  //輸出:“123456789”
      System.out.println(Long.parseLong("123456789"));  //輸出:123456789
      

      二、Long類型的比較和運(yùn)算

      Long類型的數(shù)據(jù)可以進(jìn)行比較和運(yùn)算,比如比較大小、求和、求平均值等等。

      
      Long num1 = 100L;
      Long num2 = 200L;
      if(num1 < num2){
          System.out.println("num1比num2小");
      }
      
      Long sum = num1 + num2;
      Long avg = sum / 2;
      System.out.println("sum="+sum+", avg="+avg);
      

      需要注意的是,Long類型的運(yùn)算比較耗費(fèi)內(nèi)存,如果需要進(jìn)行大量的運(yùn)算,建議使用基本數(shù)據(jù)類型。

      三、Long類型的自動裝箱和拆箱

      Java中的Long類型是一個對象,但是我們可以直接使用Long類型的變量進(jìn)行運(yùn)算,這是因?yàn)镴ava會自動將Long類型的變量進(jìn)行裝箱和拆箱操作。

      例如,我們可以直接使用Long類型的變量進(jìn)行加減運(yùn)算:

      
      Long num1 = 100L;
      Long num2 = 200L;
      Long sum = num1 + num2;
      System.out.println("sum="+sum);  //輸出:sum=300
      

      這里,Java會自動將Long類型的變量裝箱成Long類型的對象,進(jìn)行加法運(yùn)算后,又自動拆箱成Long類型的基本數(shù)據(jù)類型。

      四、Long類型的應(yīng)用場景

      Long類型的數(shù)據(jù)在實(shí)際開發(fā)中應(yīng)用廣泛,比較常見的應(yīng)用場景包括:

      1、文件大小和下載進(jìn)度的表示

      在文件上傳和下載的過程中,我們需要將文件大小和下載進(jìn)度進(jìn)行存儲和計算,通常使用Long類型。

      
      //獲取文件大小
      File file = new File("test.txt");
      Long fileSize = file.length();
      
      //計算下載進(jìn)度
      Long downloadedSize = 10240L;
      Long totalSize = 102400L;
      Double progress = downloadedSize.doubleValue() / totalSize.doubleValue() * 100;
      System.out.println("下載進(jìn)度:"+progress+"%");
      

      2、時間戳的表示

      時間戳常用于記錄某個事件發(fā)生的時間,可以使用Long類型存儲。

      
      //獲取當(dāng)前時間戳
      Long timestamp = System.currentTimeMillis();
      System.out.println("當(dāng)前時間戳:"+timestamp);
      
      //將時間戳轉(zhuǎn)換為日期格式
      Date date = new Date(timestamp);
      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
      System.out.println("當(dāng)前日期:"+sdf.format(date));
      

      3、分布式系統(tǒng)的ID生成

      在分布式系統(tǒng)中,需要生成唯一的ID來保證數(shù)據(jù)的一致性和避免重復(fù)。可以使用Snowflake算法生成Long類型的ID。

      
      public class SnowflakeIdGenerator {
          private long workerId;
          private long sequence = 0L;
          private long twepoch = 1288834974657L;
          private long workerIdBits = 5L;
          private long maxWorkerId = -1L ^ (-1L << workerIdBits);
          private long sequenceBits = 12L;
          private long workerIdShift = sequenceBits;
          private long timestampLeftShift = sequenceBits + workerIdBits;
          private long sequenceMask = -1L ^ (-1L << sequenceBits);
          private long lastTimestamp = -1L;
      
          public SnowflakeIdGenerator(long workerId) {
              if (workerId > maxWorkerId || workerId < 0) {
                  throw new IllegalArgumentException(String.format("worker Id can't be greater than %d or less than 0", maxWorkerId));
              }
              this.workerId = workerId;
          }
      
          public synchronized long nextId() {
              long timestamp = timeGen();
      
              if (lastTimestamp == timestamp) {
                  sequence = (sequence + 1) & sequenceMask;
                  if (sequence == 0) {
                      timestamp = tilNextMillis(lastTimestamp);
                  }
              } else {
                  sequence = 0L;
              }
      
              if (timestamp < lastTimestamp) {
                  throw new RuntimeException(String.format("Clock moved backwards. Refusing to generate id for %d milliseconds", lastTimestamp - timestamp));
              }
      
              lastTimestamp = timestamp;
              return ((timestamp - twepoch) << timestampLeftShift) | (workerId << workerIdShift) | sequence;
          }
      
          protected long tilNextMillis(long lastTimestamp) {
              long timestamp = timeGen();
              while (timestamp <= lastTimestamp) {
                  timestamp = timeGen();
              }
              return timestamp;
          }
      
          protected long timeGen() {
              return System.currentTimeMillis();
          }
      }
      

      使用該工具類可以生成唯一的Long類型的ID:

      
      SnowflakeIdGenerator idGenerator = new SnowflakeIdGenerator(1);
      Long id = idGenerator.nextId();
      System.out.println("生成的ID:"+id);
      

      五、總結(jié)

      Long類型是Java中常用的基本數(shù)據(jù)類型之一,用于存儲整數(shù)。本文介紹了Long類型的定義、使用、比較、運(yùn)算、自動裝箱和拆箱、應(yīng)用場景等相關(guān)內(nèi)容。希望對讀者能有所幫助。

      聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
      10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
      請您保持通訊暢通,專屬學(xué)習(xí)老師24小時內(nèi)將與您1V1溝通
      免費(fèi)領(lǐng)取
      今日已有369人領(lǐng)取成功
      劉同學(xué) 138****2860 剛剛成功領(lǐng)取
      王同學(xué) 131****2015 剛剛成功領(lǐng)取
      張同學(xué) 133****4652 剛剛成功領(lǐng)取
      李同學(xué) 135****8607 剛剛成功領(lǐng)取
      楊同學(xué) 132****5667 剛剛成功領(lǐng)取
      岳同學(xué) 134****6652 剛剛成功領(lǐng)取
      梁同學(xué) 157****2950 剛剛成功領(lǐng)取
      劉同學(xué) 189****1015 剛剛成功領(lǐng)取
      張同學(xué) 155****4678 剛剛成功領(lǐng)取
      鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
      董同學(xué) 138****2867 剛剛成功領(lǐng)取
      周同學(xué) 136****3602 剛剛成功領(lǐng)取
      相關(guān)推薦HOT