第一章:计算机基础和java环境搭建

主要内容:了解软件开发行业,认识java熟悉windows操作系统。

一、你选择了正确的赛道

学习软件开发的原因有二:

第一是你穷,因为他是一个好的赚钱的工具,他能帮你快速的买房,起码是老家的房子;

第二是你爱,他是很多很有终其一生热爱的一项工作;

1、聊一聊内卷

有一次直播,直播间有个小伙子,高二就学完了springcloud,而且学习还很好,你说气不气,估计高考分数能在700以上,但这确实是极少数,直播间大呼java已经卷成这个样子了?

目前的软件开发的确有比较严重的内卷情况,加班是你不得不面临的现实。但是内卷是社会现象,不是行业独有。你从小就补课,三天一大补,两天一小补。小学里所谓神童比比皆是,你人生的整个过程不就是一路被卷过来的。

你无力改变,只有奋斗。与其被卷掉,倒不如卷掉别人。选对了赛道,努力一把,起码会让你过的更好一点。

2、就业和薪资情况

上个月的统计

先科普一下:平均工资=总工资数/总人数,中位数=工资由低到高排序后,最中间的那个数值。

在相信统计数据的情况下,会有以下结论:

【1】程序员薪资是真的高,本月招聘人数为435501人,其中一半的人薪资都超过13000元,收入低于这个数的,已经不是被平均,而是拖后腿了!

【2】程序员收入差别大,不同城市不同岗位差别很大,中位数的13000元,然而平均工资到了15052元,高薪人群的薪资是真的高,程序员工资成长空间真大

只要自己肯努力,年薪30w、40w、50w、60w、70w都会有的。

二、学前知识

1、计算机组成

image-20210809115451924
image-20210809115451924

内存

image-20210809115505136
image-20210809115505136

硬盘

image-20210809115520117
image-20210809115520117

2、windows系统

(1)初识命令行

CMD命令:开始->运行->键入cmd或command(在命令行里可以看到系统版本、文件系统版本)

进入某一个盘符

输入盘符 如 C: 然后回车,相当于进了C盘(c盘一般进的是桌面目录)

切换目录

输入 cd 目录名 然后回车

返回上层目录

