主頁 > 後端開發 > Java基礎語法 - Java資料型別

Java基礎語法 - Java資料型別

2021-10-17 08:26:26 後端開發

資料型別

  • 🍎前言
  • 🍦變數
    • 🐱?🚀常量
    • 🚲變數
      • 🌳生命周期及作用域
      • 🚆變數的命名規則
  • 🤳資料型別
    • 🥪基本資料型別,
    • 💕字串型別,
      • 🔨轉義字符
  • 🍚型別轉換
    • 🤢為什么要有型別轉換
    • 🦝算數型別轉換(數值提升)
    • 🥛強制型別轉換
  • 🏆整型和字串型別之間的小故事
    • 🎨整型和字串型別的相互轉換
    • 😑整型和字串型別的拼接
  • 🐱?🏍總結

🍎前言

哈嘍大家好,我是Aaron,每一種不同的計算機語言,都會有一定標準的對資料型別的規范,Java也不例外,文本內容將詳細介紹有關Java中常見的資料型別,

Java是強型別語言,所以本文將會以和弱型別語言的C語言做對比的形式闡述Java的魅力,

請添加圖片描述


所有的資料型別,都是圍繞著變數來闡述的,沒有變數,談論資料型別則是沒有意義的,接下來我們先介紹變數的概念,

🍦變數

在計算機語言中,存在常量和變數的概念,

🐱?🚀常量

在Java中,常量分為兩種:

  1. 字面常量,
    也就是我們平常說的數字或者字符/字串常量,

一般的字面常量有:

數值型別
024int 型常量(10進制)
024int 型常量(8進制)
0x5fint型常量(16進制)
32Llong型常量
3.14ffloat型常量
5.18lfdouble型常量
1.2e3double型指數常量,表示1.2?103
‘a’char型別字符常量
“abcx”字串常量
trueboolean型別字面值常量
  1. final修飾的常變數,
    這里可以類比為C語言中const修飾的常變數,本質是個變數,但只能被初始化一次,初始化之后其值不能再被修改,

如:

final int A = 10;
A = 20; // 報錯,因為final修飾的變數不可被改變,它具有了常屬性

常量是存放在常量區的,但以上兩種不同常量也存在區別:

  1. 字面常量:

在編譯時,字面常量會被翻譯成位元組碼存放在位元組碼檔案(.class檔案)中,

  1. final修飾常量

會在堆疊中創建堆疊幀,為其分配空間,但也是在編譯時就確定其值,
(注:變數是在運行時計算,確認其值)

🚲變數

變數分為:

  1. 區域變數,
  2. 成員變數,

而成員變數分為:

  1. 普通成員變數,

普通成員變數的定義介于類和方法之間,例:

public class DataType {

    int a = 10;

    public static void main(String[] args) {



    }

}

這里的變數a就是普通成員變數,

  1. 靜態成員變數,

靜態成員變數就是用static修飾的變數,例如,

static int a = 0;

🌳生命周期及作用域

在Java中,同樣存在變數的生命周期及作用域,這兩個概念和C語言中相似,這里便不過多介紹,只需要注意變數的作用域在代碼塊( { } )內即可,

如:

public class DataType {

//    int a = 10;

    public static void main(String[] args) {

        int a = 10;
        {
            a = 20;
        }

        {
            int b = 10;
        }
        b = 20;

    }

}

這里變數a的定義和賦值沒有任何問題,但變數b就會報錯,因為對b進行賦值的時候,他已經出了所處的代碼塊( { } )內,該變數已被銷毀,

🚆變數的命名規則

變數的命名規則有兩個指標:

  • 硬性指標
  1. 變數名只能由字母,數字,下劃線,美元符號($)組成,
  2. 變數名不能以數字開頭,
  3. 變數名需要區分大小寫,如NUM和num不是同一個變數,
  • 軟性指標
  1. 變數名需要有描述性,即見名知意,
  2. 變數名不要使用漢語拼音~
  3. 變數名推薦小駝峰命名法,
  4. 變數名推薦使用名詞詞性進行命名,

變數的命名和類的命名需要加以區別,類的命名我們習慣上使用大駝峰命名,比如本文中博主代碼中常見的:

public class DataType {

}

