Java學習-第一部分-第一階段-第三節:運算符

来源:https://www.cnblogs.com/wenjie2000/archive/2022/06/19/16389813.html
-Advertisement-
Play Games

運算符 運算符介紹 算數運算符 運算符 運算 範例 結果 + 正號 +7 7 - 負號 b=11; -b -11 + 加 9+9 18 - 減 10-8 2 * 乘 7*8 56 除 9/9 1 % 取模(取餘) 11%9 2 ++ 自增(前):先運算後取值自增(後):先取值後運算 a=2;b=a; ...


運算符

運算符介紹

算數運算符

運算符 運算 範例 結果
+ 正號 +7 7
- 負號 b=11; -b -11
+ 9+9 18
- 10-8 2
* 7*8 56
9/9 1
% 取模(取餘) 11%9 2
++ 自增(前):先運算後取值
自增(後):先取值後運算
a=2;b=++a;
a=2;b=a++;
a=3;b=3
a=3;b=2
-- 自減(前):先運算後取值
自減(後):先取值後運算
a=2;b=--a
a=2;b=a--
a=1;b=1
a=1;b=2
+ 字元串相加 "hsp" +"edu" "hspedu"
**
*演示算術運算符的使用
*/
public class ArithmeticOperator {
    //編寫一個main方法
    public static void main(String[] args) {
        ///使用
        System.out.print1n(10 / 4);//從數學來看是2.5,java中 2
        System.out.println(10.0 / 4);//java是2.5
        //註釋快捷鍵ctrl +/,再次輸入ctrl +/取消註釋 
        //double d = 10 / 4;
        //System.out.println(d);
        //註釋快捷鍵ctrl +/,再次輸入ctrl +/取消註釋
        double d = 10/4;//java中10/ 4 = 2,2=>2.0
        System.out.println(d);//是2.0
        
        //%取模,取餘
        //在%的本質看一個公式a % b = a - a/ b * b
        //-10 %3 =>-10 -(-10)/3 * 3 = -10 + 9= -1
        // 10 %-3 = 10 - 10/(-3)*(-3) = 10 - 9 = 1
        // -10 % -3=(-10) - (-10)/ (-3)*(-3)= -10 +9 = -1
        System.out.print1n(10 % 3);//1
        System.out.println( -10 %3);// -1
        System.out.println(10 % -3);// 1
        System.out.println( -10%-3);//-1
        
        //++的使用
        //
        int i = 10;
        i++;//自增等價於i = i + 1;=>i = 11
        ++i;//自增等價於i = i + 1;=> i = 12
        System.out.println( "i=" + i);//12
        
        /*
        作為表達式使用
        前++∶++i先自增後賦值
        後++∶ i++先賦值後自增
        */
        int j = 8;
        int k = ++j;//等價j=j+1;k=j;
        int k = j++;//等價k =j;j=j+1;
        System.out.println("k="+k+“j="+j);
    }
}

面試題

1.面試題1
int i=1;
i=i++;       //規則使用臨時變數:(1) temp=i;(2) i=i+1;(3)i=temp;
System.out.println(i);
問:結果是多少?為什麼?

2.面試題2
int i=1;
i=++i;   //(1) i=i+1;(2) temp=i;(3)i=temp;
System.out.println(0);

答案:
1
2

練習題

//自增,自減練習    
int i1 = 10;
int i2 =20;
int i= i1++;
System.out.print("i="+i);    //10
System.out.println("i2="+i2);    //20
i = --i2;
System.out.print("i="+i);    //19
System.out.println("i2="+i2);    //19

練習題2

  1. 假如還有59天放假,問:合xx個星期零xx天

    int i=59;
    System.out.println(59/7+"星期零"+59%7+"天");
    
  2. 定義一個變數保存華氏溫度,華氏溫度轉換攝氏溫度的公式為:5/9*(華氏
    溫度-100),請求出華氏溫度對應的攝氏溫度。[234.5]

    double i=234.5;
    double x;
    x=(i-100)*5/9;
    System.out.println(x);
    

關係運算符

  1. 關係運算符的結果都是boolean型,也就是要麼是true,要麼是false

