1. 程式人生 > 其它 >02 IDEA的安裝與運算子。

02 IDEA的安裝與運算子。

一、IDEA的安裝

1.1 IDEA首次驅動

檢視資料夾 IDEA操作文件\01_首次驅動專案和模組的建立.docx檔案
一.相關概念:
    1.專案: project
    2.模組: module
    3.java原始碼存放位置:src
    4.包(資料夾): package
    5.java程式: 類,介面,抽象類等 
二.操作步驟:
    1.在某個碟符下建立一個名稱為myprojects的資料夾,用來儲存多個專案的
    2.在myprojects資料夾下建立一個名稱為javase410的專案
    3.在javase410的專案中建立名稱為day01/day02的Java模組
    4.在day01/day02模組的src下建立名稱為itheima01的包
    5.在itheima01包中建立HelloWorld類
三.注意:
	1.不管是專案,模組,src,包在系統中的體現形式都是資料夾
	2.但是src是建立模組後自動生成的,不需要自己建立
	3.原始碼必須寫在src下才能執行,其它位置不可以

1.2 快捷鍵

1.psvm + 回車              main方法
2.sout + 回車              輸出語句
3.ctrl + d                複製當前行
4.ctrl + y                刪除當前行
5.ctrl + /                單行註釋
6.ctrl + shift + /        多行註釋
7.ctrl + alt + L          格式化程式碼(和QQ中的熱鍵衝突,必須把QQ中的熱鍵取消)
8.ctrl+shift+回車          自動補全程式碼
9.Alt + shift + ↑/↓       將當前程式碼向上移動或者是向下移動
10.shift+回車              向下新增一行
11.ctrl+alt+回車           向上新增一行
12.alt+滑鼠選中多行         可以對多行進行同時操作

二、運算子

2.1 算術運算子

2.1.1 算術運算子加減乘除

package com.itheima03_suanshu;

/*
    算術運算子
        1.運算子:對常量或者變數進行操作/運算的符號
        2.表示式:用運算子把常量或者變數連線起來符合java語法的式子就可以稱為表示式。
        3.數學運算子:
            (1)+: 加法運算
            (2)-: 減法運算
            (3)*: 乘法運算
            (4)/: 除法運算
                被除數 ÷ 除數 = 商(/:獲取的是除法運算中的商) ... 餘數
                注意:整數相除,得到結果一定是整數
                     小數相除,得到的結果一定是小數
 */
public class Demo03Operator {
    public static void main(String[] args) {
        //定義2個int變數,並初始化
        //int a = 30;
        //int b = 20;
        int a = 30, b = 20;
        System.out.println(a + b);//30+20:50
        System.out.println(a - b);//30-20:10
        System.out.println(a * b);//30*20:600
        System.out.println(a / b);//30/20: 1        
    }
}

2.1.2 算術運算子%

%(取餘數)運算子
     被除數 ÷ 除數 = 商(/:獲取的是除法運算中的商) ... 餘數(%:獲取的是除法運算中的餘數)
總結:
     /和%都是做數學中的除法運算,只不過/獲取到的是除法運算中的商,%獲取到的是除法運算中的餘數

練習

/*
    int變數num中儲存四位數字1234,利用/和%計算個位十位百位千位?
        個位: 4
        十位: 3
        百位: 2
        千位: 1
    總結:
        個位: num%10
        十位: num/10%10
        百位: num/100%10
        千位: num/1000%10 如果確定是四位數字,可以省略%10
 */
public class Demo03Lianxi {
    public static void main(String[] args) {
        //定義int變數num,並初始化
        int num = 1234;
        //計算個位
        int ge = num % 10;//把表示式num % 10的計算結果儲存到int變數ge中
        //計算十位
        int shi = num / 10 % 10;
        //計算百位
        int bai = num / 100 % 10;
        //計算千位
        int qian = num / 1000 % 10;
        //此處 + 號 代表 字串的連線
        System.out.println("個位: " + ge);
        System.out.println("十位: " + shi);
        System.out.println("百位: " + bai);
        System.out.println("千位: " + qian);
    }
}

2.1.3 算術運算子+的特殊用法

+的作用:
	1.完成數學中的加法運算
	2.完成字串的連線(拼接): 如果+的左右兩邊出現字串
注意:
	字串拼接時是從左向右執行的。
	如果字元和(整數或者小數)進行+拼接操作的時候會將字元轉換為ASCII碼再和整數進行算術運算

    System.out.println(6+3+"你好") ------------>結果是  9你好
    System.out.println(666+"你好"+666)--------->結果是  666你好666
    System.out.println("你好"+666+666)--------->結果是  你好666666
    System.out.println('A'+66+"你好")---------->結果是  131你好
    System.out.println('a'+3.8+"你好")--------->結果是  100.8你好
    System.out.println('你'+3.8+"你好")-------->結果是  20323.8你好