這里的DataType采用的就是大駝峰命名法,所有的英文單詞首字母都要大寫,

而變數的命名則需要采用小駝峰命名法,

小駝峰命名:

  1. 第一個單詞首字母小寫,其他單詞首字母大寫,
  2. 所有字母全小寫,單詞之間用下劃線分割,

如:

int numDigit = 0;

或者:

int num_digit = 0;

在習慣上:final修飾的常量名用大寫字母表示,變數名用小寫字母表示


🤳資料型別

Java提供了各種豐富的資料型別,以便不同變數可更加有效地存放資料,

資料型別又分為兩大塊:

  1. 基本資料型別,
  2. 參考型別,

但參考型別涉及面不同,例如陣列,字串,介面等等,每一個博主都可以專門出一篇文章詳細介紹,所以這里就不過多贅述,本文只將基本資料型別詳細介紹即可,

🥪基本資料型別,

資料型別如下:

資料型別所占空間大小
boolean1bit/1byte(由編譯器決定,Java未給出標準大小)
byte1byte
char2byte(C語言中是一個位元組)
short2byte
int4byte
float4byte
long8byte
double8byte

接下來逐一介紹,

布爾資料型別(boolean)

在Java中有布爾型別,其回傳值只能是true/false,并且因為Java是強型別語言,所以和C語言不同,不存在0表示假,非0表示真這種說法,

所以下面這種寫法就是堅決錯誤的,

public class DataType {

    public static void main(String[] args) {

        while (1) //錯誤寫法
        {
            System.out.println(1);
        }

    }

 }

這種寫法編譯器會給報錯,

報錯資訊
報錯資訊顯示:int無法轉換為boolean型別,是因為while回圈的判斷運算式必須是布爾型別的運算式,而布爾運算式的回傳值只能是true/false,而不能是1,

就像上面說的,不僅僅是while回圈,類似的,if陳述句的判斷運算式也只能是布爾運算式,

并且,boolean型別是無法與其他型別之間相互轉換的,不論是強制型別轉換還是自動轉換,都無法做到!



位元組資料型別(byte)

在Java中新增了一個byte型別,其大小為1個位元組,可以存放-128~127之間及其所對Unicode碼字符的資料,

如果所存放的資料超過其范圍,將會發生報錯,如:

public class DataType {

    public static void main(String[] args) {

        byte a = 128;
        System.out.println(a);

    }

}

報錯資訊

因為編譯器認為128超過了byte的取值范圍,所以認為他是int型別的資料,而Java是強型別語言,就直接報錯了,如果是C語言這樣的弱型別語言可能只會給個警告哦~

注意:

很多初學者會將位元組型別和字符型別混為一談,他們二者沒有任何聯系哦~只是簡單的將一個位元組大小內的資料型別叫做位元組型別而已 ~ ~


字符資料型別(char)

在Java中的字符資料型別區別于C語言中的字符型別,在C語言中的字符型別只占1個位元組,類似于Java中的位元組型別,但在Java中的字符型別被擴展為-256~255,也就是**占兩個位元組
**,

并且Java中是支持中文的,例如:

char a = '張';

中文占空間大小為兩個位元組,當然,我們自己寫代碼的時候除非特殊需要的情況,盡量避免這樣賦值,


加一個題外話,在Java中,甚至可以將中文作為變數名!!!

如:

public class DataType {

    public static void main(String[] args) {

        int= 3;
        System.out.println();

    }

 }

運行結果為:

運行結果
當然了,我們是堅決抵制這種"別扭"的編碼風格的,還有很多Java書寫格式,都在阿里巴巴Java開發手冊(嵩山版)中,有興趣的小伙伴可以去看一看,該書目前沒有紙質版,只有電子書,如果找不到資源可以私聊博主拿書~


回歸正題,char型別賦值的數字將會被轉換為字符,我們在學習C語言的時候知道,是按照ASCII碼對應,但Java中不是ASCII碼,而是將其進行擴展,擴展到255個數字對應字符,稱為,Unicode碼,


短整型資料型別(short)

短整型資料型別同樣也是占2個位元組,其存取范圍為:-32768~32767,但這個資料型別并不常用,其范圍較小,可能造成越界等等問題,所以一般情況下我們選擇使用int資料型別,

簡單舉個小例子演示一下短整型的用法,

