JavaSE之計算機基礎

1.1什麼是計算機

計算機是由軟件和硬件組成。計算機的主要硬件有中央處理器,內存,存儲設備,輸入設備,輸出設備,通信設備組成。

  • 中央處理器:是計算機的大腦。它從內存中獲取信息然後執行這些指令。CPU由兩部分組成:控制單元(control unit)和算術邏輯單元(arithmetic/logic unit)。控制單元用於控制和協調其他組件的動作。算術邏輯單元用於完成數值運算和邏輯運算。
  • 比特和字節:在計算機中數據和程序存儲在計算機中就是一系列的電路開關表示。0和1成爲比特。在計算機中最小存儲單元是字節。1byte=8bit=1B
  • 內存:由一個有序的字節序列組成,用於存儲程序和程序的數據。一個程序和它的數據在被CPU執行前必須移到計算機的內存中。每個字節都有唯一的地址,使用這個地址確定字節的位置以便存儲和獲取數據。因爲可以按照任意順序存取字節,所以內存也被稱爲RAM(Random-Access Memory),現在有4GB或者8GB。
  • 存儲設備:有三種類型磁盤驅動器,光盤驅動器,USB閃存驅動器。計算機內存RAM是一種易失的數據保存形式:斷電時存儲在內存中的信息就會丟失。程序和數據被永久的保存在存儲設備上,當計算機確實要使用它們時再移入內存因爲內存存取比存儲設備快的多。
  • 輸入輸出設備:讓用戶可以與計算機通信。常用的輸入設備是鼠標鍵盤;常用的輸出設備是顯示器和打印機。
  • 通信設備:計算機可以通過通信設備進行聯網。撥號調制解調器:使用的是電話線。DSL:數字用戶線,使用的也是標準電話線,但是比撥號調制解調器傳輸速度快20倍。網絡接口卡:是將計算機接入局域網的設備。

