计算机、程序和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 @ 2021-02-08 10:22  Felix_Openmind  阅读(76)  评论(0)    收藏  举报
*{cursor: url(https://files-cdn.cnblogs.com/files/morango/fish-cursor.ico),auto;}