国产睡熟迷奷白丝护士系列精品,中文色字幕网站,免费h网站在线观看的,亚洲开心激情在线

      <sup id="hb9fh"></sup>
          1. 千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機構(gòu)

            手機站
            千鋒教育

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

            千鋒教育

            掃一掃進入千鋒手機站

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

            關(guān)注千鋒學(xué)習(xí)站小程序
            隨時隨地免費學(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。在實際開發(fā)中,我們經(jīng)常使用Long類型來存儲大量的整數(shù)數(shù)據(jù),比如表示文件大小、時間戳等等。

            一、Long類型的定義和使用

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

            
            Long num = 123456789L;
            

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

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

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

            二、Long類型的比較和運算

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

            
            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類型的運算比較耗費內(nèi)存,如果需要進行大量的運算,建議使用基本數(shù)據(jù)類型。

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

            Java中的Long類型是一個對象,但是我們可以直接使用Long類型的變量進行運算,這是因為Java會自動將Long類型的變量進行裝箱和拆箱操作。

            例如,我們可以直接使用Long類型的變量進行加減運算:

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

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

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

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

            1、文件大小和下載進度的表示

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

            
            //獲取文件大小
            File file = new File("test.txt");
            Long fileSize = file.length();
            
            //計算下載進度
            Long downloadedSize = 10240L;
            Long totalSize = 102400L;
            Double progress = downloadedSize.doubleValue() / totalSize.doubleValue() * 100;
            System.out.println("下載進度:"+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ù)??梢允褂肧nowflake算法生成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īng)用場景等相關(guān)內(nèi)容。希望對讀者能有所幫助。

            聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
            10年以上業(yè)內(nèi)強師集結(jié),手把手帶你蛻變精英
            請您保持通訊暢通,專屬學(xué)習(xí)老師24小時內(nèi)將與您1V1溝通
            免費領(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