1.2什麼是軟件開發

  • 軟件定義:是指一些列按照特定順序組織的計算機數據與指令的集合。數據:能夠被計算機所識別的都是數據 avi mp3 txt png.指令:計算機的操作步驟。軟件其實就是人與計算機的之間的溝通媒介。
  • 軟件分類:系統軟件和操作軟件。
    系統軟件:一般指的是操作系統 Windows Andriod Linux MAC IOS.主要負責管理和控制計算機底層硬件,爲人類提供最基本的計算機功能。(用C/C++實現)
    應用軟件:迅雷 QQ 微信 優酷 愛奇藝 支付寶。主要處理某一些特殊領域問題的軟件。(用java/Python/C#實現)
  • 軟件開發:
    -需求分析
    1.相關係統分析員向用戶初步瞭解需求,然後用相關的工具軟件列出要開發的系統的大功能模塊,每個大功能模塊有哪些小功能模塊,對於有些需求比較明確相關的界面時,在這一步裏面可以初步定義好少量的界面。
    2.系統分析員深入瞭解和分析需求,根據自己的經驗和需求用WORD或相關的工具再做出一份文檔系統的功能需求文檔。這次的文檔會清楚列出系統大致的大功能模塊,大功能模塊有哪些小功能模塊,並且還列出相關的界面和界面功能。
    3.系統分析員向用戶再次確認需求。
    -概要設計
    首先,開發者需要對軟件系統進行概要設計,即系統設計。 概要設計需要對軟件系統的設計進行考慮,包括系統的基本處理流程、系統的組織結構、模塊劃分、功能分配、接口設計、運行設計、數據結構設計和出錯處理設計等,爲軟件的詳細設計提供基礎。
    -詳細設計
    在概要設計的基礎上,開發者需要進行軟件系統的詳細設計。在詳細設計中,描述實現具體模塊所涉及到的主要算法、數據結構、類的層次結構及調用關係,需要說明軟件系統各個層次中的每一個程序(每個模塊或子程序)的設計考慮,以便進行編碼和測試。應當保證軟件的需求完全分配給整個軟件。詳細設計應當足夠詳細,能夠根據詳細設計報告進行編碼。
    -編碼
    在軟件編碼階段,開發者根據《軟件系統詳細設計報告》中對數據結構、算法分析和模塊實現等方面的設計要求,開始具體的編寫程序工作,分別實現各模塊的功能,從而實現對目標系統的功能、性能、接口、界面等方面的要求。在規範化的研發流程中,編碼工作在整個項目流程裏最多不會超過1/2,通常在1/3的時間,所謂磨刀不誤砍柴功,設計過程完成的好,編碼效率就會極大提高,編碼時不同模塊之間的進度協調和協作是最需要小心的,也許一個小模塊的問題就可能影響了整體進度,讓很多程序員因此被迫停下工作等待,這種問題在很多研發過程中都出現過。編碼時的相互溝通和應急的解決手段都是相當重要的,對於程序員而言,bug永遠存在,你必須永遠面對這個問題,大名鼎鼎的微軟,可曾有連續三個月不發補丁的時候嗎?從來沒有!
    -測試
    測試編寫好的系統。交給用戶使用,用戶使用後一個一個的確認每個功能。軟件測試有很多種:按照測試執行方,可以分爲內部測試和外部測試;按照測試範圍,可以分爲模塊測試和整體聯調;按照測試條件,可以分爲正常操作情況測試和異常情況測試;按照測試的輸入範圍,可以分爲全覆蓋測試和抽樣測試。以上都很好理解,不再解釋。總之,測試同樣是項目研發中一個相當重要的步驟,對於一個大型軟件,3個月到1年的外部測試都是正常的,因爲永遠都會有不可預料的問題存在。完成測試後,完成驗收並完成最後的一些幫助文檔,整體項目纔算告一段落,當然日後少不了升級,修補等等工作,只要不是想通過一錘子買賣騙錢,就要不停的跟蹤軟件的運營狀況並持續修補升級,直到這個軟件被徹底淘汰爲止。
    -軟件交付
    在軟件測試證明軟件達到要求後,軟件開發者應向用戶提交開發的目標安裝程序、數據庫的數據字典、《用戶安裝手冊》、《用戶使用指南》、需求報告、設計報告、測試報告等雙方合同約定的產物。用戶安裝手冊》應詳細介紹安裝軟件對運行環境的要求、安裝軟件的定義和內容、在客戶端、服務器端及中間件的具體安裝步驟、安裝後的系統配置。《用戶使用指南》應包括軟件各項功能的使用流程、操作步驟、相應業務介紹、特殊提示和注意事項等方面的內容,在需要時還應舉例說明。
    -驗收
    用戶驗收。
    -維護
    根據用戶需求的變化或環境的變化,對應用程序進行全部或部分的修改。

1.3什麼是計算機語言

  • 人類語言:人類的交流語言,中文英文…。計算機不理解人類的語言,所以,計算機程序必須使用計算機可以使用的語言編寫。
  • 機器語言:計算機的原生語言,即一套內嵌的原子指令集。因爲這些指令都是以二進制的形式存在。
  • 彙編語言:最爲機器語言的替代品,使用短的描述性單詞(稱爲助記符來表示每一條機器語言的指令)由於計算機不理解彙編語言的,所以需要使用一種稱爲彙編器的程序將彙編語言程序轉換爲機器代碼,但還是很不方便。
    例如,add 2,3 ,result----->彙編器------>機器代碼文件
  • 高級語言:很像英語,易於學習和使用,高級語言中的指令稱爲語句。高級語言的程序稱爲源程序或源代碼。由於計算機不能直接運行源程序,源程序必須翻譯爲機器代碼。翻譯可以由另一種稱爲解釋器或者編譯器的編程工具來完成。
    高級語言源程序文件------>解釋器------->輸出
    (解釋器一次翻譯並且執行程序的一條語句:C.JAVA)
    高級語言源文件------>編譯器------->機器代碼文件----->執行器---->輸出
    (編譯器將整個源程序翻譯爲機器語言文件運行:Python)

1.4什麼是Java語言

  • Java語言簡介:是一種功能強大和多用途的編程語言,可用於開發運行在移動設備,臺式計算機以及服務器端的組件。
  • Java三大體系
    JavaSE Java Standard Edition Java標準版
    桌面應用程序
    JavaEE Java Enterprise Edition Java企業版
    服務器軟件開發
    JavaME Java Micro Edition Java微型版-Android
    電子消費類產
  • JRE:JavaRuntimeEnvironment,即就是Java的運行環境 JRE=JVM+核心類庫(圖書館)
  • JDK:Java Development Kit,java開發工具包
    JDK=開發工具+JRE
    所以你裝了JDK相當於裝了JRE,JVM。
  • JVM:JVM是Java Virtual Machine(Java虛擬機)的縮寫,Java語言的一個非常重要的特點就是跨平臺性。而使用Java虛擬機是實現這一特點的關鍵。一般的高級語言如果要在不同的平臺上運行,至少需要編譯成不同的目標代碼。而引入Java語言虛擬機後,Java語言在不同平臺上運行時不需要重新編譯。Java語言編譯程序只需生成在Java虛擬機上運行的目標代碼(字節碼),就可以在多種平臺上不加修改地運行。Java虛擬機在執行字節碼時,把字節碼解釋成具體平臺上的機器指令執行。這就是Java的能夠“一次編譯,到處運行”的原因。
  • 在這裏插入圖片描述

1.5程序設計錯誤

程序設計錯誤可以分爲三類:語法錯誤,運行時錯誤,和邏輯錯誤。

  • 語法錯誤:在編譯過程中出現的錯誤,也稱編譯錯誤。語法錯誤是由創建代碼時的錯誤引起的例如拼錯關鍵字,忽略標點符號,,,,,這些錯誤一般編譯器會告訴你在哪,以及什麼原因造成的。
  • 運行時的錯誤:是引起程序非正常中斷的錯誤。運行應用程序時當環境檢測道一個不可能執行的操作時,就會出現運行時錯誤,輸入錯誤是典型的運行時的錯誤。
  • 邏輯錯誤:當程序沒有按預期的方式執行時就會發生。邏輯錯誤一般比較有挑戰性。

程序代碼練習

/*
 * 需求:求兩個數字的除法
 * 第一個數字:9.5*4.5-2.5*3
 * 第二個數字:45.5-3.5
 * 1/2
 * */
public class Demo1_1 {
	public static void main(String[] args){
		System.out.println((9.5*4.5-2.5*3)/(45.5-3.5));
	}
}==========================================
/*求和1-9*/
public class Demo1_2 {
	public static void main(String[] args){
		//冗餘
		System.out.println(1+2+3+4+5+6+7+8+9);
		//重複步驟-循環解決
	}
}================================================
/*
求和4*(1-1/3+1/5-1/7+1/9)*/
public class Demo1_3 {
	public static void main(String[] args) {
		double sum=1;
		Scanner sc=new Scanner(System.in);
		System.out.println("請輸入項數:");
		int n=sc.nextInt();
		int flag=-1;
		for(int i=1;i<n;i++){
			double result=(1.0*flag)/(2*i+1);
			sum=sum+result;
			flag=1;
		}
		System.out.println(4*sum);
	}===================================================
/*
 * 數據:半徑 面積 周長 圓周率
 * s=πr^2
 * l=2πr 
 * */
public class Demo1_4 {
	public static void main(String[] args){
		//數據 避免死數據 -輸入 
		System.out.println(2*10*3.14);
		System.out.println(10*10*3.14);
	}
}====================================================
/*
數據:時間 長度 
指令:v=s/t
s=14公里->14/1.6
t=45*60+30
v 英里/秒     3/1
 * */
public class Demo1_5 {
	public static void main(String[] args) {
		System.out.println(3600*(14/1.6)/(45*60+30)+"英里/時");
	}
}================================================

public class Demo1_6 {
	public static void main(String[] args) {
		System.out.println(3600*24*1.6/(1*60*60+40*60+35)+"公里/時");
		
	}
}==================================================
/*使用Cramer規則解方程組
*/
public class Demo1_7 {
	public static void main(String[] args) {
		System.out.println("x="+(44.5*0.55-50.2*5.9)/(3.4*0.55-50.2*2.1));
	}
}================================================
/*
 * 365天->秒 365*24*60*60
 * 312032486+365*24*60*60/7-365*24*60*60/13+365*24*60*60/45
*/
public class Demo1_8 {
	public static void main(String[] args) {
		System.out.println(312032486+365*24*60*60/7-365*24*60*60/13+365*24*60*60/45);
	}
}

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