20155213 2016-2017-2 《Java程序設計》第二週學習總結

20155213 2016-2017-2 《Java程序設計》第二週學習總結

教材學習內容總結

關於Unicode和UTF

很抱歉,沒能讀完婁老師推薦的網址,關於Unicode和UTF的介紹,裏面全是繁體字Unicode和UTF,我繼而求助了百度百科,下面是百度上的解釋:html

  • Unicode(統一碼、萬國碼、單一碼)是計算機科學領域裏的一項業界標準,包括字符集、編碼方案等。Unicode是爲了解決傳統的字符編碼方案的侷限而產生的,它爲每種語言中的每一個字符設定了統一而且惟一的二進制編碼,以知足跨語言、跨平臺進行文本轉換、處理的要求。1990年開始研發,1994年正式公佈。
  • UTF-8(8-bit Unicode TransformationFormat)是一種針對Unicode的可變長度字符編碼,又稱萬國碼。由KenThompson於1992年建立。如今已經標準化爲RFC3629。UTF-8用1到4個字節編碼Unicode字符。用在網頁上能夠統一頁面顯示中文簡體繁體及其它語言(如英文,日文,韓文)。
  • UTF-16是Unicode字符編碼五層次模型的第三層:字符編碼表(CharacterEncodingForm,也稱爲"storageformat")的一種實現方式。即把Unicode字符集的抽象碼位映射爲16位長的整數(即碼元)的序列,用於數據存儲或傳遞。Unicode字符的碼位,須要1個或者2個16位長的碼元來表示,所以這是一個變長表示。

就個人理解,Unicode是一種標準,一種規範計算機上字符的書寫與二進制編碼轉換的標準,共有17組編排,0x0000 至 0x10FFFF
基本涵蓋了世界上全部語言字符和特殊字符,以後的UTF-8,UTF-16都是由此延伸出來的編碼方案,其中UTF是有1個字節到4個字節來編碼字符,我們網站上的字符形式就是那樣的,凡有過編寫網站經歷的,都在裏面寫過<meta charset="UTF-8"/>而UTF-16則是一概以二字節存儲,特別的java用的是Unicode編碼,而JVM用的是UTF-16編碼。java

java語法知識與C語言基本語法知識對比

在還沒涉及到類和對象的時候,java語法和C語言語法大同小異git

java語法 C語言語法
輸入 輸入很複雜,其中簡單的從鍵盤上輸入一個字符System.in.read() scanf()基本上包羅了全部形式輸入
輸出 System.out.print() printf()
輸出鏈接符 「+」號 「,」或者沒有
定義常量 final double PI=3.14 能夠預約義#define PI 3.14也能夠const double PI=3.14

教材學習中的問題和解決過程

  • 問題:怎麼比較兩個float型數?
  • 答:和C語言裏類似,由於float型只定義到小數點後六位,因而對於兩個float數m、n和boolean數BB=(m-n>=1e-6)若是B=1則m>=n,不然m<n。
  • 問題:java語言怎麼從鍵盤輸入?
  • 答:這是一個很複雜的問題,不像C語言,片言隻語能夠解釋,這就已經和java裏的類和對象扯上關係了。我們能夠從這個網站上java類簡單學習一下類的概念,不過挺多的,簡而言之就是先建立一個類,在用這個類在main路徑上定義個對象,瞭解了這些後,在看下java輸入中的三個輸入方式,這樣就基本上學好了C語言裏一個scanf()函數就能完成的功能。

代碼調試中的問題和解決過程

對於初期的代碼學習,其實也就是逐字逐詞輸入,只有要注意的地方:github

  • 文件名要和類的名字保持一致;
  • 若是一個main路徑的類,須要調用已存在的類,爲了方便要在代碼前加上import ···,以減小後續代碼的重複輸入某詞,若是須要調用本身建立的類,則須要保證類的命名不能重複已存在的任何類;
  • 類和通常操做之間要有.間隔;
  • 對於private類裏面的變量,須要裏面的操做才能賦值,類外沒法對其進行賦值;
  • 其餘須要注意的點和C語言差很少。

代碼託管

  • 代碼提交過程截圖

  • 代碼量截圖:

上週考試錯題總結

卷一,第十六題

  • Linux Bash中,查找home目錄中昨天建立的文件的命令是(find ~ -ctime 1),我從新查找學習了find指令,以及選項ctime.
  • amin n 查找系統中最後N分鐘訪問的文件
  • atime n 查找系統中最後nx24小時訪問的文件
  • cmin n 查找系統中最後N分鐘被改變文件狀態的文件
  • ctime n 查找系統中最後nx24小時被改變文件狀態的文件
  • mmin n 查找系統中最後N分鐘被改變文件數據的文件
  • mtime n 查找系統中最後n*24小時被改變文件數據的文件編程

    卷二,第三題

  • 德雷福斯技能學習模型把技能獲取分爲五個階段:新手、高級新手、勝任者、精通者、專家,其中( 新手 )不能離開詳細的指令。
  • 這五個階段,新手須要大量的指令,而大部分人都處在勝任者。服務器

卷二,第二十八題

  • git log 命令來查看(提交歷史)。
  • 以後我有查找了寫關於git的相關指令