public class DataType {

    public static void main(String[] args) {

        short a = 10;
        System.out.println(a);

    }

} 

運行結果

整形資料型別(int)

int型資料型別,也就是整型資料型別,是我們寫代碼中最常見的一種資料型別,

但在這里需要著重講一下,到底什么叫做Java是強型別語言,

我們知道,在C語言中,某些編譯器底下會認為,32位平臺機器下的int型別是占兩個位元組的,而64位平臺機器下int型別是占4個位元組的,

而Java作為強型別語言,就不存在這種模棱兩可的情況,不管是在多少位的平臺下,int型別永遠都是4個位元組,

而4個位元組的范圍是:-231 -> 231-1,也就是大概 -21億~21億,

這個范圍足夠大,所以我們定義整型變數時大多使用int型別,

如果有小伙伴不放心博主說的范圍,可以通過代碼的方式在編譯器下確認:

System.out.println(Integer.MAX_VALUE); //int型別的最大值
System.out.println(Integer.MIN_VALUE); //int型別的最小值

這兩行代碼可以分別列印出int型別的最大值和最小值,

運行結果

這里的Integer是int型別的包裝類,所有的基本資料型別都有自己的包裝類,在包裝類中存在很多屬于他們自己的一些方法,可以通過上面代碼的形式進行呼叫,


單精度浮點型資料型別(float)

單精度浮點型變數 - float

占4個位元組大小,具體數值范圍可參考int型別資料變數,

基本用法:

public class DataType {

    public static void main(String[] args) {

        float f = 4.5f;
        System.out.println(f);

    }

}  

運行結果
這里要注意,4.5后面需要跟一個f,因為編譯器會默認4.5屬于雙精度型別(double),而4.5f表示我明確規定這個數是屬于單精度浮點型的,

如果不加上這個f,編譯器則會直接報錯,因為認為我們將一個雙精度資料存放進一個單精度變數中,這是非法的~

示例:

public class DataType {

    public static void main(String[] args) {

        float f = 4.5;
        System.out.println(f);

    }
    
}  

報錯結果:
在這里插入圖片描述
這里提示我們將double型別轉換位float型別,屬于非法操作~如果是C語言,則只會提出警告,但Java是強型別語言,所以編譯器會直接報錯 ~ ~

單精度浮點型資料的存取規則符合IEEE標準,詳細可以看博主之前的博文:【資料型別存盤原理】資料的存盤 - 深度剖析資料在記憶體中的存盤

在本文中博主詳細整理了資料存盤的有關知識,


長整型資料型別(long)

在生活中,總存在一些我們希望特別大的數值,比如薪水哈哈哈哈,那當然是多多益善,那如果這個值太大,超過了int型別怎么辦?

所以Java中還有一種資料型別叫做長整型資料型別,所占空間大小位8個位元組,這里需要再次強調,Java是強型別語言,所以不存在32位機器long型別占4個位元組,64位機器占8個位元組的說法,不論在多少位平臺機器下,long型別資料永遠都是占8個位元組,

long型別用法:

public class DataType {

    public static void main(String[] args) {

        long a = 10L;
        System.out.println(a);

    }

} 

運行結果
這里的L并不是跟上文中的float型別中的f一樣非加不可的,可以省略,但最好還是加上,以示區分~~

那么在Java的long型別下,我們的薪水上限到底是多少呢~

下面通過編譯器幫我們計算一下,

public class DataType {

    public static void main(String[] args) {

        System.out.println(Long.MAX_VALUE);
        System.out.println(Long.MIN_VALUE);

    }

}  

運行結果
我們可以看到這個數字大概也就是是9百多萬萬億,估計是夠我們用的了~~


雙精度浮點型資料型別(double)

double型別同樣是不論在多少位的平臺下,都是8個位元組,這里展示一下8個位元組的大小~

public class DataType {

    public static void main(String[] args) {

        System.out.println(Double.MAX_VALUE);
        System.out.println(Double.MIN_VALUE);

    }

} 

運行結果
這里介紹兩個初學者難以理解的代碼:

  1. 代碼一:
public class DataType {

    public static void main(String[] args) {

        int a = 1;
        int b = 2;
        System.out.println(a/b);

        double c = 1.0;
        double d = 2.0;
        System.out.println(c/d);

    }

}  

