Java基本資料型別和運算子詳解
本文例項講述了Java基本資料型別和運算子。分享給大家供大家參考,具體如下:
基本資料型別
Java 是一種強型別的語言,宣告變數時必須指明資料型別。變數(variable)的值佔據一定的記憶體空間。不同型別的變數佔據不同的大小。
Java中共有8種基本資料型別,包括4 種整型、2 種浮點型、1 種字元型、1 種布林型,請見下表。
Java基本資料型別
資料型別 | 說明 | 所佔記憶體 | 舉例 | 備註 |
byte | 位元組型 | 1 byte | 3,127 | |
short | 短整型 | 2 bytes | 3,32767 | |
int | 整型 | 4 bytes | 3,21474836 | |
long | 長整型 | 8 bytes | 3L,92233720368L | long最後要有一個L字母(大小寫無所謂) |
float | 單精度浮點型 | 4 bytes | 1.2F,223.56F | float最後最好有一個F字母(大小寫無所謂)。 |
double | 雙精度浮點型 | 8 bytes | 1.2, 1.2D,223.56,223.56D |
double最後最好有一個D字母(大小寫無所謂)。 |
char | 字元型 | 2 bytes | 'a','A' | 字元型資料只能是一個字元,由單引號包圍。 |
boolean | 布林型 | 1 bit | true,false |
Java中的數值型別不存在無符號的,它們的取值範圍是固定的,不會隨著機器硬體環境或者作業系統的改變而改變。實際上,Java中還存在另外一種基本型別void,它也有對應的包裝類 java.lang.Void,不過我們無法直接對它們進行操作。對於數值型別的基本型別的取值範圍,我們無需強制去記憶,因為它們的值都已經以常量的形式定義在對應的包裝類中了。請看下面的例子:
public class PrimitiveTypeTest { public static void main(String[] args) { // byte System.out.println("基本型別:byte 二進位制位數:" + Byte.SIZE); System.out.println("包裝類:java.lang.Byte"); System.out.println("最小值:Byte.MIN_VALUE=" + Byte.MIN_VALUE); System.out.println("最大值:Byte.MAX_VALUE=" + Byte.MAX_VALUE); System.out.println(); // short System.out.println("基本型別:short 二進位制位數:" + Short.SIZE); System.out.println("包裝類:java.lang.Short"); System.out.println("最小值:Short.MIN_VALUE=" + Short.MIN_VALUE); System.out.println("最大值:Short.MAX_VALUE=" + Short.MAX_VALUE); System.out.println(); // int System.out.println("基本型別:int 二進位制位數:" + Integer.SIZE); System.out.println("包裝類:java.lang.Integer"); System.out.println("最小值:Integer.MIN_VALUE=" + Integer.MIN_VALUE); System.out.println("最大值:Integer.MAX_VALUE=" + Integer.MAX_VALUE); System.out.println(); // long System.out.println("基本型別:long 二進位制位數:" + Long.SIZE); System.out.println("包裝類:java.lang.Long"); System.out.println("最小值:Long.MIN_VALUE=" + Long.MIN_VALUE); System.out.println("最大值:Long.MAX_VALUE=" + Long.MAX_VALUE); System.out.println(); // float System.out.println("基本型別:float 二進位制位數:" + Float.SIZE); System.out.println("包裝類:java.lang.Float"); System.out.println("最小值:Float.MIN_VALUE=" + Float.MIN_VALUE); System.out.println("最大值:Float.MAX_VALUE=" + Float.MAX_VALUE); System.out.println(); // double System.out.println("基本型別:double 二進位制位數:" + Double.SIZE); System.out.println("包裝類:java.lang.Double"); System.out.println("最小值:Double.MIN_VALUE=" + Double.MIN_VALUE); System.out.println("最大值:Double.MAX_VALUE=" + Double.MAX_VALUE); System.out.println(); // char System.out.println("基本型別:char 二進位制位數:" + Character.SIZE); System.out.println("包裝類:java.lang.Character"); // 以數值形式而不是字元形式將Character.MIN_VALUE輸出到控制檯 System.out.println("最小值:Character.MIN_VALUE=" + (int) Character.MIN_VALUE); // 以數值形式而不是字元形式將Character.MAX_VALUE輸出到控制檯 System.out.println("最大值:Character.MAX_VALUE=" + (int) Character.MAX_VALUE); } }
整數型
整數型包括byte、short、int和long。
public class Demo1 { public static void main(String[] args) { //字面值 預設是int型別 byte n1 = 12; short n2 = 45; int n3 = 456; long n4 = 67L;// L 或 l } }
二進位制太長可以使用下劃線來進行區分
public class Demo1 { public static void main(String[] args) { int n5 = 0B1010_1111_0011_1100;//二進位制用0B或0b表示 int n6 = 017;//八進位制用0表示 int n7 = 0xffff;//十六進位制用0x或0X表示 long n8 = 12345678987654321L; } }
浮點型
浮點型包括double和float。
注意:1.不要在數量級相差很大的浮點型別之間進行運算。2.避免進行等量的判斷
import java.math.*; public class Demo1 { public static void main(String[] args) { float f1 = 34.5f;//f 或 F 預設為 double型別 double d1 = 456.78d;//字尾 d 或 D double d2 = 2.4e20;// e或 E 以 10為底 //浮點型可以表示十六進位制,但是必須以科學 //計數法表示,而且 以 p為底 double d3 = 0x3.4p20;// p或 P以2 double d4 = 2.4e20; double d5 = d4 + 1; double num1 = 0.1; double num2 = 0.2; double num3 = num1 + num2;//0.3 //java.lang System.out.println(num3 == 0.3);//不一樣 輸出結果false System.out.println(num3);//輸出結果 0.30000000000000004 //處理 java.math包 BigDecimal number1 = new BigDecimal("0.1"); BigDecimal number2 = new BigDecimal("0.2"); System.out.println(number1.add(number2));//輸出結果 0.3 } }
字元型
char型別
- char型別是一個單一的 16 位 Unicode 字元;
- 最小值是\u0000(即為0);
- 最大值是\uffff(即為65,535);
- char 資料型別可以儲存任何字元;
- 例子:char letter = 'A';。
只能儲存一個字元,只能使用單引號
布林型
布林(boolean)型包括true和false
引用資料型別
String
public class Demo2 { public static void main(String[] args) { String name = "郭靖"; String address = "北京"; //+ 連線字串 System.out.println(name+address); int n1 = 1; int n2 = 1; System.out.println(n1 + n2);//輸出結果:2 // 2 +"郭靖"-》 “2郭靖” System.out.println(n1+n2+name);//輸出結果:2郭靖 //"郭靖1"+n2 ->"郭靖11“ System.out.println(name+n1+n2);//輸出結果:郭靖11 } }
基本資料型別轉換
自動型別轉換
小-》 大
低-》 高
強制型別轉換
大-》小
高-》低
語法格式為:(強制轉換的資料型別)運算元
int num = (int)45.67;
型別提升原則
前提:運算
結果:採取高型別(範圍大的資料型別作為結果)
運算子
分類:根據運算元的個數
一元
二元
三元
算數運算子
public class Demo5 { public static void main(String[] args) { System.out.println(5 + 2);//輸出結果:7 System.out.println(5 - 2);//輸出結果:3 System.out.println(5 * 2);//輸出結果:10 //------------除法-------------------------- //除數和被除數都是整數結果會取整數部分 System.out.println(5 / 2);////輸出結果:2 System.out.println(5.0 / 2);//輸出結果:2.5 System.out.println(5 / 2.0);//輸出結果:2.5 System.out.println(5.0 / 2.0);//輸出結果:2.5 //除數為0 丟擲異常 //System.out.println(5 / 0); System.out.println(5.0 / 0);//正無窮大 輸出結果:Infinity System.out.println(-5.0 / 0);//負無窮大 輸出結果:-Infinity //非數字NaN System.out.println(0.0 / 0);//輸出結果:NaN //-----------------取餘數,取模---------------------------- System.out.println( 5 % 2);//輸出結果:1 System.out.println(5.0 % 2);//輸出結果:1.0 System.out.println(5 % -2);//輸出結果: 1 System.out.println(-5 % 2);//輸出結果:-1,符號看被除數 //---------------習題講解-------------------------------- /*根據天數(46)計算週數和剩餘的天數*/ int days = 46; int week = days / 7;//周 int day = days % 7;//餘數天 System.out.println(week+"周,餘數"+day+"天"); //---------------------------------------------- /* 對於隨意輸入的一個3位數, 反轉;例如:234反轉後 (將每一個數字反轉輸出即可):432 */ int num = 234; int n1,n2,n3; n1 = num % 10;//個位 n2 = num / 10 % 10;//十位 n3 = num / 100;//百位 System.out.println(n1+""+n2+""+n3);//"432" System.out.println(n1*100+n2*10+n3);//432 } }
關係運算符
邏輯運算子
&& || 短路與和短路或
位運算子
& | 非短路與和非短路或
5 二進位制 00000000-00000000-00000000-00000101 2 二進位制 00000000-00000000-00000000-00000010 //&如果相對應位都是1,則結果為1,否則為0 5&2 二進位制 00000000-00000000-00000000-00000000 //|如果相對應位都是0,則結果為0,否則為1 5|2 二進位制 00000000-00000000-00000000-00000111 //^如果相對應位值相同,則結果為0,否則為1 5^2 二進位制 00000000-00000000-00000000-00000000 //~按位補運算子翻轉運算元的每一位,即0變成1,1變成0。 ~5 二進位制 11111111-11111111-11111111-11111010 減一 11111111-11111111-11111111-11111001 取反 00000000-00000000-00000000-00000110 //<<向左移動幾位,右邊低端位用0補全 5<<2 二進位制 00000000-00000000-00000000-00010100 //>>向右移動幾位,左邊高位是什麼用什麼補位,是1用1,是0用0 5>>2 二進位制 00000000-00000000-00000000-00000001 //>>>無符號右移,左邊高位全部用0進行補位 5>>>2二進位制 00000000-00000000-00000000-00000001 -6>>>2二進位制 00111111-11111111-11111111-11111110
擴充套件賦值運算子
條件運算子
語法:
比較運算||Boolean?表示式1:表示式2
如果?前的結果是true返回表示式1,如果?前返回false返回表示式2
運算子的優先順序
更多java相關內容感興趣的讀者可檢視本站專題:《Java面向物件程式設計入門與進階教程》、《Java資料結構與演算法教程》、《Java操作DOM節點技巧總結》、《Java檔案與目錄操作技巧彙總》和《Java快取操作技巧彙總》
希望本文所述對大家java程式設計有所幫助。