  2. 關係表達式經常用在if結構的條件電或迴圈結構的條件中

關係運算符一覽

運算符 運算 範例 結果
== 相等於 8==7 false
!= 不等於 8!=7 true
< 小於 8<7 false
> 大於 8>7 true
<= 小於等於 8<=7 false
>= 大於等於 8>=7 true
instanceof 檢查是否是類的對象 "hsp" instanceof String true
int a = 9;//老韓提示:開發中,不可以使用a, b
int b = 8;
System.out.println(a>b);//T
System.out.println(a>=b);//T
System.out.println(a<=b);//F
System.out.println(a<b);//F
System.out.println(a==b);//F
System.out.println(a!=b);//T
boolean flag = a>b;//T
System.out.println("flag="+flag);

細節說明

  1. 關係運算符的結果都是boolean型,也就是要麼是true,要麼是false.
  2. 關係運算符組成的表達式,我們稱為關係表達式。a >b
  3. 比較運算符"==“不能誤寫成"="

邏輯運算符

介紹

用於連接多個條件(多個關係表達式),最終的結果也是一個boolean值。

邏輯運算符一覽

分為兩組學習

  1. 短路與&&,短路或||,取反!

  2. 邏輯與&,邏輯或|,^邏輯異或

a b a&b a&&b a|b a||b !a a^b
true true true true true true false false
true false false false true true false true
false true false false true true true true
false false false false false false true false

&&和&基本規則

名稱 語法 特點
短路與&& 條件1&&條件2 兩個條件都為true,結果為true
邏輯與& 條件1&條件2 兩個條件都為true,結果為true

&&和&案例演示

//&&短路與和&案例演示
int age = 50;
if(age > 20 8&& age < 90) {
    System.out.println("ok100");
}
//&邏輯與使用
if(age > 20 & age < 90){
    System.out.println("ok200");
}

//&邏輯與使用
if(age > 20 & age < 90){
    System.out.println( "ok200");
}
//區別
int a = 4;
int b = 9;
//對於&&短路與而言,如果第一個條件為false ,後面的條件不再判斷
if(a < 1 && ++b <50){
    System.out.println("ok300");
}
System.out.println( "a=" +a + " b=" + b);// 4 9
//對於&邏輯與而言,如果第一個條件為false ,後面的條件仍然會判斷
if(a < 1 & ++b <50){
    System.out.println("ok300");
}
System.out.println( "a=" +a + " b=" + b);// 4 9

&&和&使用區別

  1. &&短路與:如果第一個條件為false,則第二個條件不會判斷,最終結果為false,效率高
  2. &邏輯與:不管第一個條件是否為false,第二個條件都要判斷,效率低3.開發中,我們使用的基本是短路與&&,效率高

||和|基本規則

名稱 語法 特點
短路或|| 條件1||條件2 兩個條件中只要有一個成立,結果為true
邏輯或| 條件1|條件2 只要有一個條件成立,結果為true

||和|案例演示

int a = 4;int b = 9;
if( a > 1 | ++b >4){
    System.out.println( "ok300");
}
    System.out.print1n( "a=" + a + " b=" + b); //4 10

||和|使用區別

  1. ||短路或:如果第一個條件為true,則第二個條件不會判斷,最終結果為true,效率高
  2. |邏輯或:不管第一個條件是否為true,第二個條件都要判斷,效率低
  3. 開發中,我們基本使用||

!取反 基本規則名稱

名稱 語法 特點
!非(取反) !條件 如果條件本身成立,結果為false,否則為true

!案例演示

//!操作是取反 T->F,F ->T
System.out.println(60 >20);//T
System.out.println(!(60 >20));/ /F
//a^b:叫邏輯異或,當a和b 不同時,則結果為true,否則為false
boolean b = (10 >1)^(3 > 5);
System.out.println( "b=" + b);//T

^案例演示

a^b:叫邏輯異或,當a和b 不同時,則結果為true,否則為false

^邏輯異或,System.out.printIn( (4<1)^(6> 3));//?

練習題

//1
int x = 5;
int y=5;
if(x++==6 & ++y==6){//邏輯與
    x= 11;
}
System.out.println("x="+x+",y="+y);//6 6

//2
int x= 5,y= 5;
if(x++==6 && ++y==6){
    x= 11;
}
System.out.println("x="+x+",y="+y);//6 5

//3
int x = 5,y = 5;
if(x++==5 | ++y==5){
    x =11;
}
System.out.println("x="+x+",y="+y);//11 6

//4
int x = 5,y = 5;
if(x++==5||++y==5){
    x =11;
}
System.out.println("x="+x+",y="+y);//11 5

賦值運算符

介紹

賦值運算符就是將某個運算後的值,賦給指定的變數。

賦值運算符的分類

基本賦值運算符 =

複合賦值運算符

​ +=, -=,*=, /=,%=等,重點講解一個 +=,其它的使用是一個道理

​ a+= b;[等價a=a+b;]

​ a -=b;[等價a=a-b;]

案例演示

int n1 = 10;
n1 += 4;// n1 = n1 +4;
System.out.println(n1); // 14
n1 /= 3;// n1 = n1/ 3;//4
System.out. println(n1); // 4
  1. 賦值基本案例[int num1 = 10]
  2. +=的使用案例

賦值運算符特點

