麻豆黑色丝袜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
主站蜘蛛池模板: 日韩国产片| 国产精品一区二区久久精品涩爱| 天天看影院| 国产欧美另类久久久精品免费| 低头看我是怎么c哭你的| 亚洲精品午夜久久久伊人| 久久久久久久久久国产精品免费| 日韩1234| 久久国产精品久久| 最近中文字幕最新在线视频| 欧美成a人免费观看| 欧美激情一区二区三区| 一个人看的www在线观看免费| 你看桌子上都是你流的| 亚洲国产一成人久久精品| 中文字幕第9页萱萱影音先锋| 玉蒲团在线看| 天堂成人在线观看| 久久久久亚洲精品影视| 成年在线观看免费人视频草莓| 国产一级黄色录像| 好紧我太爽了再快点视频| 韩日黄色片| 国产乱子伦在线观看不卡| 国产gav成人免费播放视频| 最近中文字幕mv在线视频www| 国产激情视频一区二区三区| 国产综合在线观看视频| 欧美高清在线精品一区| 四虎影永久在线高清免费| 被猛男cao尿了| 国产高清免费在线| 国产成在线观看免费视频| 麻豆精品国产免费观看| 国产**aa全黄毛片| 欧美最猛黑人xxxx黑人猛交98| 国产卡一卡二卡三卡四| 在线日韩欧美| 鲁啊鲁啊鲁在线视频播放| 9999av| 韩国免费一级片|