運行結果:
在這里插入圖片描述
可以看到,第一個結果是0,那么它為什么不是0.5呢?

原因是用int型別進行計算,得到的結果也只能是int型別的,所以小數點后面的位直接被舍去了~(不是四舍五入哦 ~)

  1. 代碼二:
public class DataType {

    public static void main(String[] args) {

        double n = 1.1;
        System.out.println(n*n);

    }

}  

運行結果:

運行結果
可以看到,運行結果最后出現了個2,這并不是我們預期的結果,是這個程式出bug了嘛?

答案是否定的,因為Java規定了雙精度浮點型只能精確到小數點后15位,所以小數點后15位之后的資料,并不能保證其準確性,


以上就是有關于Java當中8中基本資料型別的詳解~

如果有什么問題歡迎評論區留言或者私聊博主嗷~~


💕字串型別,

我們知道在C語言中是沒有字串型別的,但在Java中有,它不屬于8大基本資料型別之一,其實它是屬于參考型別(存盤地址的型別被稱為參考型別),

其實我們在main函式中就可以看的出來,

public static void main(String[] args) {

}

main函式的引數中就有一個字串型別的字符陣列,其陣列名位args,這里可以看到,Java中對陣列的命名習慣和C語言不同,

C語言中習慣先寫陣列名,后寫中括號,而Java中正好相反,先寫中括號,再寫陣列名,

陣列相關的知識博主將會在本專欄后期給大家專門出一期博文分享~

🔨轉義字符

在Java中常用到的轉義字符不多,列出以下幾個:

轉義字符釋義
\n換行
\t制表符
將其轉義為普通的字符單引號
"將其轉義為普通的字符雙引號
\將其轉義為普通的字符斜杠

轉移字符只需記住其用法即可,

給出以下幾個例子:

  1. 列印出:‘hello’
  2. 列印出:"“hello”"
  3. 列印出:“hello”
public class DataType {

    public static void main(String[] args) {

        System.out.println("\'hello\'");
        System.out.println("\"\"hello\"\"");
        System.out.println("\\\"hello\\\"");

    }

}  

運行結果:

運行結果


🍚型別轉換

Java中的型別轉換分為兩種:

  1. 算數型別轉換(又被稱為數值提升)
  2. 強制型別轉換

在了解這兩種型別轉換之前,應該先明白為什么要有型別轉換,

🤢為什么要有型別轉換

我們知道,Java是一門強型別的語言,所以絕不允許在資料型別上出現差池,

例如:

int a = 3;
float f = 3.14;

a = f; // 將單精度浮點型資料存放進整型變數a中

這種做法在Java當中是絕對不會允許的,但有的時候我們又不得不將某一些資料存放到不同的資料型別中,于是就出現了型別轉換的概念,

總結一下: 出現資料型別轉換的原因是為了防止將高精度資料存放進低精度變數時發生精度丟失,而如果將低精度的資料存放進高精度變數中則可以正常運行,

如:

public class DataType {

    public static void main(String[] args) {

        int i = 3;
        long l = 0;
        l = i;
        System.out.println(l);

    }

}  

運行結果
這里并沒有發生報錯,可見,出現型別轉換的原因就是為了防止高精度資料存盤進低精度變數時發生精度丟失,


🦝算數型別轉換(數值提升)

算數型別轉換,顧名思義,就是在計算中自動進行的型別轉換,比如:

public class DataType {

    public static void main(String[] args) {

        int a = 10;
        double d = 3.14;
        System.out.println(a + d);

    }

}   

運行結果

這就是算數型別轉換,

進行算數型別轉換的原因其實是為了提高運算效率,一般都是低精度型別轉為高精度型別,整型資料轉為浮點型資料型別,


🥛強制型別轉換

強制型別轉換是指我們將某一些不屬于這個資料型別的資料,強行轉換為該型別的資料,然后進行存盤,

比如:

int a = (int)3.14;

但是注意,強制型別轉換雖然好用,但它會造成一定程度上的精度丟失,比如這里的變數a,它其實存盤的只是3,小數點后面的資料將會發生截斷丟失,

public class DataType {

    public static void main(String[] args) {

        int a = (int)3.14;
        System.out.println(a);

    }

}   

