计算机、程序和Java概述

经验:问题解决过程中的积累而得到的!

计算机:存储和处理数据的电子设备

中央处理器(Central Processing Unit)

CPU的两个部分:控制单元(control unit) & 算术/逻辑单元(arithmetic/logic unit)

每个计算机都有一个内部时钟,以固定速度发射电子脉冲。脉冲用于控制和同步各种操作的步调。
时钟速度的计量单位:赫兹(Hz) - 1赫兹就是每秒1个脉冲
目前现代计算机速度单位:千兆赫兹(GHz) eg: 1GHz = 1000MHz = 1000 * 100万Hz

计算机内核:实现指令的读取和执行的部分

比特和字节

在计算机中有一系列电路开关而开关存在两种状态:关(off) -> 1 和 开(on)->0

bit: 数据组成最小单位 Byte: 数组组成最基本单位
1bit = 8 Byte (b B K M G T ..)
编码模式是一系列的规则,控制计算机将字符、数字和符号翻译成计算机可以实际工作的数据。

内存(RAM - Random Access Memory)

内存由一个个有序的字节序列组成
程序和数据在被CPU执行之前必须移动到计算机内存之中。

常见的计算机设备: USB(Universal Serial Bus)、keyboard、mouse、monitor、printer

显示器的质量以屏幕分辨率和点距来决定
点距: 像素之前的距离(毫米) 。 点距越小,显示效果越好!

操作系统

操作系统是计算机内部最重要的程序,管理和控制计算机活动。

多道程序设计(multiprogramming) -> 允许多个程序同时使用CPU
多线程(multithreading) -> 允许单个程序同时执行多个任务
多处理(parallel processing) -> 并行处理任务(宏观并行微观串行)

Java语言特性

  • simple、object-oriented、distributed、architecture neutral(体系结构中立的)、portable、high performance、secure、robust

TestDemo.java => javac TestDemo.java -> TestDemo.class => java TestDemo【JVM中】

执行具体过程:

  1. JVM用一个称为类加载器(class loader)的程序将类的字节码加载到内存中
  2. 加载该类之后,JVM使用一个字节码验证(bytecode verifier)的程序来检验字节码的合法性

程序设计错误

  • 语法错误(syntax error) - 编译型错误
  • 运行错误(runtime error) - 运行时错误
  • 逻辑错误(logic error) - 对业务逻辑掌握不清导致的错误

课后习题

以英里计算平均速度和以公里计算平均速度
假设一个跑步者45分钟30秒内跑了14公里。编写一个程序显示以每小时多少英里为单位的平均速度值。(1英里=1.6公里)
假设一个跑步者1小时40分钟35秒内跑了24英里。编写一个程序显示以每小时多少公里为单位的平均速度值。(1英里=1.6公里)

package ink.baselearn.unit01;
/**
* ClassName: Demo02
* Function:
* Date: 2021/2/8 9:14 上午
* author Wangzhuang2
* version V1.0
* TODO:
*/
class ConversionUtil {
private static final double TIME_CONVERTION_UNIT = 60.0;
private static final double DISTANCE_CONVERSION_UNIT = 100.0;
private static final double KILOMETER_AND_MILE_CONVERSION_UNIT = 1.6;
private ConversionUtil() {
}
// the conversion of distance
/**
* mile convert into kilometer
*
* @param arg the mile
*/
static double getKilometerFromMile(double arg) {
return arg * 1.6;
}
/**
* kilometer convert into mile
*
* @param arg the kilometer
*/
static double getMileFromKilometer(double arg) {
return arg / 1.6;
}
// the conversion of time
/**
* second convert into minute
*
* @param arg the second
*/
static double getMinuteFromSecond(int arg) {
return arg / TIME_CONVERTION_UNIT;
}
/**
* minute convert into hour
*
* @param arg the minute
*/
static double getHourFromMinute(int arg) {
return arg / TIME_CONVERTION_UNIT;
}
/**
* second convert into hour
*
* @param arg the second
*/
static double getHourFromSecond(int arg) {
return arg / TIME_CONVERTION_UNIT / TIME_CONVERTION_UNIT;
}
static double getEstimatedNum(double arg, int scale) {
// reserve scale units
return Math.round(arg * (Math.pow(10, scale))) / Math.pow(10, scale);
}
}
public class Demo02 {
public static void main(String[] args) {
Demo02 demo02 = new Demo02();
String averageSpeedPerHourInMileUnit = demo02.getAverageSpeedPerHourInMileUnit(0, 45, 30, 14);
System.out.println("平均速度:" + averageSpeedPerHourInMileUnit);
String averageSpeedPerHourInKilometerUnit = demo02.getAverageSpeedPerHourInKilometerUnit(1, 40, 35, 24);
System.out.println("平均速度:" + averageSpeedPerHourInKilometerUnit);
}
String getAverageSpeedPerHourInMileUnit(int hour, int minute, int second, int distanceInKilometerUnit) {
double timeInHourUnit = hour + ConversionUtil.getHourFromMinute(minute) + ConversionUtil.getHourFromSecond(second);
double distanceInMileUnit = ConversionUtil.getMileFromKilometer(distanceInKilometerUnit);
return ConversionUtil.getEstimatedNum(distanceInMileUnit / timeInHourUnit, 2) + " mile/h";
}
String getAverageSpeedPerHourInKilometerUnit(int hour, int minute, int second, int distanceInMileUnit) {
double timeInHourUnit = hour + ConversionUtil.getHourFromMinute(minute) + ConversionUtil.getHourFromSecond(second);
double distanceInKilometerUnit = ConversionUtil.getKilometerFromMile(distanceInMileUnit);
return ConversionUtil.getEstimatedNum(distanceInKilometerUnit / timeInHourUnit, 2) + " kilometer/h";
}
}
posted @   Felix_Openmind  阅读(73)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
*{cursor: url(https://files-cdn.cnblogs.com/files/morango/fish-cursor.ico),auto;}
点击右上角即可分享
微信分享提示