  1. 運算順序從右往左int num = a +b +c;
  2. 賦值運算符的左邊只能是變數,右邊可以是變數、表達式、常量值
    int num = 20; int num2= 78*34 - 10; int num3 = a;
  3. 複合賦值運算符等價於下麵的效果
    比如:a+=3;等價於a=a+3;
  4. 複合賦值運算符會進行類型轉換。
    byte b = 2; b+=3; b++;
int n1 = 10;
n1 += 4;// n1 = n1 +4;
System.out.println(n1);// 14
n1 /= 3; // n1 = n1 / 3;//4
System. out.print1n(n1);// 4
//複合賦值運算符會進行類型轉換
byte b = 3;
b += 2;//等價b = (byte)(b+2);
b++;// b = (byte)(b+1);

三元運算符

基本語法
條件表達式?表達式1:表達式2;

  1. 如果條件表達式為true,運算後的結果是表達式1;

  2. 如果條件表達式為false,運算後的結果是表達式2;

●案例演示

int a= 10;
int b = 99;
int result =a<b ? a++:b--;
System.out.println ( "result=" + result);
System.out.println("a=" + a);//11
System.out.print1n( "b=" + b);//99

使用細節

  1. 表達式1和表達式2需要為可以賦給接收變數的類型(或可以自動轉換)

  2. 三元運算符可以轉成if--else語句
    int res = a >b ? a++:--b;

運算符優先順序

  1. 運算符有不同的優先順序,所謂優先順序就是表達式運算中的運算順序。如右表,上一行運算符總優先於下一行。
  2. 只有單目運算符、賦值運算符是從右向左運算的。
1 括弧 ()、[ ]、.
2 非、正,負號 !、+(正)、-(負)
3 自增,自減 ++、--
4 乘,除,取餘 *、/、%
5 加,減 +、-
6 移位運算 <<、>>、>>>
7 大小關係 <、<=、>、>=
8 相等關係 ==、!=
9 按位與 &
10 按位異或(在java中,這不是冪次方的符號) ^
11 按位或 |
12 邏輯與(短路與) &&
13 邏輯或(短路或) ||
14 條件運算(三目運算) ? :
15 賦值運算 =、+=、-=、*=、/=、%=
16 位賦值運算 &=、|=、^=、~=、<<=、>>=、>>>=

標識符的命名規則和規範

標識符概念

  1. Java 對各種變數、方法和類等命名時使用的字元序列稱為標識符
  2. 凡是自己可以起名字的地方都叫標識符int num1 I= 90;

標識符的命名規則(必須遵守)

  1. 由26個英文字母大小寫,0-9,或$組成
  2. 數字不可以開頭。int 3ab = 1;//錯誤
  3. 不可以使用關鍵字和保留字,但能包含關鍵字和保留字(l例如:aclasss)
  4. Java中嚴格區分大小寫,長度無限制。int totalNum = 10; int n = 90;
  5. 標識符不能包含空格。int a b = 90;

判斷下麵變數名是否正確

hsp //T
hsp12 //T
1hsp //F
h-s //F
x h //F
h$4 //T
class //F
int //F
double //F
public //F
static //F
goto //F
stu_name //F

標識符命名規範[更加專業]