運行結果

但是注意一點,布爾型別(boolean)是不能和其他型別進行計算的,哪怕經過強制轉換也不可以,因為布爾型別屬于邏輯的真偽,而其他型別屬于算數運算,怎么能把邏輯針灸啊和算數運算放在一起計算呢?

而且對于邏輯真偽自己本身來說,也是無法進行計算的,

比如:

public class DataType {

    public static void main(String[] args) {

        boolean a = true;
        boolean b = false;
        System.out.println(a+b);

    }

}   

運行結果:

報錯資訊

這里給出報錯,說+這個運算子的運算元不對,因為+屬于算數運算子,只能對算數型別的資料進行運算,而布爾型別只能通過邏輯運算子進行計算,其結果仍然是邏輯真和邏輯假,

本文并不是主要將運算子的文章,博主預計過兩天在本專欄內補上運算子的文章,有需要的小伙伴可以關注一波該專欄哦~專欄更新新文不錯過 ~


🏆整型和字串型別之間的小故事

整型和字串型別其實是兩個八竿子打不到一塊兒去的兩個不同的型別,但他們之中可以產生兩個有意思的東西,

  1. 進行相互轉換
  2. 進行拼接

🎨整型和字串型別的相互轉換

在Java中,整型資料和字串型別資料的轉換是很容易實作的,只需要在各自的類中呼叫valueOf方法,即可轉換其資料型別,
(int沒有類,但它有包裝類Integer)

如:

  1. 整型轉換為字串型別
public class DataType {

    public static void main(String[] args) {

        int num = 10;
        String str = String.valueOf(num);

        System.out.println(str);

    }

}  

運行結果:
運行結果
這里將整型的資料通過valueOf方法轉換為了字串型別并存放在了變數str中,完成了整型到字串型別的轉換,

  1. 字串型別轉換為整型
public class DataType {

    public static void main(String[] args) {

        String str = "10";
        int a = Integer.valueOf(str);

        System.out.println(a);

    }

}  

運行結果:
運行結果
這里字串型別變數str中存放的是一個常量字串10,而用包裝類Interger中的valueOf方法將其轉換為了整型資料,這就完成了字串型別到整型資料的轉換,


😑整型和字串型別的拼接

在字串中,"+"號表示字串的拼接,例如:

public class DataType {

    public static void main(String[] args) {

        System.out.println("abc"+"def");

    }

}   

運行結果:
運行結果
這就通過"+"完成了字串的拼接,

而字串也可以和整數完成拼接:

public class DataType {

    public static void main(String[] args) {

        int a = 10;
        int b = 20;

        System.out.println("a = "+a+","+"b = "+b);

    }

}   

運行結果:

運行結果
這就完成了整數型別和字串型別的拼接,

當然,也可以通過不適用整型變數的形式完成拼接,

如下:

public class DataType {

    public static void main(String[] args) {

        int a = 10;
        int b = 20;

        System.out.println("a = "+10+","+"b = "+20);

    }

}   

運行結果:

運行結果

以上兩點就是整型和字串型別之間撞出的小火花啦~


🐱?🏍總結

本文的知識點偏基礎,但要著重區分Java中資料型別和C語言中的差別,不能混淆,

而本文的重點在于理解Java是一門強型別的計算機語言,允許低精度資料存放在高精度變數中,但絕不允許高精度資料存放在低精度資料中 ,為了避免報錯,可以使用強制型別轉換的方法,但要知道強制型別轉換大概率會發生精度的丟失,

以上就是本文的全部內容,希望可以對大家有幫助,

最后期待一波各位的小手指動一動~給個三連走一波吧 ~ ~

👍點贊👍 + 👀關注👀 + ??收藏??

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/319711.html

標籤:java

上一篇:LeetCode 91. 解碼方法【c++/java詳細題解】

