麻豆黑色丝袜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
主站蜘蛛池模板: 男男车车的车车网站免费 | 免费高清理伦片在线观看| 中文字幕一区二区三区久久网站| 美女张开腿让男人桶的视频| 芭蕉私人影院在线观看| 免费va欧美在线观看| 波多野たの结衣老人绝伦| 日本免费电影一区| 客厅餐桌椅子上波多野结衣| 处破之轻点好疼十八分钟| 亚洲动漫在线| 久re这里只有精品最新地址| 白白色免费在线视频| 久草这里只有精品| 1024视频基地| 精品一区二区久久久久久久网站| 亚洲区小说区激情区图片区| 精品精品国产高清a级毛片| 日本阿v视频在线观看| 国产麻豆videoxxxx实拍| 夜夜影院未满十八勿进| 国产男女猛烈无遮挡免费视频| 欧美性乱| 天天色影网| 伊人色综合久久天天| 国产精品一区二区久久不卡| 老女人影院| 无限在线观看下载免费视频| 国内精品久久久久影院网站| 欧美一级片免费在线观看| china同性基友gay勾外卖| 欧洲大片无需服务器| 99久久精品费精品国产| 风流艳妇在线观看| 天天躁日日躁狠狠躁中文字幕| 2021国产麻豆剧传媒仙踪林| 看三级黄色片| aaa毛片免费观看| 久久精品日日躁精品| 波多野结衣加勒比| 色八a级在线观看|