  1. 包名:多單片語成時所有字母都小寫: aaa.bbb.ccc//比如com.hsp.crm
  2. 類名、介面名:多單片語成時,所有單詞的首字母大寫:XxxYyyZzz【大駝峰】
    比如:TankShotGame
  3. 變數名、方法名:多單片語成時,第一個單詞首字母小寫,第二個單詞開始每個單詞首字母大寫:xxxYyyZzz【小駝峰】
    比如:tankShotGame
  4. 常量名:所有字母都大寫。多單詞時每個單詞用下劃線連接:XXX_YYY_ZZZ
    比如:定義一個所得稅率TAX_RATE
  5. 後面我們學習到類,包,介面,等時,我們的命名規範要這樣遵守,更加詳細的看文檔。

鍵盤輸入語句

介紹

在編程中,需要接收用戶輸入的數據,就可以使用鍵盤輸入語句來獲取。
需要一個掃描器((對象),就是 Scanner

步驟:

  1. 導入該類的所在包,java.util.*
  2. 創建該類對象(聲明變數)
  3. 調用裡面的功能

案例演示:

​ 要求:可以從控制台接收用戶信息,【姓名,年齡,薪水】。

import java.util.Scanner;//表示把java.util下的Scanner類導人
public class Input{
    //編寫一個main方法
    public static void main(Stringl]args){
        //演示接受用戶的輸入//步驟
        //Scanner類表示簡單文本掃描器,在java.util包
        //1.引入/導入Scanner類所在的包
        //2.創建Scanner 對象, new創建一個對象,體會
        //myScanner就是Scanner類的對象
        Scanner myScanner = new Scanner(System.in);
        //3.接收用戶輸入了,使用相關的方法
        System.out.print1n("請輸入名字");
        //當程式執行到 next方法時,會等待用戶輸入~~~
        String name = myScanner.next();//接收用戶輸入字元串System.out.println("請輸入年齡");
        int age = myScanner.nextInt();//接收用戶輸入intSystem.out.println("請輸入薪水");
        double sal = myScanner.nextDouble();//接收用戶輸入doubleSystem.out.println("人的信息如下:");
        System.out.println("名字"+name+“年齡=”+age +“薪水=” +sal);
    }
}

進位

進位介紹
對於整數,有四種表示方式:

  1. 二進位:0,1,滿2進1.以Ob或0B開頭。
  2. 十進位:0-9,滿10進1。
  3. 八進位:0-7,滿8進1。以數字0開頭表示。
  4. 十六進位:0-9及A(10)-F(15),滿16進1.以0x或0X開頭表示。此處的A-F不區分大小寫。

舉例說明

int n1 = 0b1010;
int n2 =1010;
int n3 = 01010;
int n4 = 0x10101;
System.out.println("n1=" + n1);
System.out.println("n2=" + n2);
System.out.print1n("n3=" + n3);
System.out.println("n4=" + n4);

進位的轉換(基本功)

進位轉換的介紹

第一組:

  1. 二進位轉十進位

    0b1011=1*20+1*21+0*22+1*23=11

  2. 八進位轉十進位

    0234=4*80+3*81+2*82=4+24+128=156

  3. 十六進位轉十進位

    0x23A=10*160+3*161+2*162=10+48+512=570

第二組:

  1. 十進位轉二進位

    34/2=17...............0
    17/2=8.................1
    8/2=4....................0
    4/2=2....................0
    2/2=1....................0

    0b100010

  2. 十進位轉八進位

    131/8=16..............3
    16/8=2...................0

    0203

  3. 十進位轉十六進位

    237/16=14...............13------->D
    14-------->E

    0XED

第三組

  1. 二進位轉八進位

    0b11010101=>11(3) 010(2) 101(5)=>0325

  2. 二進位轉十六進位

    0b11010101=>1101(D) 0101(5)=0xD5

第四組

  1. 八進位轉二進位

    0x0237=2(010)3(011)7(111)=0b10011111

  2. 十六進位轉二進位

    0x23B=2(0010)3(0011)B(1011)=0B1000111011

二進位在運算中的說明

  1. 二進位是逢2進位的進位制,0、1是基本算符。

  2. 現代的電子電腦技術全部採用的是二進位,因為它只使用0、1兩個數字元號,非常簡單方便,易於用電子方式實現。電腦內部處理的信息,都是採用二進位數來表示的。 二進位(Binary) 數用0和1兩個數字及其組合來表示任何數。進位規則是"逢2進1",數字1在不同的位上代表不同的值,按從右至左的次序,這個值以二倍遞增。

原碼、反碼、補碼(重點難點)

網上對原碼,反碼,補碼的解釋過於複雜,我這裡精簡幾句話:對於有符號的而言:

  1. 二進位的最高位是符號位:0表示正數, 1表示負數(口訣: 0->0 1-> -)

  2. 正數的原碼,反碼,補碼都一樣(三碼合一)

  3. 負數的反碼=它的原碼符號位不變,其它位取反(0->1,1->0)

  4. 負數的補碼=它的反碼+1,負數的反碼=負數的補碼-1

