全面剖析java 數(shù)據(jù)類型與運算符
java的數(shù)據(jù)類型與運算符
java的變量和類型
變量指的是程序運行是可變的量,其需要開辟內(nèi)存空間用于儲存一些數(shù)據(jù)
而類型是對變量的種類進行劃分,不同的類型有不同的屬性
基本數(shù)據(jù)類型——數(shù)值型
整型
byte
byte 變量名=初始值
byte類型表示一個整形不過只占1個字節(jié);
其數(shù)據(jù)范圍為[-128,127]
public static void main(String[] args) { System.out.println(Byte.MAX_VALUE); System.out.println(Byte.MIN_VALUE); }
short
***short 變量名 = 初始值 ***
short表示變量的類型是一個整型
short的取值范圍[-32768,32767]
public static void main(String[] args) { System.out.println(Short.MIN_VALUE); System.out.println(Short.MAX_VALUE); }
int
語法:
***int 變量名 = 初始值 ***
int 表示變量的類型是一個整型
Java中,int類型占4個字節(jié)(每個字節(jié)占8個比特位)
其數(shù)據(jù)范圍是 -2^31 -> 2^31-1 , 也就大概是 -21億 到 +21億
public static void main(String[] args) { System.out.println(Integer.MAX_VALUE); System.out.println(Integer.MIN_VALUE); }
如果運算結(jié)果超過其數(shù)據(jù)范圍,就會出現(xiàn)溢出情況
public static void main(String[] args) { System.out.println(Integer.MAX_VALUE+1); System.out.println(Integer.MIN_VALUE-1); }
21億這樣的數(shù)字對于當前的大數(shù)據(jù)時代來說, 是很容易超出的. 針對這種情況, 我們就需要使用更大范圍的數(shù)據(jù)類型來表示,因此 Java 中提供了 long 類型.
long
語法:
***long 變量名 = 初始值 ***
long 占8個字節(jié)其數(shù)據(jù)范圍 [-2^63 ,2^63-1]
public static void main(String[] args) { long a=10l; System.out.println(a); }
public static void main(String[] args) { System.out.println(Long.MAX_VALUE); System.out.println(Long.MIN_VALUE); }
注意:
基本語法格式和創(chuàng)建 int 變量基本一致, 只是把類型修改成 long初始化設(shè)定的值為 10L , 表示一個長整型的數(shù)字. 10l 也可以.使用 10 初始化也可以, 10 的類型是 int, 10L 的類型是 long, 使用 10 L 或者 10 l 更好一些.
浮點型
double
語法:
double 變量名 = 初始值
public static void main(String[] args) { double num = 1.0; System.out.println(num); }
注意:
在 Java 中, int 除以 int 的值仍然是 int(會直接舍棄小數(shù)部分).
public static void main(String[] args) { int a = 1; int b = 2; System.out.println(a / b); }
Java 中的 double 雖然也是 8 個字節(jié), 但是浮點數(shù)的內(nèi)存布局和整數(shù)差別很大, 不能單純的用 2 ^ n 的形式表示數(shù)據(jù)范
圍.
Java 的 double 類型的內(nèi)存布局遵守 IEEE 754 標準(和C語言一樣), 嘗試使用有限的內(nèi)存空間表示可能無限的小數(shù), 勢
必會存在一定的精度誤差.
public static void main(String[] args) { double num = 1.1; System.out.println(num * num); }
float
語法:
float 變量名 = 初始值
public static void main(String[] args) { float num = 1.0F; System.out.println(num); }
float 類型在 Java 中占四個字節(jié), 同樣遵守 IEEE 754 標準. 由于表示的數(shù)據(jù)精度范圍較小, 一般在工程上用到浮點數(shù)都
優(yōu)先考慮 double, 不太推薦使用 float.
字符型
char
char 變量名 = 初始值
public static void main(String[] args){ char ch='呵'; System.out.println(ch); }
注意:
Java 中使用 單引號 + 單個字母 的形式表示字符字面值.計算機中的字符本質(zhì)上是一個整數(shù). 在 C 語言中使用 ASCII 表示字符, 而 Java 中使用 Unicode 表示字符. 因此一個字符占用兩個字節(jié), 表示的字符種類更多, 包括中文.
布爾型
boolean
boolean 變量名 = 初始值
public static void main(String[] args) { boolean bool=false; System.out.println(bool); }
注意:
- boolean 類型的變量只有兩種取值, true 表示真, false 表示假.
- Java 的 boolean 類型和 int 不能相互轉(zhuǎn)換, 不存在 1 表示 true, 0 表示 false 這樣的用法.
- boolean 類型有些 JVM 的實現(xiàn)是占 1 個字節(jié), 有些是占 1 個比特位, 這個沒有明確規(guī)定.
運算符
運算符:|
*** 如果兩個二進制位都是 0, 則結(jié)果為 0, 否則結(jié)果為 1***
public static void main(String[] args) { int a=1; int b=2; System.out.println(a|b); }
運算符:&
如果兩個二進制位都是 1, 則結(jié)果為 1, 否則結(jié)果為 0.
public static void main(String[] args) { int a=1; int b=2; System.out.println(a&b); }
運算符:^
*** 如果兩個數(shù)字的二進制位相同, 則結(jié)果為 0, 相異則結(jié)果為 1.***
public static void main(String[] args) { int a=1; int b=2; System.out.println(a^b); }
運算符:~
如果該位為 0 則轉(zhuǎn)為 1, 如果該位為 1 則轉(zhuǎn)為 0
public static void main(String[] args) { int a=1; int b=~a; System.out.println(b); }
運算符:>>
最右側(cè)位不要, 最左側(cè)補符號位(正數(shù)補0, 負數(shù)補1)
public static void main(String[] args) { int a=8; System.out.println(a>>1);//向右位移1個 }
運算符:<<
最左側(cè)位不要了, 最右側(cè)補 0
public static void main(String[] args) { int a=8; System.out.println(a<<1); }
運算符:>>>
最右側(cè)位不要了, 最左側(cè)補 0(無論他是否為負數(shù))
public static void main(String[] args) { int a=8; System.out.println(a>>>1); int b=-1; System.out.println(b >>> 1); }
到此這篇關(guān)于全面剖析java 數(shù)據(jù)類型與運算符的文章就介紹到這了,更多相關(guān)java 數(shù)據(jù)類型與運算符內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
springboot @ComponentScan注解原理解析
這篇文章主要介紹了springboot @ComponentScan注解原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-02-02Spring的自定義擴展標簽NamespaceHandler解析
這篇文章主要介紹了Spring的自定義擴展標簽NamespaceHandler解析,在很多情況下,我們需要為系統(tǒng)提供可配置化支持,簡單的做法可以直接基于Spring的標準Bean來配置,Spring提供了可擴展Schema的支持,這是一個不錯的折中方案,需要的朋友可以參考下2023-12-12SpringBoot整合達夢數(shù)據(jù)庫的教程詳解
這篇文章主要給大家介紹了SpringBoot整合達夢數(shù)據(jù)庫的詳細教程,文章中有詳細的圖片介紹和代碼示例供大家參考,具有一定的參考價值,需要的朋友可以參考下2023-08-08Spring?Cloud?Gateway集成Sentinel流控詳情
這篇文章主要介紹了Spring?Cloud?Gateway集成Sentinel流控詳情,Sentinel支持對Spring?Cloud?Gateway、Zuul等主流的API?Gateway進行限流,需要的朋友可以參考一下2022-09-09Java深入了解數(shù)據(jù)結(jié)構(gòu)之哈希表篇
哈希表是一種根據(jù)關(guān)鍵碼去尋找值的數(shù)據(jù)映射結(jié)構(gòu),該結(jié)構(gòu)通過把關(guān)鍵碼映射的位置去尋找存放值的地方,說起來可能感覺有點復(fù)雜,我想我舉個例子你就會明白了,最典型的的例子就是字典2022-01-01