今天老何與大家分享Java中的數(shù)據(jù)類(lèi)型,從一個(gè)大家相對(duì)感興趣的話題聊起吧,隨著智能手機(jī)與網(wǎng)絡(luò)的普及,大家都辦理了流量套餐,每到月底大家也非常關(guān)心有沒(méi)有流量了?費(fèi)用是如何被扣掉的?
??好,讓我們帶著問(wèn)題了解2個(gè)概念。
1、數(shù)據(jù)
數(shù)據(jù)是信息的表現(xiàn)形式和載體,可以是符號(hào)、文字、數(shù)字、圖像、語(yǔ)音、視頻等。
??手機(jī)/電腦上安裝的軟件,Word文檔、PPT文檔,短信、微信,圖片、視頻等等都是數(shù)據(jù)。
??之所以我們使用手機(jī)會(huì)有流量費(fèi)用,是因?yàn)榘l(fā)送和接收了數(shù)據(jù)(如在線聽(tīng)歌、發(fā)送微信、查看朋友圈,這些都是走數(shù)據(jù)流量的,如同用水電一樣),運(yùn)營(yíng)商是計(jì)費(fèi)的,比如聯(lián)通(0.0003元/kb),這里提到數(shù)據(jù)單位kb,來(lái)接著看第二個(gè)概念。
2、數(shù)據(jù)單位
數(shù)據(jù)是有單位的(如尺寸有單位米,厘米、毫米等,它們之間有換算關(guān)系,1米=100厘米,1厘米=10毫米),從小到大依次是比特(Bit)、字節(jié)(Byte)、千字節(jié)(KB)、兆字節(jié)(MB)、吉字節(jié)(GB)、太字節(jié)(TB)......它們之間的換算關(guān)系為:
1B=8bit
1 KB = 1024 B
1 MB = 1024 KB
1 GB = 1024 MB
1 TB = 1024 GB
......
> 比特(Bit):比特是計(jì)算機(jī)中存儲(chǔ)數(shù)據(jù)的最小單位,指二進(jìn)制數(shù)中的一個(gè)位數(shù),其值為“0”或“1”。
> 字節(jié)(Byte):字節(jié)是計(jì)算機(jī)存儲(chǔ)容量的基本單位,一個(gè)字節(jié)由8位二進(jìn)制數(shù)組成,如10011000,在計(jì)算機(jī)內(nèi)部,一個(gè)字節(jié)可以表示一個(gè)數(shù)據(jù),也可以表示一個(gè)英文字母,兩個(gè)字節(jié)可以表示一個(gè)漢字。
> 其他KB,MB、GB、TB......每一個(gè)級(jí)別都是前面的乘以1024。
了解完上面概念后,再回答我們前面的問(wèn)題,如果你通過(guò)手機(jī)在線看一個(gè)視頻,為100M(現(xiàn)在文件都很大,M即MB,按照聯(lián)通費(fèi)用標(biāo)準(zhǔn)需換算成KB),那么花費(fèi)=100Mx1024x0.0003元/KB≈30元,自我感覺(jué)hei不hei:),獨(dú)此三家,別無(wú)選擇。
??OK,進(jìn)入我們的今天主題“數(shù)據(jù)類(lèi)型”
3、數(shù)據(jù)類(lèi)型
數(shù)據(jù)除了有單位,也是有類(lèi)型的,數(shù)據(jù)類(lèi)型是對(duì)數(shù)據(jù)的分類(lèi),每種數(shù)據(jù)類(lèi)型都具有獨(dú)特的特征、不同的分配空間(最大位數(shù)/字節(jié)數(shù)不同)與相應(yīng)的操作功能(舉個(gè)例子:房子有別墅、住宅、辦公樓等分類(lèi),產(chǎn)權(quán)不一,大小不一,功能不一,但都是房子)