  5. 0的反碼,補碼都是0

  6. java沒有無符號數,換言之, java中的數都是有符號的

  7. 在電腦運算的時候,都是以補碼的方式來運算的.

  8. 當我們看運算結果的時候,要看他的原碼

位運算

java中有7個位運算(&、|、^、~、>>.<<和>>>)

√分別是按位與&、按位或|、按位異或^,按位取反~,它們的運算規則是:

按位與&:兩位全為1,結果為1,否則為0
按位或|:兩位有一個為1,結果為1,否則為0
按位異或^:兩位一個為0,一個為1,結果為1,否則為0
按位取反~:0->1,1->0 (在代碼中~是對補碼進行操作)
比如: 2&3=? ~-2 =? ~2=? 2|3=? 2^3=?

√完成前面的案例!

●還有3個位運算符>>、<<和>>>,運算規則:

  1. 算術右移>>:低位溢出,符號位不變,並用符號位補溢出的高位
  2. 算術左移<<;符號位不變,低位補0
  3. >>>邏輯右移也叫無符號右移,運算規則是:低位溢出,高位補0
  4. 特別說明:沒有<<<符號

●應用案例

int a=1>>2;//1=>000000|01=>本質1/2/2=0

int c=1<<2;//1=>0000001|00=>本質1*2*2=4
●完成前面的案例

建議:講解的即可,不用再深入。

本章習題

  1. 計算下列表達式的結果

    10/3= 3 ; 10/5 = 2 ; 10%2=0 ; -10.5%3 = ?;

    解析:

    //a % b當a是小數時,公式=a - (int)a / b * b
    //-10.5%3 = -10.5 -(-10)/3 * 3 = -10.5 +9 = -1.5
    //註意:有小數運算,得到結果是近似值

  2. 試說出下麵代碼的結果

    int i=66;
    System.out.println(++i+i);//執行i=i+1=>i=67 =>134

  3. 在Java中,以下賦值語句正確的是(C D)。

    A) int num1=(int)"18"; //錯誤應該Integer.parselnt("18");
    B) int num2=18.0; //錯誤double,-> int
    C) double num3=3d; //ok
    D)double num4=8; //ok int -> double
    E) int i=48; char ch = i+1; //錯誤int ->char
    F) byte b = 19; short s = b+2; //錯誤int ->short

4.試寫出將String轉換成double類型的語句,以及將char類型轉換成String的語句,舉例說明即可,寫簡單代碼

String str = "18.8";1/註意字元串要可以被轉成double
double d1 = Double.parseDouble(str);

char c1 ='韓";
String str2 = c1+ "";


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 寫在前面 前些天看了一本漫畫,裡面一個老技術人員的話,讓我不自覺的想到很多東西。 是啊,有時候我們自認為的自我實現,其實就是在湊這個時代的熱鬧,每個時代都有自己的熱鬧,個人之於時代不過是浪花一朵朵。 但這並不能作為我們不去湊這個熱鬧的理由,你去湊時代的這個熱鬧,這個時代必會給予你獎勵,或早或晚,或大 ...
  • 1、Linux常用命令 1.1、Linux命令初體驗 在日常使用過程當中經常使用到的命令有如下幾種 命令 對應英文 作用 ls [目錄名] list 查看當前目錄下的內容 pwd print work directory 查看當前所在目錄 cd [目錄名] change directory 切換目錄 ...
  • 導讀: 本文主要介紹了快手的精排模型實踐,包括快手的推薦系統,以及結合快手業務展開的各種模型實戰和探索,全文圍繞以下幾大方面展開: 快手推薦系統 CTR模型——PPNet 多domain多任務學習框架 短期行為序列建模 長期行為序列建模 千億特征,萬億參數模型 總結和展望 -- 01 快手推薦系統 ...
  • SQL的約束 概述 概念:約束是作用於表中欄位上的規則,用於限制存儲表中的數據; 目的:保證資料庫中數據的正確性、有效性、完整性; 常見的約束分類: 約束 描述 關鍵字 非空約束 限制該欄位的數據不能為null not null 唯一約束 保證該欄位的所有數據都是唯一的、不重覆的 unique 主鍵 ...
  • 自定義封裝分頁器組件之前需要知道的數據: 1.當前的頁碼 2.總共多少條數據 3.每頁展示多少條數據 4.連續頁碼數(5|7) 5.總頁數 計算連續頁碼數的起始值和結束值 //通過計算屬性來計算出來 computed:{ startNumAndEndNum(){ //首先先結構出我們需要的值(當前頁 ...
  • 定義指令的變化 根據vue3文檔的描述 https://v3.cn.vuejs.org/guide/migration/introduction.html#%E6%B8%B2%E6%9F%93%E5%87%BD%E6%95%B0 自定義指令的 API 已更改為與組件生命周期一致。 且 binding ...
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 在地圖開發過程中,坐標的轉換是很常用的功能,國內的話一般西安80(EPSG:4610)、北京54(EPSG:2433)轉WGS84比較多,不同坐標系轉換,只要知道EPSG碼,通過 Openlayers 的方法就可以轉換。 但是,像國內商用 ...
  • 樣才能拿到大廠的offer,沒有掌握絕對的技術,那麼就要不斷的學習 他是如何拿下阿裡等大廠的offer的呢,今天分享他的秘密武器,美團資深架構師整理的Java核心知識點,面試時面試官必問的知識點,篇章包括了很多知識點,其中包括了有基礎知識、Java集合、JVM、多線程併發、spring原理、微服務、 ...