下一篇:學了這么久的多執行緒,你知道synchronized到底是怎么作業的嗎

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • Rust中的智能指標:Box<T> Rc<T> Arc<T> Cell<T> RefCell<T> Weak

    Rust中的智能指標是什么 智能指標(smart pointers)是一類資料結構,是擁有資料所有權和額外功能的指標。是指標的進一步發展 指標(pointer)是一個包含記憶體地址的變數的通用概念。這個地址參考,或 ” 指向”(points at)一些其 他資料 。參考以 & 符號為標志并借用了他們所 ......

    uj5u.com 2023-04-20 07:24:10 more
  • Java的值傳遞和參考傳遞

    值傳遞不會改變本身,參考傳遞(如果傳遞的值需要實體化到堆里)如果發生修改了會改變本身。 1.基本資料型別都是值傳遞 package com.example.basic; public class Test { public static void main(String[] args) { int ......

    uj5u.com 2023-04-20 07:24:04 more
  • [2]SpinalHDL教程——Scala簡單入門

    第一個 Scala 程式 shell里面輸入 $ scala scala> 1 + 1 res0: Int = 2 scala> println("Hello World!") Hello World! 檔案形式 object HelloWorld { /* 這是我的第一個 Scala 程式 * 以 ......

    uj5u.com 2023-04-20 07:23:58 more
  • 理解函式指標和回呼函式

    理解 函式指標 指向函式的指標。比如: 理解函式指標的偽代碼 void (*p)(int type, char *data); // 定義一個函式指標p void func(int type, char *data); // 宣告一個函式func p = func; // 將指標p指向函式func ......

    uj5u.com 2023-04-20 07:23:52 more
  • Django筆記二十五之資料庫函式之日期函式

    本文首發于公眾號:Hunter后端 原文鏈接:Django筆記二十五之資料庫函式之日期函式 日期函式主要介紹兩個大類,Extract() 和 Trunc() Extract() 函式作用是提取日期,比如我們可以提取一個日期欄位的年份,月份,日等資料 Trunc() 的作用則是截取,比如 2022-0 ......

    uj5u.com 2023-04-20 07:23:45 more
  • 一天吃透JVM面試八股文

    什么是JVM? JVM,全稱Java Virtual Machine(Java虛擬機),是通過在實際的計算機上仿真模擬各種計算機功能來實作的。由一套位元組碼指令集、一組暫存器、一個堆疊、一個垃圾回收堆和一個存盤方法域等組成。JVM屏蔽了與作業系統平臺相關的資訊,使得Java程式只需要生成在Java虛擬機 ......

    uj5u.com 2023-04-20 07:23:31 more
  • 使用Java接入小程式訂閱訊息!

    更新完微信服務號的模板訊息之后,我又趕緊把微信小程式的訂閱訊息給實作了!之前我一直以為微信小程式也是要企業才能申請,沒想到小程式個人就能申請。 訊息推送平臺🔥推送下發【郵件】【短信】【微信服務號】【微信小程式】【企業微信】【釘釘】等訊息型別。 https://gitee.com/zhongfuch ......

    uj5u.com 2023-04-20 07:22:59 more
  • java -- 緩沖流、轉換流、序列化流

    緩沖流 緩沖流, 也叫高效流, 按照資料型別分類: 位元組緩沖流:BufferedInputStream,BufferedOutputStream 字符緩沖流:BufferedReader,BufferedWriter 緩沖流的基本原理,是在創建流物件時,會創建一個內置的默認大小的緩沖區陣列,通過緩沖 ......

    uj5u.com 2023-04-20 07:22:49 more
  • Java-SpringBoot-Range請求頭設定實作視頻分段傳輸

    老實說,人太懶了,現在基本都不喜歡寫筆記了,但是網上有關Range請求頭的文章都太水了 下面是抄的一段StackOverflow的代碼...自己大修改過的,寫的注釋挺全的,應該直接看得懂,就不解釋了 寫的不好...只是希望能給視頻網站開發的新手一點點幫助吧. 業務場景:視頻分段傳輸、視頻多段傳輸(理 ......

    uj5u.com 2023-04-20 07:22:42 more
  • Windows 10開發教程_編程入門自學教程_菜鳥教程-免費教程分享

    教程簡介 Windows 10開發入門教程 - 從簡單的步驟了解Windows 10開發,從基本到高級概念,包括簡介,UWP,第一個應用程式,商店,XAML控制元件,資料系結,XAML性能,自適應設計,自適應UI,自適應代碼,檔案管理,SQLite資料庫,應用程式到應用程式通信,應用程式本地化,應用程式 ......

    uj5u.com 2023-04-20 07:22:35 more