如果你想返回到上层目录,那么直接输入`cd..就行了,可以返回到上层目录。开发过程中最常用的命令也就这些。

查看文件

dir命令查看目录下的文件列表,查看该目录下的所有文件:

dir

创建一个空文件

copy nul a.txt

文件里输入字符

echo 2323>a.txt

拷贝文件

copy拷贝文件命令,拷贝该目录下所有文件到D盘: copy * "d:\"

删除文件

del a.js 删除 a.js文件

(2)计算机的一些设置

1、显示后缀名

2、文件浏览方式

3、不建议使用第三方的杀毒软件

3、二进制基础

(1)二进制的存储

image-20210809115532066
image-20210809115532066

(2)存储单位

  • 1bit 一位

  • 1Byte = 8bit

  • 1KB = 1024B

  • 1MB = 1024KB

  • 1GB = 1024MB

  • 1TB = 1024GB

(3)二进制的加减运算

十进制是逢十进一,二进制是逢二进一,十进制的世界单个数字最大为9,二进制的世界单个数字最大为1。

From: 元动力
1
2
3
4
  10010011
10101001
-------------
100111100

思考一个问题,计算机只能保存0和1那他是怎么区分正负数的呢?

那我们不妨使用第一个数字当做符号,1代表负数,0代表正数,当然为了让数字更有规律,我们不妨每个数字用八位代替。

那1就可以表示为00000001,而-1就可以表示为10000001

咱们不妨来一个两数之和。

From: 元动力
1
2
3
4
  10000001
00000001
-------------
10000010

结果居然是-2,很明想这种解决方案有局限。

其实我想要的结果是这样子的

From: 元动力
1
2
3
4
  00000001
????????
-------------
00000000

?代表-1,我们想寻求一个这样的值表示负一,很显然不行,但是以下这种方案却有一定的可行性。

From: 元动力
1
2
3
4
  00000001
????????
-------------
100000000

应为我们规定了一个数字8位,所以第九位变成了1之后就溢出了,就没了。那此时的 ? 是否能代表-1呢? 而他的结果是 11111111

没错在计算机中负一就是11111111

这个值称之为补码,计算机的数值都是以补码的形式存在。而之前的10000001称之为原码。

补码是怎么计算的

1、计算 反码 ,正数的反码就是他本身,负数的反码是符号位不变,其他位取反。

2、计算 补码 ,正数的补码还是他本身,负数的补码是反码加一。

From: 元动力
1
2
正数 原码 00000001  反码  00000001  补码  00000001
正数 原码 10000001 反码 11111110 补码 11111111

咱们思考一下0和 -0 的

From: 元动力
1
2
3
4
+0 原码 00000000 反码 00000000 补吗     00000000
-0 原码 10000000 反码 11111111 补码 (1)00000000

-0的最高位溢出了,所以补码也解决了-0和0的值不同的问题,是不是很妙啊!

(4)二进制和其他进制的转换

  • 二进制 逢二进一 01
  • 八进制 逢八进一 01234567
  • 十进制 逢十进一 0123456789
  • 十六进制 逢十六进一 0123456789abcdef

win10自带的计算器就能解决呀!

十进制转其他进制

18怎么转为二进制呢?

image-20210809115546180
image-20210809115546180

结果就是 10010

同理

18转为8进制呢?八进制就是逢八进一。

image-20210809115556308
image-20210809115556308

所以18的八进制就是22,十六进制就是12。

二进制转其他进制

1010 0*20+1*21+0*22+1*23 = 0+2+0+8 = 10

快速计算:0 2 4 8 16

(5)二进制的逻辑运算

与 或 非

回忆一下高中的电路这个电路熟悉吧!

image-20210809115619802
image-20210809115619802

我们把s1和s2当做输入,灯泡l1当做输入。大概有这么几种情况

开关s1(1代表开,0代表关)开关s2(1代表开,0代表关)灯泡l1(1代表亮,0代表关)
111
100
010
000
image-20210809115629207
image-20210809115629207

我们吧s1和s2当做输入,灯泡l1当做输入。大概有这么几种情况

开关s1(1代表开,0代表关)开关s2(1代表开,0代表关)灯泡l1(1代表亮,0代表关)
111
101
011
000
image-20210809115638257
image-20210809115638257

我们吧s1和s2当做输入,灯泡l1当做输入。大概有这么几种情况

开关s(1代表开,0代表关)灯泡l1(1代表亮,0代表关)
10
01
00

其实以上几种情况就是二进制的基本逻辑运算——与或非

串联相当于 与运算,只有两者都为一,结果才是一。

并联相当于或运算, 只有两者都为零,结果才是零。

最后一个是非运算,分别取反。

还有一个常用的逻辑运算——异或:相同为零,不同为一。

(6)网络

网络就是通过网线,光缆,路由器,交换机等设备将一个计算机的信号传送到另一个计算机上。咱们的课程不是计算机网络,到了后期会详细的介绍网络中的一些协议。

传输的就是信号,可以是电信号,也可以是光信号。电信号高电平代表一,低电平代表0。

网络带宽是啥意思,就是1s能传输多少个0或1。

比如说你家的网络是 200M,其实真实的单位是200MHZ,上个频率的单位。

运营商的单位是 Mbit

我们的下载速度是 MByte

下载理论速度是 200/8 = 25M/s

三、初识java

1、java是什么

(1)Java 是一种计算机编程语言

  • 编程是把我们的要求和想法,按照能够让计算机看懂的规则和约定编写出来。编程的结果就是一些计算机能够看懂并能够执行和处理的东西,我们把它叫做软件或者程序。事实上,程序就是我们对计算机发出的命令集(指令集)。
  • 语言是用来交流的,和你说的汉语很向,但是汉语是人与人交流,java是一种人与计算机交流的语言。换句话说把我们的要求和想法用Java 表达出来,那么计算机能看懂,就能够按照我们要求运行,而这个过程就是我们说的使用Java 编程,所以我们讲Java 是一种计算机编程语言。
  • 为了让计算机看懂,Java 会有一系列的规则和约定,这些就是Java 的语法。

(2)Java 是一种软件开发、运行、部署的平台

简单来说,我们可以用java语言开发出应用程序,部署并运行在安装有java环境的计算机上。

2、Java 能干什么

Java 能做的事情很多,涉及到编程领域的各个方面。

(1)桌面级应用

先解释一下桌面级应用:简单的说就是主要功能都在我们本机上运行的程序,比如word 、excel 等运行在本机上的应用就属于桌面应用,尤其是需要跨平台的桌面级应用程序,但是目前使用java做桌面级开发的场景确实越来越少。

(2)企业级应用

先解释一下企业级应用:简单的说就是大规模的应用,一般使用人数较多,数据量较大,对系统的稳定性、安全性、可扩展性和可装配性等都有比较高的要求。

这是目前Java 应用最广泛的一个领域,几乎一枝独秀。包括各种行业应用,企业信息化,也包括电子政务等,领域涉及:办公自动化OA,客户关系管理CRM,人力资源HR,企业资源计划ERP 、知识管理KM、供应链管理SCM 、企业设备管理系统EAM 、产品生命周期管理PLM 、面向服务体系架构SOA 、商业智能BI、项目管理PM、营销管理、流程管理WorkFlow 、财务管理……等等几乎所有你能想到的应用。

其实这个概念已经慢慢淡化了,我们现在进入了互联网时代,一个软件的体量已经不能同日而语,现在的软件需要支持更高的并发,追求更稳定的效果。

(3)嵌入式设备

包括无线手持设备、智能卡、通信终端、医疗设备、信息家电(如数字电视、机顶盒、电冰箱)、汽车电子设备等都是近年以来热门的Java 应用领域,尤其是手机上的Java 应用程序和Java 游戏,更是普及。

(4)大数据领域产品

很多大数据领域使用的软件都是java编写的,所有java学习也是大数据学习的基础。

3、Java 历史

(1)简介

在上世纪90 年代初,sun 公司有一个叫做Green 的项目,目的是为家用消费电子产品开发一个分布式代码系统,这样就可以对家用电器进行控制,和它们进行信息交流。

詹姆斯·高斯林(JamesGosling)等人基于C++ 开发一种新的语言Oak(Java 的前身)。Oak 是一种用于网络的精巧而安全的语言。Sun 公司曾依此投标一个交互式电视项目,但结果是被SGI 打败,Sun 打算抛弃Oak。随着互联网的发展,Sun 看到了Oak 在计算机网络上的广阔应用前景,于是改造Oak,在1995 年5 月以“Java”的名称正式发布,从此Java 走上繁荣之路。

当然提到Java 历史,不得不提的一个故事就是Java 的命名。开始“Oak”的命名是以项目小组办公室外的树而得名,但是Oak 商标被其他公司注册了,必须另外取一个名字,传说有一天,几位Java 成员组的会员正在讨论给这个新的语言取什么名字,当时他们正在咖啡馆喝着Java( 爪哇)咖啡,有一个人灵机一动说就叫Java 怎样,得到了其他人的赞同,于是,Java 这个名字就这样传开了。当然对于传说,了解一下就好了,不必过于认真。

(2)Java 大事记

作为学习Java 的人士,对Java 历史上发生的大事件有一个了解是应该的。

JDK(Java Software Develop Kit):Java 软件开发工具包。JDK 是Java 的核心,包括了Java 运行环境,一系列Java 开发工具和Java 基础的类库。目前主流的JDK 是Sun 公司发布的JDK,除了Sun 之外,还有很多公司和组织都开发了自己的JDK,例如IBM 公司开发的JDK,BEA 公司的Jrocket,还有GNU 组织开发的JDK 等等。

image-20210809115659786
image-20210809115659786

4、Java语言的特点

Java 语言的风格很像 C 语言和 C++open in new window 语言,是一种纯粹的面向对象语言,它继承了 C++ 语言面向对象的技术核心,但是拋弃了 C++ 的一些缺点,比如说容易引起错误的指针以及多继承等,同时也增加了垃圾回收机制,释放掉不被使用的内存空间,解决了管理内存空间的烦恼。

Java 语言是一种分布式的面向对象语言,具有面向对象、平台无关性、简单性、解释执行、多线程、安全性等很多特点,下面针对这些特点进行逐一介绍。

(1)面向对象

Java 是一种面向对象的语言,它对对象中的类、对象、继承、封装、多态、接口、包等均有很好的支持。为了简单起见,Java 只支持类之间的单继承,但是可以使用接口来实现多继承。使用 Java 语言开发程序,需要采用面向对象的思想设计程序和编写代码。

(2) 平台无关性

平台无关性的具体表现在于,Java 是“一次编写,到处运行(Write Once,Run any Where)”的语言,因此采用 Java 语言编写的程序具有很好的可移植性,而保证这一点的正是 Java 的虚拟机机制。在引入虚拟机之后,Java 语言在不同的平台上运行不需要重新编译。

Java 语言使用 Java 虚拟机机制屏蔽了具体平台的相关信息,使得 Java 语言编译的程序只需生成虚拟机上的目标代码,就可以在多种平台上不加修改地运行。

(3) 简单性

Java 语言的语法与 C 语言和 C++ 语言很相近,使得很多程序员学起来很容易。对 Java 来说,它舍弃了很多 C++ 中难以理解的特性,如操作符的重载和多继承等,而且 Java 语言不使用指针,加入了垃圾回收机制,解决了程序员需要管理内存的问题,使编程变得更加简单。

(4)解释执行

Java 程序在 Java 平台运行时会被编译成字节码文件,然后可以在有 Java 环境的操作系统上运行。在运行文件时,Java 的解释器对这些字节码进行解释执行,执行过程中需要加入的类在连接阶段被载入到运行环境中。

(5)多线程

Java 语言是多线程的,这也是 Java 语言的一大特性,它必须由 Thread 类和它的子类来创建。Java 支持多个线程同时执行,并提供多线程之间的同步机制。任何一个线程都有自己的 run() 方法,要执行的方法就写在 run() 方法体内。

(6)分布式

Java 语言支持 Internet 应用的开发,在 Java 的基本应用编程接口中就有一个网络应用编程接口,它提供了网络应用编程的类库,包括 URL、URLConnection、Socket 等。Java 的 RIM 机制也是开发分布式应用的重要手段。

(7) 健壮性

Java 的强类型机制、异常处理、垃圾回收机制等都是 Java 健壮性的重要保证。对指针的丢弃是 Java 的一大进步。另外,Java 的异常机制也是健壮性的一大体现。

(8)高性能

Java 的高性能主要是相对其他高级脚本语言来说的,随着 JIT(Just in Time)的发展,Java 的运行速度也越来越高。

(9)安全性

Java 通常被用在网络环境中,为此,Java 提供了一个安全机制以防止恶意代码的攻击。除了 Java 语言具有许多的安全特性以外,Java 还对通过网络下载的类增加一个安全防范机制,分配不同的名字空间以防替代本地的同名类,并包含安全管理机制。

四、java环境搭建

主要内容:搭建java环境,编写第一个java程序,学习变量

1、安装java

(1)安装

将给定的安装包安装在电脑上,我们一起去官方网站看看

image-20210809115721353
image-20210809115721353

我们能看到目前java的版本已经更新到了java16,但是企业中常用的还是java8,所以我们的学习也是建立在java8的基础之上,后期会推出一些新版本的新特性课程。

安装java8,这里我们全程下一步。系统会默认将jdk安装至"C:\Program Files\Java"目录下。

安装文件我们会分享至指定的网盘。

输入:

From: 元动力
1
"C:\Program Files\Java\jdk1.8.0_221\bin\javac"

有内容即可。

输入:

From: 元动力
1
"C:\Program Files\Java\jdk1.8.0_221\bin\java" -version
From: 元动力
1
2
3
java version "1.8.0_221"
Java(TM) SE Runtime Environment (build 1.8.0_221-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode)

可查看当前的jdk的版本。

(2)目录结构

image-20210809115734398
image-20210809115734398

我们会发现最外层的目录有一个jdk,有一个jre。

JDK 基本介绍

JDK 的全称(Java Development Kit Java 开发工具包) JDK = JRE + java 的开发工具 [java, javac,javadoc,javap 等] 2) JDK 是提供给 Java 开发人员使用的,其中包含了 java 的开发工具,也包括了 JRE。所以安装了 JDK,就不用在单独 安装 JRE 了。

JRE 基本介绍

  • JRE(Java Runtime Environment Java 运行环境) JRE = JVM + Java 的核心类库[类]
  • 包括 Java 虚拟机(JVM Java Virtual Machine)和 Java 程序所需的核心类库等,如果想要运行一个开发好的 Java 程序, 计算机中只需要安装 JRE 即可。

JDK、JRE 和 JVM 的包含关系

  • JDK = JRE + 开发工具集(例如 Javac,java 编译工具等)

  • JRE = JVM + Java SE 标准类库(java 核心类库)

  • 如果只想运行开发好的 .class 文件 只需要 JRE

2、第一个java程序

(1)HelloWorld

(1)安装notepad++,当然你也可以用txt写。

From: 元动力
1
https://en.softonic.com/download/notepad-plus/windows/post-download

下载,双加安装就可以了,比安装英雄联盟简单多了,这里楠哥已经给你准备好了。

(2)新建文本使用notepad++打开,里输入以下代码

From: 元动力
1
2
3
4
5
6
7
public class HelloWorld{
public static void main(String[] args){
System.out.println("Hello World");
}
}
//println和print的区别
println是输出之后换行

(3)运行这个程序

编译(compilation , compile)

编译就是把高级语言变成计算机可以识别的二进制语言,计算机只认识1和0,编译程序把人们熟悉的语言换成2进制的。

我们写的helloworld对我们人类而言是友好的,但是对一计算机并不友好。

java语言需要特性的java编译器进行编译,这个编译器在哪里,就在咱们解压的文件夹里javac文件。

From: 元动力
1
"C:\Program Files\Java\jdk1.8.0_221\bin\javac" HelloWorld.java

java文件经过编译之后会成为一个class文件,这个文件就是二进制的文件,将来他要加载到内存运行。

image-20210809115748567
image-20210809115748567

编译后的文件

image-20210809115808180
image-20210809115808180

运行

From: 元动力
1
"C:\Program Files\Java\jdk1.8.0_221\bin\java" HelloWorld
image-20210809115819721
image-20210809115819721

发现helloworld被打印了出来,运行成功。

但是我们每一次运行一个java程序都要指定java的安装目录是不是有点太麻烦了,于是我们引出了环境变量的概念。

3、环境搭建

什么是环境

我们在地球上生活,环境给我们提供了空气,提供了水,提供了食物,正是由于有了环境的馈赠我们才能得以生存。

同样,一个用java写的程序也要有自己的运行环境,有环境才能生存。

能让所有的java程序自动的找到自己的环境,而不是手动的指定。

我们已经知道了编译java代码需要 javac

运行java程序 需要java

其实这就是我们java环境所必须的一部分,至少编译的的时候不用可以去找。

(1)环境变量

环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数,如:临时文件夹位置和系统文件夹位置等。

环境变量相当于给系统或用户应用程序设置的一些参数,具体起什么作用这当然和具体的环境变量相关。比如path,是告诉系统,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到哪些目录下去寻找。

环境变量在哪里配置

我的电脑——>右键属性

image-20210809115833865
image-20210809115833865

选择环境变量:

image-20210809115929014
image-20210809115929014

在系统环境变量中有一个Path,这里边配置了很多路径。

image-20210809115855823
image-20210809115855823

(2)回归本初

怎么使用cmd打开微信,其实这个咱们第一天就已经学过了,但是我今天想,不进入这个目录就能打开。

其实只需要两步骤,一:配置环境变量中的path,添加微信的路径的名称。二:在cmd中输入微信的可执行文件名字即可。

(3)配置java的环境变量

好了之后,我么就可以这样玩了:

From: 元动力
1
2
javac HelloWorld.java
java HelloWorld

是不是很简单呢?

五、怎么学习java

  1. 多写代码
  2. 多思考
  3. 多总结
  4. 第一周以后,尽量不要抄代码
  5. 找一个好的笔记工具-typora
  6. 后期还要多写博客

本站由 钟意 使用 Stellar 1.28.1 主题创建。
又拍云 提供CDN加速/云存储服务
vercel 提供托管服务
湘ICP备2023019799号-1
总访问 次 | 本页访问