麻豆黑色丝袜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
主站蜘蛛池模板: 在线看无码的免费网站| 久久综合九色综合欧美播| 涩涩爱影院| 日本在线高清版卡免v| 再深点灬舒服灬太大了np视频| 樱桃黄高清完整版在线观看| 日韩特黄| 九九精品99久久久香蕉| 日本动漫黑暗圣经| 啊灬老师灬老师灬别停灬用力 | 成人毛片手机版免费看| 欧美大片在线观看完整版 | 两个小姨子2| 亚洲精品美女在线观看播放| 精品视频一区二区三三区四区| 黄色一级电视| 麻豆一区区三三四区产品麻豆| 最新国产精品精品视频| 韩国三级hd中文字幕| 最近高清中文字幕在线国语5| 好猛好能干h| 欧美性猛交xxxx乱大交蜜桃| 芭蕉私人影院在线观看| 顶级欧美色妇xxxxx| 免费无遮挡肉动漫在线观看| 巨大欧美黑人xxxxbbbb| 动漫人物差差差免费动漫在线观看| 中文字幕一精品亚洲无线一区| 被公侵犯肉体的中文字幕| 欧美性xxxxx极品娇小| 亚洲性色高清完整版在线观看| 一本大道一卡2卡三卡4卡麻豆| 国产伦理一区二区三区| 女主调教贱女m视频| 大狠狠大臿蕉香蕉大视频| 成年片人免费www| 国产999| 国内精品伊人久久久久妇| 本子库全彩无遮挡无翼乌触手| 国产凌凌漆国语| 特黄特色大片免费|