2.2 賦值運算子

+= 	加後賦值   a+=b,將a+b的值給a 	a = a + b
-= 	減後賦值   a-=b,將a-b的值給a 	a = a - b
*= 	乘後賦值   a*=b,將a×b的值給a 	a = a * b
/= 	除後賦值   a/=b,將a÷b的商給a    a = a / b
%= 	取餘後賦值  a%=b,將a÷b的餘數給a  a = a % b
注意:
	1.=: 表示的是賦值運算
	2.==: 表示的是判斷是否相同

2.3 自增自減運算子

自增(++)自減(--)運算子
        1.作用: 就是讓變數的值增加1(++)或者減少1(--)
        2.使用格式:
            (1)可以寫在變數的前面: ++a,--a
            (2)可以寫在變數的後面: a++,a--
        3.使用注意事項:
            (1)單獨使用:++或者--自己獨佔一行,沒有其它多餘的操作
                此時:
                    前++和後++效果一樣,都是讓變數的值增加1
                    前--和後--效果一樣,都是讓變數的值減少1

            (2)混合使用: ++或者-- 和其它操作(賦值/列印)一起進行運算
                將產生重大區別:
                    ++/--寫在前面【先++/--,再使用】:
                        先把變數值增加1(++)或者減少1(--),然後把變數增加1(++)或者減少1(--)的結果進行其它運算
                    ++/--寫在後面【先使用,再++/--】:
                        先使用變數增加1(++)或者減少1(--)之前的資料,然後變數的值再增加1(++)或者減少1(--)

public class Demo06ZiZeng {
    public static void main(String[] args) {
        int a = 1;
        /*
            因為++在變數a的前面,先把變數a的值增加1,變數a的值變成2,
            然後再使用變數a增加1之後的結果2賦值給變數b,所以變數b的值是2
         */
        int b = ++a;
        System.out.println(a);//2
        System.out.println(b);//2

        int c = 1;
        /*
            因為++在c變數c的後面,先使用變數c增加1之前的值1,賦值給變數d,
            所以d的值是1,然後c的值增加1,c變成2
         */
        int d = c++;
        System.out.println(c);//2
        System.out.println(d);//1

    }
}

2.4 關係運算符

1.作用:
	用來比較兩個資料之間的大小關係,結果是boolean型別的資料	
        
2.特點:	
	關係表示式不管寫的多麼複雜,或者多麼簡單,最終結果要麼是true(成立),要麼是false(不成立)
    
3.分類:	
	== 	a==b,	判斷a和b的值是否相等,成立為true,不成立為false
    	> 	a>b,	判斷a是否大於b,成立為true,不成立為false
	>= 	a>=b,	判斷a是否大於或者等於b,成立為true,不成立為false
	< 	a<b,	判斷a是否小於b,成立為true,不成立為false
	<= 	a<=b,	判斷a是否小於或者等於b,成立為true,不成立為false
	!= 	a!=b,	判斷a和b的值是否不相等,成立為true,不成立為false
	
4.注意:
	1.=: 表示的是賦值運算
	2.==: 表示的是判斷是否相同
//關係表示式
public class Demo06GuanXi {
    public static void main(String[] args) {
        int a = 10, b = 20;
        System.out.println(a > b);//10 > 20: false
        System.out.println(a >= b);//10 >= 20: false
        System.out.println(a < b);//10 < 20: true
        System.out.println(a <= b);//10 <= 20: true
        System.out.println(a != b);//10 != 20: true
        System.out.println(a == b);//10 == 20: false
        //把變數b的值賦值給變數a,然後再列印a的值
        System.out.println(a = b);//20
    }
}

2.5 邏輯運算子

1.作用: 
	用來連線多個布林表示式的,結果也是布林型別

2.分類:
	(1)邏輯與(&:shift+7)【有false,則false】:
		表示並且的意思,同時成立的意思
		多個條件都為true,結果才為true
		多個條件只要有一個為false,結果就是false
	(2)邏輯或(|:shift+\)【有true,則true】:
		表示或者的意思
		多個條件只要有一個為true,結果就是true
		多個條件都是false,結果就是false
	(3)邏輯異或(^:shift+6):			目前暫時不用
		相同為false,不同為true
	(4)邏輯非(!:shift+1):
		!true: 就是false
		!false: 就是true
