大樓的基石 資料型別 變數與常量
java零基礎入門-核心語法篇(四) 資料型別,變數與常量
從本章開始,我們要開始最激動人心的學習啦,敲程式碼,沒有準備好的同學快去看以前的教程(老規矩 從HelloWorld開始吧),把環境搭好,老司機要開車咯~滴~滴滴~
說變數之前,我們先來看看刀...有同學肯定會問,整這些沒關係的幹啥,快上乾貨!別急別急,請聽我慢慢道來。
作為一個吃貨,我深深的瞭解到 做菜 與 做料理 之間的區別,做菜就是做的能吃,好吃就夠了,僅僅為了解決飢餓的問題而存在。而料理卻有所不同,他是一種帶有匠人精神的做菜,想要做出高階的料理,工具必不可少。比如我心心念念,至今沒有吃過的河豚刺身,切出來的效果就是晶瑩剔透,薄如蟬翼,所以必須用專門的刀具去處理。還有專門切三文魚的,專門切肉的,各種刀都有自己獨特的使用場景。
除了做菜的刀,我們來看看下面這種工具刀。
工具刀功能強大,他可以適應我們的各種需求,如果我需要製作一個手工藝品,可能一把這樣的工具刀就搞定了,非常的方便。
其實我們的程式設計思想,和現實中很多事物都很像,他們在設計上,都有共通的地方。所以從現在開始,同學們要鍛鍊自己的思維能力,這個對你後面接受程式設計的思維大有裨益。
資料型別
1.強型別和弱型別
2.佔用空間
強型別和弱型別
JAVA就是強型別語言,一個有強迫症的患者,切三文魚必須用三文魚的刀,切河豚就必須用河豚刀,換過來用直接報錯。這就是強型別語言。弱型別語言就像工具刀,啥都可以幹,不管是切東西,還是鋸東西樣樣在行,我不關心變數型別,告訴我你要定義變數就夠了。這樣解釋各位清楚嗎?看看我們上面刀的分類,再看看資料型別的分類,是不是有點像?不同的資料用不同的資料型別來處理。(其實在最新的JAVA 10中,我們看到JAVA已經將他的強迫症改掉了,可以用弱型別了,這個有興趣可以去看看)
佔用空間
我們小學的時候,老師就教過,1+1=2,後來慢慢的又學習了小數,比如買菜的時候,會有3.2元,4.5元的情況,但是我們從來沒有考慮過數字的型別。那麼我們寫程式碼為啥要整個資料型別出來呢。這個就跟記憶體空間有關了。記憶體是啥?不知道的趕緊去複習(想入行軟體 你必須先了解這些硬體)。因為有的資料存起來,需要大一點的空間,有的只需要很小的空間,計算機是個傻子,你不告訴它你要多大的空間,他不會存,甚至亂存。所以我們必須告訴他,這個資料,你給我用X個空間存起來!我在每個型別後面都有標註,他們佔多大的空間。
啥?聽不懂?看上面這個圖,指頭大的東西給了這個大個箱子裝,不是浪費麼?記憶體也一樣,記憶體空間是有限,必須節約使用,如果所有的型別都一樣大,你還沒裝多少東西,記憶體就滿了。
肯定有同學問了,位元組是個啥玩意?記憶體的空間現在都是按照G來算,那位元組和G是個啥關係?看一下換算關係。
1 Byte = 8 Bits 翻譯=> 1 位元組 = 8 位
1 KB = 1024 Bytes 1 KB = 1024 位元組
1 MB = 1024 KB 1 兆 = 1024 KB
1 GB = 1024 MB 1 G = 1024 兆
我們來看看上面的整數型別,整數型別分為了4種,byte,short,int,long
整數也分了4種?為啥?我們看看他們的取值範圍就知道了
我們看到每種型別可以使用的取值範圍是不一樣的,byte佔8位,所以他的取值範圍最小,long佔64位,他的取值範圍最大,空間越大裝的資料就越大,假設我們只有一種型別,我們存資料都要使用空間最大的型別,就會浪費記憶體空間。下面我們來看程式碼。
我這裡設定的值全部是大於範圍上限,同學們可以自己照著寫一遍,然後把值改成超出取值下限,看看是不是會報錯。眼神好的同學可能發現最後一行,long d = 8999999999999999999L;為什麼後面有一個L?因為不寫L,會把這個數當成int,這樣就會報錯,超出取值範圍,加一個L,告訴他我這個是long型別,我給了64位空間了,就不會報錯了。
下面來說說各種型別的使用場景。
byte:一般用於處理IO流用的比較多,這個後面會有詳細講述。
short:其實這個在實際應用中,用的比較少,知道即可。
int:使用最多的型別,因為我們常規生活中,接觸的到的數字都不會超過它的範圍。比如我們計算一個商品的庫存量,一輛車上的人數等,這個使用int完全沒有問題。但是有些資料,我們一定要想清楚場景,因為int的上限是20億,有些資料是完全可以超過他的,如果用int型別就會產生錯誤,比如說淘寶幾年來的訂單數量,超過20億很輕鬆,再就是一個伺服器叢集的日誌數量,每天上十億都有可能,存幾個月就千億了,用int計算數量,覺對完蛋。所以我們就需要用long來計算。
long:用於計算超出常規的資料量,比如我們上面說的淘寶訂單數量,日誌數量等。
我們繼續看浮點型別
浮點型就是我們常說的小數,就是帶有小數點的數,如果不帶小數點,傻子計算機會認為是整數型別。再就是一個精度問題,精度就是可以表示小數點後多少位,double 的精度要比 float 的高,具體我們往下看。
啊!!!這個取值範圍是什麼鬼,這個是科學記數法,看不懂沒關係,我們看下面的例子就知道了。
我們如果處理2,3位小數使用float沒有問題,但是如果需要精確到5,6位甚至更多,請使用double型別。
在我們的日常工作中,大多情況是會規定保留2位小數的,比如處理與錢有關的業務,所以會有一套專門的方法來處理,這裡只需要瞭解2種浮點型別的特徵即可。
字元型別
每個國家都有不同的語言和不同的符號,都可以使用unicode編碼來表示,每個符號都有對應的編碼。(瞭解即可)
char: 佔16位 空間,用單引號表示。
字元型別瞭解即可,實際運用不多。
布林型別 boolean
布林型別很簡單,只有true 和 false 兩種取值,但是他的作用是非常大的,我們後面會經常與他打交道的。
變數和常量
變數
其實我們上面已經使用了很多變數了,因為沒有變數,我一句程式碼都寫不出來...變數是非常重要的知識點,我們來看看
其實我開始的時候犯了一個很大的錯誤,就是使用a,b,c來作為變數名稱,這是絕對不允許的,請使用有意義的名字。再就是駝峰命名,如果你的變數使用多個單片語成,第一個單詞第一個字母請小寫,後面每一個單詞開頭請大寫,這樣方便閱讀。我們來比較下,floatTest1 和 floattest1 有沒有覺得駝峰命名可以很快的一眼就認出單詞,而後一種需要花時間去看,降低編碼效率。
再來體驗下 filterRegistrationBean 如果不用駝峰 filterregistrationbean 是不是感覺要瞎了,實際工作中比這長的命名比比皆是,養成好的習慣很重要。
變數值不能重複,我在變數最後面寫了 1,2,3這樣的數字,就是為了防止重複的變數名稱。
java中的關鍵字不可以用來命名變數,比如 int int = 5 int是關鍵字,只能用於標識變數型別 ,不能用來作為變數名稱。
上面的圖就是我們宣告變數的方法,首先確定型別,然後起名字,最後通過 = 號來給變數一個值。
常量
變數是可以變的,我可以將任何型別允許的值賦值給變數。常量就是不變的,不可隨意更改的。
比如我們的系統要使用年,月,日這樣的概念,我們可以將他們定義為常量
我們用 final 來修飾常量,因為我們的系統可能會很複雜,我們需要定義一些不可變的量,但是萬一不小心將常量改了,會導致嚴重的問題。比如 你發工資發13個月?每週上班8天?能忍麼?
本文出現的程式碼,請照著多敲幾遍,然後改一下上下限,精度等,體會一下取值範圍的作用,對的改錯,錯的改對,瞭解為什麼錯,為什麼對,這樣你才能進步。
學習程式碼一定要動手!一定要動手!一定要動手!不動手就是沒學,切記。
相關文章
- C語言-變數常量資料型別C語言變數資料型別
- 逍遙自在學C語言 | 變數、常量與資料型別C語言變數資料型別
- Java第三天【變數、常量、資料型別】Java變數資料型別
- 二、變數與資料型別變數資料型別
- 分析 JavaScript 的資料型別與變數JavaScript資料型別變數
- TypeScript入門1:註釋、變數常量、資料型別、函式TypeScript變數資料型別函式
- 從零開始學GO ---- (1) 變數、常量、基本資料型別Go變數資料型別
- 《Java核心技術 卷I》學習筆記2:資料型別、變數與常量Java筆記資料型別變數
- 資料型別,變數資料型別變數
- JavaScript變數與資料型別詳解JavaScript變數資料型別
- Go變數與基礎資料型別Go變數資料型別
- 【Tensorflow_DL_Note4】Tensorflow中的常量、變數和資料型別的結構變數資料型別
- 常量與變數變數
- SSIS 資料型別 第二篇:變數的資料型別資料型別變數
- 變數以及八大資料型別介紹變數大資料資料型別
- 可變資料型別(mutable)與不可變資料型別(immutable)總結資料型別
- 六、常量與變數變數
- pycharm的基本使用 、 Python的註釋語法,變數,常量,垃圾回收機制,資料型別PyCharmPython變數資料型別
- python—資料型別和變數Python資料型別變數
- 強型別語言變數和資料型別的理解變數資料型別
- Python 3 快速入門 1 —— 資料型別與變數Python資料型別變數
- Java檢視變數資料型別Java變數資料型別
- js基本語法之 值型別(資料型別)(變數型別)JS資料型別變數
- 第八章:變數、常量和基礎型別變數型別
- python進階(一)變數與資料型別、python之禪Python變數資料型別
- Solidity-變數和資料型別[複合型別_1]Solid變數資料型別
- java基礎語法--註釋、識別符號、關鍵字、資料型別、型別轉換、變數、常量、作用域、運算子Java符號資料型別變數
- 1、變數和簡單資料型別變數資料型別
- python:變數和簡單資料型別Python變數資料型別
- JAVA-識別符號、變數、資料型別Java符號變數資料型別
- PHP變數與常量學習PHP變數
- JavaScript中的變數、資料型別以及運算子JavaScript變數資料型別
- 二,Java中常量與變數的理解Java變數
- php變數的型別是如何轉換的?常量如何定義?系統常量是如何定義的?PHP變數型別
- Flutter學習筆記(3)--Dart變數與基本資料型別Flutter筆記Dart變數資料型別
- 【R語言入門】R語言中的變數與基本資料型別R語言變數資料型別
- Python基礎(一)可變與不可變資料型別Python資料型別
- Java雜記1—資料型別和變數Java資料型別變數