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的能够“一次编译,到处运行”的原因。
  • JavaSE之计算机基础_第1张图片

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);
	}
}

你可能感兴趣的:(学习笔记啊,JavaDay01)