//邏輯運算子
public class Demo07LuoJi {
    public static void main(String[] args) {
        int a = 10, b = 20, c = 30;
        System.out.println((a > b) & (a > c));//false & false --> false
        System.out.println((a < b) & (a < c));//true  & true  --> true
        System.out.println((a > b) & (a < c));//false & true  --> false
        System.out.println((a < b) & (a > c));//true  & false --> false
        System.out.println("-------------------");
        System.out.println((a > b) | (a > c));//false | false --> false
        System.out.println((a < b) | (a < c));//true  | true  --> true
        System.out.println((a > b) | (a < c));//false | true  --> true
        System.out.println((a < b) | (a > c));//true  | false --> true

        System.out.println("-------------------");
        System.out.println((a > b) ^ (a > c));//false ^ false --> false
        System.out.println((a < b) ^ (a < c));//true  ^ true  --> false
        System.out.println((a > b) ^ (a < c));//false ^ true  --> true
        System.out.println((a < b) ^ (a > c));//true  ^ false --> true
        System.out.println("-------------------");

        System.out.println(!true);//false
        System.out.println(!false);//true

        System.out.println(a != b);//true
        System.out.println(!(a == b));//!false --> true
    }
}

2.5.1 邏輯運算子的短路效果

1.基本使用
            (1)短路邏輯與(&&): 左側為false,右側不進行計算
            (2)短路邏輯或(||): 左側為true,右側不進行計算
2.使用區別:
            (1)&&和&: 最終的結果是相同的,但是&&具有短路的效果,效率高
            (2)||和|: 最終的結果是相同的,但是||具有短路的效果,效率高
3.注意:
            以後實際學習/開發過程中,需要連線多個條件時,強烈建議使用&& 或者 ||
public class Demo08DuanLu {
    public static void main(String[] args) {
        int a = 1;
        /*
            表示式(3 < 2) && (++a) > 1: 從左向右計算
            先計算表示式3<2的結果:false
            對於&&而言,左側為false,已經決定了最終的結果為false,&&的右側不再計算,
            所以a的值沒有變化,還是1
         */
        System.out.println((3 < 2) && ((++a) > 1));//false
        System.out.println(a);//1

        int b = 1;
        /*
            表示式(3 < 2) & (++b) > 1: 從左向右計算
            先計算表示式3<2的結果:false
            對於&而言,雖然左側為false,已經決定了最終的結果為false,
            但是仍然要計算&的右側的表示式,導致b的值增加1,b變成2
         */
        System.out.println((3 < 2) & ((++b) > 1));//false
        System.out.println(b);//2
        System.out.println("--------------");

        int c = 1;
        /*
            表示式(3 > 2) || (++c) > 2: 從左向右計算
            先計算表示式3 > 2的結果:true
            對於||而言,左側為true,已經決定了最終的結果為true,||的右側不再計算,
            所以c的值沒有變化,還是1
         */
        System.out.println((3 > 2) || ((++c) > 2));//true
        System.out.println(c);//1

        int d = 1;
        /*
            表示式(3 > 2) | (++d) > 2: 從左向右計算
            先計算表示式3>2的結果:true
            對於|而言,雖然左側為true,已經決定了最終的結果為true,
            但是仍然要計算|的右側的表示式,導致d的值增加1,d變成2
         */
        System.out.println((3 > 2) | ((++d) > 2));//true
        System.out.println(d);//2
    }
}

2.6 三元運算子格式

1.格式:
	資料型別 變數名稱 = 布林表示式1 ? 表示式2 : 表示式3;
	注意:
    		?號前面的式子的結果必須是布林型別
    	
2.執行流程:	
	(1)計算布林表示式1的結果,看是true,還是false
	(2)如果布林表示式1的結果是true,取表示式2的結果賦值給左側的變數
	(3)如果布林表示式1的結果是false,取表示式3的結果賦值給左側的變數

練習

需求:
    一座寺廟裡住著兩個和尚,已知他們的身高分別為150cm、210cm,請用程式實現獲取這兩個和尚的最高身高。

實現步驟:
	1.定義兩個變數用於儲存和尚的身高,單位為cm,這裡僅僅體現數值即可。
	2.用三元運算子獲取兩個和尚的較高身高值,並用臨時身高變數儲存起來。
	3.輸出結果	
public class OperatorTest02 {
    public static void main(String[] args) {
        //1.定義兩個變數用於儲存和尚的身高,單位為cm,這裡僅僅體現數值即可。
        int h1 = 150;
        int h2 = 210;       
        //2.用三元運算子獲取兩個和尚的較高身高值,並用臨時身高變數儲存起來。
        int maxH = h1 > h2 ? h1 : h2;
        //3.輸出結果
        System.out.println("兩個和尚的最大身高:" + maxH);
    }
}