java基本數據類型與運算

#1:關鍵字
##(1)被Java語言賦予特定含義的單詞
##(2)特點:
全部小寫。
##(3)注意事項:
A:goto和const作爲保留字存在。
B:類似於Notepad++這樣的高級記事本會對關鍵字有特殊顏色標記

#2:標識符
##(1)就是給類,接口,方法,變量等起名字的字符序列
##(2)組成規則:
A:英文大小寫字母
B:數字
C:$和_
##(3)注意事項:
A:不能以數字開頭
B:不能是java中的關鍵字
C:區分大小寫
##(4)常見的命名規則(見名知意)
A:包 全部小寫
單級包:小寫
舉例:henson
多級包:全部小寫,域名反轉,並用.隔開
舉例:com.cskaoyan
B:類或者接口
一個單詞:首字母大寫
舉例:Student, Comparable
多個單詞:每個單詞首字母大寫 (駝峯命名法)
舉例:HelloWorld
C:方法或者變量
一個單詞:首字母小寫
舉例:name, show()
多個單詞:從第二個單詞開始,每個單詞首字母大寫
舉例:studentAge, showAllNames()
D:常量
全部大寫
一個單詞:大寫
舉例:PI
多個單詞:大寫,並用_隔開
舉例:MAX_VALUE

#3:註釋
##(1)就是對程序進行解釋說明的文字
##(2)分類:
A:單行註釋 //
B:多行註釋 /* /
注意事項:多行註釋不能內嵌使用
C:文檔註釋(後面講) /
* */
##(3)註釋的作用
A:解釋說明程序,提高了代碼的閱讀性。
B:可以幫助我們調試程序。

#4:常量
##(1)在程序執行的過程中,其值不能發生改變的量
##(2)分類:
A:字面值常量
B:自定義常量(後面講)
##(3)字面值常量
A:字符串常量 “Hello, world!”
B:整數常量 12, 23
C:小數常量 12.345
D:字符常量 ‘a’, ‘A’, ‘0’, ‘中’
E:布爾常量 true, false
F:空常量 null(後面講)
##(4)在Java中針對整數常量提供了四種表現形式
A:二進制 由0,1組成。以0b開頭。
B:八進制 由0,1,…7組成。以0開頭。
C:十進制 由0,1,…9組成。整數默認是十進制。
D:十六進制 由0,1,…9,a,b,c,d,e,f(大小寫均可)組成。以0x開頭。
##(5) 浮點數常量的兩種表示形式
A:十進制形式 3.14
B: 科學計數法: 4.56e7

#5:進制轉換
##(1)其他進制到十進制
係數:就是每一個位上的數字
基數:x進制的基數就是x
權:對每一個位上的數據,從右,並且從0開始編號,對應的編號就是該數據的權。

	結果:係數*基數^權次冪之和。
##(2)十進制到其他進制
	除基取餘,直到商爲0,餘數反轉。
##(3)進制轉換的快速轉換法
	A:十進制和二進制間的轉換
		8421碼。
	B:二進制到八進制,十六進制的轉換

#6: 原碼,反碼,補碼
##(1)原碼 (便於人去理解)
7 0000 0111
-7 1000 0111
##(2)反碼
7 0000 0111
-7 1111 1000
##(3)補碼 (方便計算機計算)
7 0000 0111
-7 1111 1001

#7:變量
##(1)在程序的執行過程中,其值在某個範圍內可以發生改變的量
##(2) 聲明一個變量,本質是申請一片內存空間
名字, 範圍, 初始化值
##(2)變量的定義格式:
A:數據類型 變量名 = 初始化值;
B:數據類型 變量名;
變量名 = 初始化值;

#8:數據類型
##(1)Java是一種強類型語言,針對每種數據都提供了對應的數據類型。
##(2)分類:
A:基本數據類型
B:引用數據類型:類,接口,數組。
##(3)基本數據類型
A:整數 佔用字節數 範圍
byte 1 -128 ~ 127
short 2 能表示65536個數
int 4 大概能表示43億個數(不能用int表示全體人類)
long 8
B:浮點數
float 4
double 8
C:字符
char 2(注意Java中,字符采用Unicode編碼,和c不一樣)
D:布爾
boolean 1

	注意:
		整數默認是int類型,浮點數默認是double。
		長整數要加L或者l,建議後面加L。
		單精度的浮點數要加F或者f。

#8:數據類型轉換
##(1)boolean類型不參和其他類型進行轉換。
##(2)默認轉換
A:表示範圍從小到大
B:byte --> short --> int --> long --> float --> double
C: char --> int
D:byte,short,char參與運算時,會直接轉換成int類型。即使是同一個數據類型的運算,也會先轉換成int類型。
##(3)強制轉換
A:範圍從大到小
B:可能會有精度的損失,一般不建議這樣使用。
C:格式:
目標數據類型 變量名 = (目標數據類型) (被轉換的數據);
##(4)思考題和麪試題:
A:下面兩種方式有區別嗎?
float f1 = 12.345f;
float f2 = (float)12.345;
B:下面的程序有問題嗎,如果有,在哪裏呢?
byte b1 = 3;
byte b2 = 4;
// byte b3 = b1 + b2;
byte b4 = 3 + 4;
C:下面的操作結果是什麼呢?
byte b = (byte)130; // -126
D:字符參與運算
是查找ASCII裏面的值
‘a’ 97
‘A’ 65
‘0’ 48

		System.out.println('a');	//a
		System.out.println('a' + 1);	//98
	E:字符串參與運算
		這裏其實是字符串的連接
		
		System.out.println("hello"+'a'+1);	// helloa1
		System.out.println('a'+1+"hello");	// 98hello
		System.out.println("5+5="+5+5);	//5+5=55
		System.out.println(5+5+"=5+5");	//10=5+5