??Java中分成兩種數(shù)據(jù)類(lèi)型,一是基本數(shù)據(jù)類(lèi)型,二是引用數(shù)據(jù)類(lèi)型(兩者區(qū)別在內(nèi)存分配和地址指向的不同,可先大致了解,如詳細(xì)了解可@老何)
一、基本數(shù)據(jù)類(lèi)型
/*
1、整數(shù)類(lèi)型:byte、short、int、long
用來(lái)表示一個(gè)整數(shù)
byte字節(jié)型、short短整型、int 整型、long 長(zhǎng)整型
*/
/*
(1)、byte字節(jié)型:占1個(gè)字節(jié)(8位)
取值范圍:-128~127(-2^7~2^7-1)
默認(rèn)值:0
*/
byte b = 50;
System.out.println("byte b的值為:"+b);
/*
(2)、int 整型:占4個(gè)字節(jié)(32位)
整型的默認(rèn)值為int
取值范圍:-2,147,483,648~2,147,483,647(-2^31~2^31-1)
默認(rèn)值:0
*/
int i = 18000;
System.out.println("int i的值為:"+i);
/*
(3)、short短整型:占2個(gè)字節(jié)(16位)
取值范圍:-32768~32767(-2^15~2^15-1)
默認(rèn)值:0
*/
short si = 1800;
System.out.println("short si的值為:"+si);
/*
(4)、long 長(zhǎng)整型 :占8個(gè)字節(jié)(64位)
取值范圍:-9,223,372,036,854,775,808~9,223,372,036,854,775,807(-2^63~2^63-1)
默認(rèn)值0L,后面有一個(gè)L或l
*/
long li = 180000l;
System.out.println("long li的值為:"+li);
/*
2、浮點(diǎn)類(lèi)型:float、double
float單精度浮點(diǎn)類(lèi)型、double雙精度浮點(diǎn)類(lèi)型
Java用浮點(diǎn)型表示實(shí)數(shù),簡(jiǎn)單的說(shuō)就是帶有小數(shù)的數(shù)據(jù)。
*/
/*
(5)、float 長(zhǎng)單精度浮點(diǎn)類(lèi)型 :占4個(gè)字節(jié)(32位)
默認(rèn)值:0.0f,后面要跟一個(gè)f或F表示
*/
float f = 3.14f;
System.out.println("float f的值為:"+f);
/*
(6)、double 雙精度浮點(diǎn)類(lèi)型 :占8個(gè)字節(jié)(64位)
浮點(diǎn)型的默認(rèn)類(lèi)型
默認(rèn)值:0.0d, 后面要跟一個(gè)d或D表示,浮點(diǎn)數(shù)不添加默認(rèn)代表雙精度
*/
double d = 3.14d;
System.out.println("double d的值為:"+d);
/*
(7)、boolean 類(lèi)型 :
有兩個(gè)值:true、false
用作標(biāo)記或條件判斷
*/
boolean hasChecked = false;
System.out.println("boolean hasChecked的值為:"+hasChecked);
/*
(8)、char 字符類(lèi)型 :占2個(gè)字節(jié)(16位)
存放單個(gè)字符,用單引號(hào)引用起來(lái)
*/
char a = 'a';
System.out.println("char a的值為:"+a);
二、引用數(shù)據(jù)類(lèi)型
??這里先講一個(gè)常用的String類(lèi)型,其他的后續(xù)陸續(xù)講解。
/*
(1)、String 字符串類(lèi)型
char字符型僅表示一個(gè)字符,多個(gè)字符要用String
默認(rèn)值:null
可用+鏈接多個(gè)字符串
*/
String name = "zhangsan";
System.out.println("String name 的值為:"+name);
4、數(shù)據(jù)類(lèi)型轉(zhuǎn)換
不同數(shù)據(jù)類(lèi)型的數(shù)據(jù)是可以轉(zhuǎn)換的,分為自動(dòng)數(shù)據(jù)類(lèi)型轉(zhuǎn)換和強(qiáng)制數(shù)據(jù)類(lèi)型轉(zhuǎn)換
/* 1、自動(dòng)數(shù)據(jù)類(lèi)型轉(zhuǎn)換
按照數(shù)據(jù)類(lèi)型占用存儲(chǔ)不同可以自動(dòng)類(lèi)型轉(zhuǎn)換或強(qiáng)制類(lèi)型轉(zhuǎn)換,總的原則是小存儲(chǔ)容量數(shù)據(jù)類(lèi)型可以自動(dòng)轉(zhuǎn)換成為大存儲(chǔ)容量數(shù)據(jù)類(lèi)型。
不同類(lèi)型數(shù)據(jù)間 按照下面關(guān)系的從左到右(從低到高)自動(dòng)轉(zhuǎn)換:
boolean、char、short int-> int ->long int-> float -> double 。
*/
int height=170;
float fHeight=height;
System.out.println(" int自動(dòng)轉(zhuǎn)換成float的值為:"+fHeight);
/*
2、強(qiáng)制數(shù)據(jù)類(lèi)型轉(zhuǎn)換
如果類(lèi)型轉(zhuǎn)換是右到左情況,就需要強(qiáng)制類(lèi)型轉(zhuǎn)換了,轉(zhuǎn)換方法就是在數(shù)據(jù)前面加上(目標(biāo)類(lèi)型),
但是這種轉(zhuǎn)換是存在風(fēng)險(xiǎn)的,有可能造成數(shù)據(jù)的丟失,需要謹(jǐn)慎進(jìn)行。
*/
double weight=23.56;
int iWeight=(int)weight;
System.out.println("double強(qiáng)制轉(zhuǎn)換成int的值為:"+iWeight);
5、變量與常量
最后補(bǔ)充一些知識(shí),之前我們使用的代碼格式都為
?? int i = 18000;
??這個(gè)是什么呢?實(shí)際上是變量定義
/*
一、變量
1、概念:是Java程序的一個(gè)基本存儲(chǔ)單元,變量是由一個(gè)標(biāo)識(shí)符及一個(gè)可選的初始值組合定義。
定義規(guī)則為:
1:必須以字母、下劃線“_”、或“$”符號(hào)開(kāi)頭
2:可以包括數(shù)字、區(qū)分大小寫(xiě)
3:不能使用Java語(yǔ)言的關(guān)鍵字,例如int、float、public等(更多見(jiàn)附注1Java關(guān)鍵字)
變量的值是可以改變的
2、變量定義格式:
變量數(shù)據(jù)類(lèi)型 變量名;
例如 int age;
*/
//1,先定義變量,再初始化
int score;
score=200;
//2,定義的時(shí)候直接初始化
float heightf=180.6f;
//3,變量值的改變(可多次改變)
double money=1234.56;
money=3456.78;
money=5678.9;
//4,變量值的傳遞(從一個(gè)變量傳遞給另一個(gè)變量)
int age=6;
int ageb=age;
/*
二、常量
常量是變量中的一個(gè)特例,用final關(guān)鍵字修飾,常量的值是不可以修改的
對(duì)常量命名的定義規(guī)則:建議盡量全部大寫(xiě),并用下劃線將詞分開(kāi)
*/
//5,定義常量,常量不能修改,僅能定義時(shí)初始化
final float PI=3.1415f;
// PI=3.14159f;
System.out.println("變量分?jǐn)?shù)值:"+score+"變量身高值:"+heightf+"存款:"+money+"年齡:"+ageb+"常量PI:"+PI);
6、運(yùn)行結(jié)果
保存程序并運(yùn)行,結(jié)果如下:
byte b的值為:50
int i的值為:18000
short si的值為:1800
long li的值為:180000
float f的值為:3.14
double d的值為:3.14
boolean hasChecked的值為:false
char a的值為:a
String name 的值為:zhangsan
int自動(dòng)轉(zhuǎn)換成float的值為:170.0
double強(qiáng)制轉(zhuǎn)換成int的值為:23
變量分?jǐn)?shù)值:200變量身高值:180.6存款:5678.9年齡:6常量PI:3.1415
附注:
1、Java關(guān)鍵字
??Java官方使用的特定標(biāo)識(shí),代表特殊含義,如int,代表整型數(shù)據(jù)類(lèi)型