一周排行
    -Advertisement-
    Play Games
  • public static void GetRegistData() { string name = "huishuangzhu"; //搜索到註冊表根目錄 RegistryKey hkml = Registry.ClassesRoot; //搜索到註冊表根目錄下的XXX文件夾。 RegistryK ...
  • 用acme.sh自動部署功能變數名稱證書 安裝ACME 目前使用量最大的免費SSL證書就是Let’s Encrypt,自2018-03開始,Let’s Encrypt官方發佈上線了免費的SSL泛功能變數名稱證書,目前通過DNS方式獲取比較快,國內可以通過鵝雲的DNSPod功能變數名稱API或者貓雲功能變數名稱API自動簽發Let’ ...
  • 經常看到有群友調侃“為什麼搞Java的總在學習JVM調優?那是因為Java爛!我們.NET就不需要搞這些!”真的是這樣嗎?今天我就用一個案例來分析一下。 昨天,一位學生問了我一個問題:他建了一個預設的ASP.NET Core Web API的項目,也就是那個WeatherForecast的預設項目模 ...
  • 1、環境搭建 1.1 依賴 <!-- nacos註冊中心 註解 @EnableDiscoveryClient --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba- ...
  • ULID:Universally Unique Lexicographically Sortable Identifier(通用唯一詞典分類標識符) UUID:Universally Unique Identifier(通用唯一標識符) 為什麼不選擇UUID UUID 目前有 5 個版本: 版本1: ...
  • 虛基類/抽象類 抽象類:有純虛函數的類 虛繼承 通過修飾繼承方式, 如代碼2是虛繼承,被虛繼承的類稱為虛基類 虛繼承派生類的記憶體佈局方式 先是vbptr => 派生類的數據 =>基類的數據 , 對比代碼1和代碼2,發現原本基類數據在前面,派生類數據在後面,但是在虛繼承的時候 基類數據方式放到了後面, ...
  • 下麵給出 Kafka 一些重要概念,讓大家對 Kafka 有個整體的認識和感知,後面還會詳細的解析每一個概念的作用以及更深入的原理 • Producer:消息生產者,向 Kafka Broker 發消息的客戶端。 • Consumer:消息消費者,從 Kafka Broker 取消息的客戶端。 • ...
  • 前面介紹了對稱加密演算法,本文將介紹密碼學中另一類重要應用:消息摘要(Digest),什麼是消息摘要?簡單的定義是:對一份數據,進行一個單向的Hash函數,生成一個固定長度的Hash值,這個值就是這份數據的摘要,也稱為指紋。 ...
  • 弟弟最近要考試,臨時抱佛腳在網上找了一堆學習資料複習,這不剛就來找我了,說PDF上有水印,影響閱讀效果,到時候考不好就怪資料不行,氣的我差點當場想把他揍一頓! 算了,弟弟長大了,看在打不過他的份上,就不打他了~ 稍加思索,我想起了Python不是可以去水印?說搞就搞! 去除水印原理 去除方法: 用 ...
  • 作者:陳昌浩 1 導讀 if…else…在代碼中經常使用,聽說可以通過Java 8的Function介面來消滅if…else…!Function介面是什麼?如果通過Function介面介面消滅if…else…呢?讓我們一起來探索一下吧。 2 Function介面 Function介面就是一個有且僅有 ...