#9:運算符
##(1)算術運算符
A:+,-,*,/,%,++,–
B:+的用法
a:加法
b:正號
c:字符串連接符 (對+進行了重載)
C:/和%的區別
a: / 整數之間的相除,結果是整數。
向0取整
如果想得到小數,*1.0即可。
b: %
判斷一個數是否是奇數
a % b = a - (a / b) *b
取餘運算是一個很耗時的操作,在性能比較關鍵的時候最好不要使用
D:++和–的用法
a:他們的作用是自增或者自減
b:使用
**單獨使用
放在操作數據的前面和後面效果一樣。
a++或者++a效果一樣。
**參與操作使用
放在操作數的前面:先自增或者自減,再參與操作
放在操作數的後面:先參與操作,再自增或者自減
c:底層原理:
a = a++;

			int temp = a;
			a++;
			a = temp;
##(2)賦值運算符
	A:=,+=,-=,*=,/=,%=等
	B:=叫做賦值運算符,也是最基本的賦值運算符
		int x = 10; 把10賦值給int類型的變量x。
		a = b = 10;
		賦值運算符是從右向左結合的。
		賦值表達式有值的,值等於=右邊表達式的值。
	C:擴展的賦值運算符的特點
		隱含了強制轉換。
		面試題:
			short s = 1;
			//s = s + 1;
			
			short s = 1;
			s += 1;
			請問上面的代碼哪個有問題?
##(3)比較運算符
	A:==,!=, >,>=,<,<=,instanceof
	B:最終結果是boolean類型。
	C:千萬不要把==寫成了=
##(4)邏輯運算符
	A:&,|,^,!,&&,||
	B:邏輯運算符用於連接boolean類型的式子
	C:結論
		&: 有false則false
		|:  有true則true
		^: 相同則false,不同則true。
			情侶關係。
		!: 非true則false,非false則true
		
		&&: 結論和&是一樣的,只不過有短路效果。左邊是false,右邊不執行。
		||: 結論和|是一樣的,只不過有短路效果。左邊是true,右邊不執行。
		推薦使用 &&,||。
		
##(5)位運算符
	A:&, |, ^, ~, <<, >>, >>>
	B:結論:
	     &:同時爲1,才爲1,否則爲0
	     |:同時爲0,才爲0,否則爲1
	    ^:  相同爲0,不同爲1;
		a ^ b = b ^a;
		a ^ 0 = a;
		a ^ a = 0;
	    ~: ~0爲1,~1爲0;
	   <<: 移除的高位丟棄,低位補0; 
		左移n個單位,相當於乘以 2 ^ n;
	  >>: 移除的低位丟棄,如果符號位是0,則高位補0,如果符號位是1,則高位補1;
		右移n個單位,相當於除以2 ^ n;
	 >>>: 移除的低位丟棄,高位補0;

	注意事項:如何移動的單位a超過了字長m, 則實際移動
		a mod m (數學中的取餘運算)
	B:面試題
		a: 判斷一個數是否是奇數	a & 1 == 1;
		b: 對2 ^ n 取餘。		a & (2^n - 1);
		c: 如何判斷一個數是否是2^n	a & (a-1) == 0;
		d: 兩個整數之間的交換;
		e: 有一堆數,都是成對出現的,只有一個單獨的,找出這個單獨的數。
		f: 用最有效率的方式求2 * 8的值		2 << 3;
##(6)三目運算符
	A:格式
		比較表達式 ? 表達式1 : 表達式2;
	B:執行流程:
		首先計算比較表達式的值,看是true還是false。
		如果是true,表達式1就是結果。
		如果是false,表達式2就是結果。
	C:案例:
		a:比較兩個數據是否相等
		b:獲取兩個數據中的最大值
		c:獲取三個數據中的最大值
			int max = (a > b ? a : b) > c ? (a > b ? a : b) : c;
			int max = a > b ? (a > c ? a : c) : (b > c ? b : c);

#10:鍵盤錄入
##(1)實際開發中,數據是變化的,爲了提高程序的靈活性,我們加入鍵盤錄入數據。
##(2)如何實現呢?目前就記住
A:導包
import java.util.Scanner;
位置:在class的上邊
B:創建對象
Scanner sc = new Scanner(System.in);
C:獲取數據
int x = sc.nextInt();
只能獲取整數值,如果輸入不是整數,會拋出InputMismatchException異常。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章