Java語言基礎 #基礎語法 #Day2 #數據類型轉換 #運算符 #方法入門

一、數據類型轉換

  • 按理說,這段代碼會報錯(應爲99L,而不是99),可是沒有,怎麼回事?
    在這裏插入圖片描述
long num1 = 99  // 左邊是long類型,右邊是int類型,發生了什麼?
  • 當數據類型不一樣時,將會發生數據類型轉換。

1. 自動類型轉換(隱式)

  • 特點: 代碼不需要特殊處理,自動完成
  • 規則: 數據範圍從小到大轉換。(從大到小不行)(是數據範圍,不是佔用內存大小)
public class Demo1DataType{
	public static void main(String[] args){
		// int-->long,符合從小到大,自動
		long num1 = 99;
		// float-->double,符合從小到大,自動
		double num2 = 9.9F;
		/*
			long類型的內存佔用更大,
			但這裏比較的是數據範圍,
			所以float更大。
			long-->float,符合從小到大,自動
		*/
		float num3 = 99L;
		System.out.println(num1);
		System.out.println(num2);
		System.out.println(num3);
	}
}

在這裏插入圖片描述

2. 強制類型轉換(顯式)

不能自動轉換時,需要特殊的格式進行強制轉換

// 變量類型 變量名 = (變量類型) 數據;
public class Demo2DataType{
	public static void main(String[] args){
		byte num1 = (byte)99L;
		System.out.println(num1);
	}
}

強制類型轉換,會有很多類型

  • 數據溢出:
byte num2 = (byte)500

在這裏插入圖片描述

  • 精度損失:
int num3 = (int)3.7  // 小數部分直接丟失

在這裏插入圖片描述

3. 數學運算

  • byte/short/char 這三種類型都可以發生數學運算
    char的計算是拿字符對應的ASCII值(比如A的char值是65)。
System.out.println('A')  // A
System.out.println('A' + 1)  // 66

在運算時,都會被首先提升成爲int類型,然後再計算。

byte num4 = 33;
byte num5 = 66;
// byte sum45 = num4 + num5;  // 這裏會報錯,因爲右邊是int
byte sum45 = (byte)(num4 + num5);
System.out.println(sum45);

在java中,boolean不能發生數據類型轉換

4. ASCII編碼

計算機這個重色輕友的傢伙,只認得0和1。我們認識的10進制,認識的字母,怎樣讓他認出來呢?答案就是硬射映射。
10進制和2進制,有一一對應的關係,如果讓10進制數和字符有一一對應的關係,那麼2進制和字符不就有一一對應的關係嘛?常言道,我對象的對象,還是我對象(這是迎男而上的哲學)。

  • 這個處對象的過程,就叫編碼表。(其中記錄美國字符處對象過程的,叫做ASCII)
    ASCII表
  • 把這幾個記住就行(後面按順序推):
    48–>0
    65–>A
    97–>a
char s1 = '1';
System.out.println(s1);  // 1
System.out.println(s1 + 0);  // 49

char s2 = 'a';
// 符合從小到大,發生自動類型轉換
int num6 = s2;
System.out.println(num6);  // 97

在這裏插入圖片描述

二、運算符

  • 運算符: 進行特點操作的符號,如“+”
  • 表達式: 用運算符相連的式子

1. 算數運算符

1.1 +-*/%&字符串連接

運算符 說明
+ 加法運算,字符串連接運算
- 減法運算
* 乘法運算
/ 除法運算
% 取模運算,兩個數字相除取餘數
++-- 自增自減運算
  1. java中整數運算,不會產生浮點數(除法會捨去小數部分)
  2. 一旦運算涉及不同類型,結果將會按照數據類型範圍大的那種(浮點數和整數相加得浮點數)
  3. 對於字符串String而言,加號代表連接操作(字符串加其他數據類型,還是字符串)
  4. 運算有優先級,記住,小括號優先級最高即可。(這樣也可以讓代碼可讀性更強)

在這裏插入圖片描述
在這裏插入圖片描述

1.2 自增自減運算符

