20165104-JAVA第三次實驗

來源:互聯網
上載者:User

標籤:org   set   ide   實驗報告   使用   重點   分享   master   http   

20165104-JAVA第三次實驗一、實驗目的與要求
  • 完成實驗、撰寫實驗報告,注意實驗報告重點是運行結果,遇到的問題以及分析
  • 實驗報告中統計自己的PSP(Personal Software Process)時間
  • 掌握使用IDEA完成基礎編程與程式調試的能力
二、實驗內容XP基礎XP核心實踐相關工具三、實驗步驟安裝alibaba 外掛程式,解決代碼中的規範問題
  • 開啟Settings ->Plugins -> Browse repositories...在搜尋方塊輸入alibaba即可看到Alibaba Java Code Guidelines外掛程式,點擊Install進行安裝,然後重啟IDEA生效
  • 在IDEA左目錄欄裡右鍵.java檔案表徵圖,選擇編碼約規掃描,然後根據下方報錯裡修改自己的代碼格式。
  • 規範例代碼

學習Code菜單
使用Code->Reformate Code,將代碼格式化

與搭檔互相加入項目

  • 修改與編輯操作
    與原來對自己的項目操作相同,改好後主要以標註修改內容,上傳
  • 實驗:
重構
  • 重新命名:對類,介面,方法,屬性等重新命名,以使得更易理解
  • 抽取代碼:將方法內的一段代碼抽取為另一個方法,以使得該段代碼可以被其他方法調用,這是重構中很重要很常用的,此舉可以極大的精鍊代碼,減少方法的程式碼數
  • 封裝欄位:將類的某個欄位轉換成屬性,可以更加合理的控制欄位的訪問
  • 抽取介面:將類的某些屬性,方法抽取組成個介面,該類自動實現該介面
  • 提升方法內的局部變數為方法的參數:這主要是在寫代碼的過程中會使用到
  • 刪除參數:將方法的一個或多個參數刪掉
  • 重排參數:將方法的參數順序重新排列
  • 實驗如下:
Java與密碼學學習體驗加解密---凱撒密碼
  • 重構後的代碼為:
public class Caesar{    public static void main(String []args) throws Exception{        String s=args[0];        int key=Integer.parseInt(args[1]);        String es="";        for(int i=0;i<s.length( );i++)        {  char c=s.charAt(i);            // 是小寫字母            c = getC(key, c);            es+=c;        }        System.out.println(es);    }    private static char getC(int key, char c) {        if(c>=‘a‘ && c<=‘z‘) {            //移動key%26位            c = move(key, c);            if(c<‘a‘) {                //向左超界                c = changeCplus(c);            }            if(c>‘z‘) {                //向右超界                c = changeCminus(c);            }        }        // 是大寫字母        else if(c>=‘A‘ && c<=‘Z‘) {            c = move(key, c);            if(c<‘A‘) {                c = changeCplus(c);            }            if(c>‘Z‘) {                c = changeCminus(c);            }        }        return c;    }    private static char changeCminus(char c) {        c -= 26;        return c;    }    private static char changeCplus(char c) {        c += 26;        return c;    }    private static char move(int key, char c) {        c+=key%26;        return c;    }}
  • 實驗結果:
Java摘要演算法- MD5

使用Java計算指定字串的訊息摘要。
java.security包中的MessageDigest類提供了計算訊息摘要的方法,

首先產生對象,執行其update()方法可以將未經處理資料傳遞給該對象,然後執行其digest( )方法即可得到訊息摘要。具體步驟如下:

(1) 產生MessageDigest對象
MessageDigest m=MessageDigest.getInstance("MD5");
分析:和2.2.1小節的KeyGenerator類一樣。MessageDigest類也是一個工廠類,其構造器是受保護的,不允許直接使用new MessageDigist( )來建立對象,而必須通過其靜態方法getInstance( )產生MessageDigest對象。其中傳入的參數指定計算訊息摘要所使用的演算法,常用的有"MD5","SHA"等。若對MD5演算法的細節感興趣可參考http://www.ietf.org/rfc/rfc1321.txt。

(2) 傳入需要計算的字串
m.update(x.getBytes("UTF8" ));
分析:x為需要計算的字串,update傳入的參數是位元組類型或位元組類型數組,對於字串,需要先使用getBytes( )方法產生字串數組。

(3) 計算訊息摘要
byte s[ ]=m.digest( );
分析:執行MessageDigest對象的digest( )方法完成計算,計算的結果通過位元組類型的數組返回。

(4) 處理計算結果
必要的話可以使用如下代碼將計算結果s轉換為字串。

String result="";for (int i=0; i<s.length; i++){       result+=Integer.toHexString((0x000000ff & s[i]) | 0xffffff00).substring(6);  }
  • 重構代碼:
import java.security.*;public class DigestPass{    public static void main(String[ ] args) throws Exception{        String x = getString(args[0]);        MessageDigest m=MessageDigest.getInstance("MD5");        m.update(x.getBytes("UTF8"));        byte[] s = getDigest(m);        String result="";        for (int i=0; i<s.length; i++){            result+= getString(s[i]).substring(6);        }        System.out.println(result);    }    private static String getString(byte b) {        return Integer.toHexString((0x000000ff & b) |                0xffffff00);    }    private static byte[] getDigest(MessageDigest m) {        return m.digest();    }    private static String getString(String arg) {        return arg;    }}

碼雲連結

20165104-JAVA第三次實驗

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.