git指令 用途
git clone 以gitreadonly方式克隆到本地,只能夠讀
git pull 獲取併合並內容到本地
git add 添加文件到本地倉庫
git rm 本地倒庫內刪除
git commit -m "first commit" 提交到本地庫並備註,此時變動仍在本地
git commit -a 自動更新變化的文件,a能夠理解爲auto
git remote add xxx git@github.com:xxx/xxx.git 增長一個遠程服務器的別名
git remote rm xxx 刪除遠程版本庫的別名
git push -u remotename master 將本地文件提交到Github的remoname版本庫中。此時才更新了本地變動到github服務上。

其餘(感悟、思考等,可選)

學習是一個積累的過程,是一個按部就班的過程,而實踐更須要有足夠的毅力和勇氣去試錯,去長記性。每個字符,每一行代碼都是進步,即使是刪除的那部分。我目前已經實現兩位數的加減乘除,從帶着C語言的餘味到品嚐到java的新味,確實很不賴,下面是我這一個星期的過程與成果:函數

public class Number{
   public static void main(String[] args){
     System.out.println("a="+3+",b="+4);
}
}
import java.io.BufferedReader;    
import java.io.IOException;    
import java.io.InputStreamReader;    
import java.util.Scanner;
class Two{
   int fir;
   int sec;
   Two(int a,int b){
  fir=a;
  sec=b;
  }
int add(){
     return fir+sec;
}
int sub(){
     return fir-sec;
}
int mul(){
     return fir*sec;
}
int div(){
    return fir/sec;
}
}
public class Caculate{
   public static void main(String[] args){
    Two mytwo=new Two(12,4);
    int result=mytwo.add();
    try{System.out.println("Please input '+' '-' '*' '/'");
    System.out.print("Enter a Char:");   
      char c = (char)System.in.read();


   if(c=='+')  System.out.println("12+4="+result);  
   if(c=='-')  System.out.println("12-4="+mytwo.sub());
    if(c=='*') System.out.println("12*4="+mytwo.mul());
    if(c=='/') System.out.println("12/4="+mytwo.div());}
catch(IOException e){   
      e.printStackTrace();   
    }
}
}
import java.io.BufferedReader;    
import java.io.IOException;    
import java.io.InputStreamReader;    
import java.util.Scanner;
class Two1{
   int fir;
   int sec;
   Two1(){
Scanner sc=new Scanner(System.in);
  System.out.print("Enter a Number:");
     fir = sc.nextInt();
    System.out.print("Enter another Number:");
     sec = sc.nextInt();   
}
int add(){
     return fir+sec;
}
int sub(){
     return fir-sec;
}
int mul(){
     return fir*sec;
}
int div(){
    return fir/sec;
}
}
public class Caculate01{
   public static void main(String[] args){
    Two1 mytwo1=new Two1();
    int result=mytwo1.add();
    try{System.out.println("Please input '+' '-' '*' '/'");
    System.out.print("Enter a Char:");   
      char c = (char)System.in.read();
   if(c=='+')  System.out.println(mytwo1.fir+"+"+mytwo1.sec+"="+result);  
   if(c=='-')  System.out.println(mytwo1.fir+"-"+mytwo1.sec+"="+mytwo1.sub());
    if(c=='*') System.out.println(mytwo1.fir+"*"+mytwo1.sec+"="+mytwo1.mul());
    if(c=='/') System.out.println(mytwo1.fir+"/"+mytwo1.sec+"="+mytwo1.div());}
catch(IOException e){   
      e.printStackTrace();   
    }
}
}

下面是用用switch語句優化後的:學習

import java.io.BufferedReader;    
import java.io.IOException;    
import java.io.InputStreamReader;    
import java.util.Scanner;
class Two1{
   int fir;
   int sec;
   Two1(){
Scanner sc=new Scanner(System.in);
  System.out.print("Enter a Number:");
     fir = sc.nextInt();
    System.out.print("Enter another Number:");
     sec = sc.nextInt();   
}
int add(){
     return fir+sec;
}
int sub(){
     return fir-sec;
}
int mul(){
     return fir*sec;
}
int div(){
    return fir/sec;
}
}
public class Caculate01{
   public static void main(String[] args){
    Two1 mytwo1=new Two1();
    int result=mytwo1.add();
    try{System.out.println("Please input '+' '-' '*' '/'");
    System.out.print("Enter a Char:");   
      char c = (char)System.in.read();
      switch(c){
   case '+':  System.out.println(mytwo1.fir+"+"+mytwo1.sec+"="+result);  break;
   case '-' : System.out.println(mytwo1.fir+"-"+mytwo1.sec+"="+mytwo1.sub());break;
    case '*': System.out.println(mytwo1.fir+"*"+mytwo1.sec+"="+mytwo1.mul());break;
    case '/': System.out.println(mytwo1.fir+"/"+mytwo1.sec+"="+mytwo1.div());break;
    default :
    System.out.println("Error input!");}
    }
catch(IOException e){   
      e.printStackTrace();   
    }
}
}

最終能達到的效果是:優化

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第二週 98/100 1/1 30/38 已經對java的編程有個大致認識,以及對類和對象有了基本的認識

參考資料

相關文章
相關標籤/搜索