自增自減運算符,可以讓原本的值±1。常量不可以使用。

  • 使用格式: ++變量名變量名++
  • 使用方式:
    單獨使用:++變量名變量名++沒有任何區別,完全一樣
    混合使用(賦值,打印之類):++變量名,變量立馬+1,任何拿着結果進行使用(先加後用)
         變量名++,首先使用變量原值,任何再讓其+1(先用後加)
    在這裏插入圖片描述

注: 最後的代碼可讀性很差,日常生活不要這樣寫
在這裏插入圖片描述

2. 賦值運算符

複合

賦值運算符 含義
= 等於
+= 加等於
- = 減等於
*= 乘等於
/= 除等於
%= 取模等

在這裏插入圖片描述

  • 會發現:
    a += b --> a = a + b
    複合賦值運算,隱含了一個強制 類型轉換。

3. 比較運算符

比較運算符,是將兩個數據進行比較。比較的結果是boolean

符號 說明
== 比較符號兩邊數據是否相等,相等結果是true。
< 比較符號左邊的數據是否小於右邊的數據,如果小於結果是true。
> 比較符號左邊的數據是否大於右邊的數據,如果大於結果是true。
<= 比較符號左邊的數據是否小於或者等於右邊的數據,如果小於結果是true。
>= 比較符號左邊的數據是否大於或者等於右邊的數據,如果小於結果是true。
!= 不等於符號 ,如果符號兩邊的數據不相等,結果是true

在這裏插入圖片描述

4. 邏輯運算符

邏輯運算符只能用於布爾值,產生布爾值。

運算符 說明
&& 短路與 1. 兩邊都是true,結果是true;2. 一邊是false,結果是false;短路特點:符號左邊是false,右邊不再運算
|| 短路或 1. 兩邊都是false,結果是false;2. 一邊是true,結果是true;短路特點: 符號左邊是true,右邊不再運算
! 取反 1. ! true 結果是false;2. ! false結果是true
  1. 短路效果,可以節省性能。只要短路了,後邊的代碼,壓根不會執行。
  2. 與或能將n個條件連寫。
    在這裏插入圖片描述

5. 三元運算符

  • 一元運算符: 只需要一個數據,如:取反!,自增++
  • 二元運算符: 需要兩個數據,如:加法+,賦值=

  • 格式:
    條件 ? 值1:值2;
    條件爲true,返回值1
    條件爲false,返回值2
    在這裏插入圖片描述
  • 注意: 三元運算符一定要使用,賦值也好,直接打印也罷,一定要使用。
    如果是賦值的話,值的數據類型要滿足變量的數據類型。

三、方法入門

有一個很著名的羅老師,羅翔老師,他姓張,有個外號叫張三。
張三昨天很無聊,拿起一本刑法,戰術摸下巴,然後去犯罪了。
張三今天很無聊,拿起一本刑法,戰術摸下巴,然後去犯罪了。
張三以後肯定天天無聊,天天拿起一本刑法,天天戰術摸下巴,然後去犯罪。

  • 寫成代碼長這樣:
public class Demo1DataType{
	public static void main(String[] args){
		System.out.println("看刑法")
		System.out.println("戰術摸下巴")
		System.out.println("去犯罪")

		System.out.println("看刑法")
		System.out.println("戰術摸下巴")
		System.out.println("去犯罪")

		System.out.println("看刑法")
		System.out.println("戰術摸下巴")
		System.out.println("去犯罪")
		// ......
	}
}
  • 那麼問題來了 ,張三累不累?
  • ,張三累不累,我不知道,但是我累。

有沒有辦法,讓我不那麼累?把張三的日常,寫成一個“張三的一天”這個方法,每次張三無聊時,都使用這個方法就行。
方法的重要功能,就是提高代碼複用性

最基本的方法格式

  • 最基本的方法格式:
public static void 方法名稱(){  // 方法名使用小駝峯
	方法體;
}

方法定義無先後順序
方法的定義不能包含嵌套包含關係

  • 調用:
方法名稱();
  • Demo: 張三的一天

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