麻豆黑色丝袜jk制服福利网站-麻豆精品传媒视频观看-麻豆精品传媒一二三区在线视频-麻豆精选传媒4区2021-在线视频99-在线视频a

千鋒教育-做有情懷、有良心、有品質的職業(yè)教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > 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ù)直接轉換成Long類型。如果沒有L,則默認是int類型,如果超出了int的范圍,編譯器會報錯。

我們可以調用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類型的運算比較耗費內存,如果需要進行大量的運算,建議使用基本數(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類型的應用場景

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

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類型存儲。


//獲取當前時間戳
Long timestamp = System.currentTimeMillis();
System.out.println("當前時間戳:"+timestamp);

//將時間戳轉換為日期格式
Date date = new Date(timestamp);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("當前日期:"+sdf.format(date));

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

在分布式系統(tǒng)中,需要生成唯一的ID來保證數(shù)據(jù)的一致性和避免重復。可以使用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);

五、總結

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

聲明:本站稿件版權均屬千鋒教育所有,未經(jīng)許可不得擅自轉載。
10年以上業(yè)內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
主站蜘蛛池模板: 亚洲有码转帖| 亚洲国产成人久久综合区| 爽爽日本在线视频免费| 日本电影中文字幕| 久久精品无码一区二区三区 | 日本护士在线视频xxxx免费| 免费被靠视频动漫| 天堂在线影院| 久久依人| 毛片日韩| 果冻传媒mv在线观看入口免费 | 大陆一级毛片免费视频观看| 无遮挡动漫画在线观看| 台湾三级全部播放| 夂女yin乱合集高h文| 美女脱了内裤打开腿让你桶爽| chinese真实露脸hotmilf| 欧美成人免费观看久久| 日本年轻的妈妈| 调教女m视频| 国产999在线观看| 欧美边吃奶边爱边做视频| 美女黄视频免费| 欧美日韩电影在线| 国产成人精品免费直播| 久久精品国产99国产精偷| 97久久久亚洲综合久久88| 欧美激情xxxx性bbbb| 美国式的禁忌80版| www.米奇777.com| 久热精品在线| 特黄特色大片免费播放| 欧美香蕉在线| 182tv免费视视频线路一二三| 国产国产人成免费视频77777| 久久青草国产精品一区| 亚洲精品无码不卡| 两个人看的www视频日本| 亚洲冬月枫中文字幕在线看| 中文字幕在线视频在线看| 国产精品欧美一区二区三区不卡|