软件创新实验室2021年暑假集训Java技术培训——Java前置知识学习

Posted woodwhale

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软件创新实验室2021年暑假集训Java技术培训——Java前置知识学习相关的知识,希望对你有一定的参考价值。

【软件创新实验室2021年暑假集训】Java技术培训——Java前置知识学习

前言

这是本人的第一次讲课,也是进入实验室之后的第一次讲课。
如果讲的不好,还望各位海涵。
那么今天的内容是Java的前置知识的学习,废话不多说我们进入正题!

一、了解计算机

1、计算机的简介

  • computer:全程电子计算机,咱们俗称电脑

  • 能够按照程序运行,自动、告诉处理海量数据的现代化只能电子设备

  • 由硬件和软件组成

  • 台式、笔记本、大型计算机

  • 广泛应用于:科学计算、数据处理(大数据)、自动控制、计算辅助设计、人工智能、网络…

2、计算机硬件

硬件组成

  • cpu
  • 主板
  • 内存
  • 电源
  • 硬盘
  • 显卡
  • 键鼠
  • 显示器

3、计算机软件

软件可以让计算机实现特定功能

计算机软件按照功能可以分为:系统软件和应用软件

  • 系统软件
    • DOS,windows,Linux,mac,android
  • 应用软件
    • QQ、微信、浏览器…

我们软件工程专业就是开发应用软件,例如QQ、微信等

二、DOS指令

DOS指令可以直接在命令提示符重执行。

  • 使用win+r输入cmd即可快速打开

  • 或者在文件夹的目录行输入cmd回车也可以打开当前目录下的cmd

为什么我们需要学习一些简单的DOS指令呢?

  • 因为今后的编程学习是离不开DOS指令的,简单的cd跳转都不会,那今后真的是举步维艰了
  • DOS指令在某些方面于Linux的bash类似,学习了之后有触类旁通的门道,对今后的Linux学习有帮助

常用的DOS命令如下:

dir			# 显示指定路径下的所有文件和目录的信息
md(mkdir)	# 建立目录,它的格式为”md [盘符][路径]”
rd(rmdir)	# 删除目录
cd			# 进入目录
copy		# 复制
del			# 删除
ren(rename)	# 重命名
type		# 显示文本文件
cls(clear)	# 清屏

三、计算机语言的历史

介绍计算机语言的历史有助于我们更深入理解现在语言的用途,和了解之前的程序员都是在什么样的环境下写出程序的

1、第一代语言

第一代语言就是机器语言

  • 众所周知计算机的最基本方式是基于二进制进行计算的
  • 二进制:001010010100100100101
  • 计算机一看就懂,人一看就懵

2、第二代语言

第二代语言就是汇编语言

  • 解决了人无法读懂汲取语言的问题
  • 用汇编指令代替二进制

目前应用:

  • 逆向
  • 加壳

3、第三代语言

第三代语言已经是高级语言了

  • 大体上分为两类:面向过程面向对象

  • 最早被广泛运用的高级程序设计语言是Fortran,出现了一些基本控制结构,数据出现了类型(对内存数据的解释方式)

  • C语言就是典型的面向过程的语言。C++可以是面向过程也可以是面向对象。Java、python是经典的面向对象语言

  • 高级语言中C语言可以说是重中之重了,可以说是高级语言的鼻祖了(Java就是基于C的)

四、Java简介

我们已经讲了三章内容,但是还是没有涉及到今天的主线任务——Java。

在前置知识得到了一定的了解的基础上,我们开始介绍Java

1、Java的诞生

1972年C诞生,其特点有下三点

  • 贴近硬件,运行极快,效率极高
  • 由C编写了许多的操作系统、编译器、数据库、网络系统等
  • 指针、内存管理(折磨)

1982年C++诞生

  • 面向对象
  • 兼容C
  • 在图形领域和游戏领域有一技之长

为了结合C和C++的特点,又不被烦人的指针和内存管理给折磨,SUN公司想到了建立一种新的语言

  • 语法和C类似
  • 没有指针
  • 没有内存管理
  • 可移植性(一次编写,处处执行。用虚拟机实现)
  • 面向对象
  • 类型安全
  • 高质量的类库

由此Java在1995年诞生了

在Java刚起步的时候,许多开发者基于Java开发了巨多的平台、系统和工具

  • 构建工具:Ant、Maven、Jekins
  • 应用服务器:Tomcat、Jetty、Jboss、Websphere、weblogic
  • web开发:Stryts、Spring、Hibernate、myBatis
  • 开发工具:Eclipse、intellij idea、Jbuilder

到2006年:Hadoop(大数据)

到2008年:Android(手机端)

从1995年一直发展到现在,Java仍然是火爆的语言之一

2、什么是Java?

Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。

3、Java的优缺点

优点:

  1. 一次编写,处处运行。
  2. 系统的多平台支持。
  3. 多样化和功能强大的开发工具支持。
  4. 良好的生态支持
  5. 开源且版本持续迭代升级
  6. 垃圾回收机制
  7. 屏蔽了一些底层的操作(相对于c++而言),使代码不容易出错

缺点:

  1. 性能方面(运行速度、空间使用…)比C和C++慢。因为C写的程序几乎就是用汇编写的。而理论上汇编是除了直接写01最快的了。
  2. 上手难度比python难。相比于python简单易懂的函数和节俭的格式,Java的可读性和上手难易度就比python高了很多了
  3. 无法直接操作底层内存(当然这既是优点也是缺点)。Java不能像C、C++一样直接操作内存堆栈(malloc),只能通过new的方式自动分配内存。

4、为什么要学Java

  • 服务端开发的霸主
    • 现如今国内的服务端基本是采用Java进行开发的
  • 典型的面向对象语言
    • Java作为一门典型的面向对象语言,是今后学习面向对象思想的非常好的教学容器。
    • 使用Java学习,学到的不仅是语法知识,更是面向对象这一种思想
    • 在学习了这种面向对象思想之后,转战其他面向对象语言那会是比较简单的
  • 生态氛围强大
    • 无论是github还是各种论坛,Java在生态这一块拿捏的死死的

五、Java还是python ?

在介绍这一部分的内容之前,首先咱们贯彻一句话——“仁者见仁智者见智”。

虽然这一章的标题是《Java or python?》,其实咱们想讨论的实质东西并不是这两种语言,而是所有流行的语言的适用范围和上手难易程度。

至于为啥要拿Java和python来代表,因为现在除了c语言这种最基础的语言,最火的莫过于Java和python,当然随之火爆的也有“世界上最好的语言”php,和后期之秀Golang

附上2021.6的TIBOE语言排名榜

image-20210704200152162

附上2002至2020年的语言使用占比

image-20210704200312664

1、语言只是一门工具

各种语言都有其特有的好处,我们选择语言不是道听途说,而是应该脚踏实地去实践。你喜欢你习惯用那种语言,那就去使用。所有的语言其实没有可比性,只有编程能力的可比性。同样的程序员,其实在不同情况下是会选择不同的语言进行工作处理的。语言的选择也是分场合的。

我们都知道“php是世界上最好的语言”的梗,真正的大佬是不会纠结于“哪种语言最厉害”这种弱智问题的,因为在他们眼中,语言仅仅是一种工具

千万不要被语言舒服,不要因为你觉得某种语言好用就拘泥于这个语言环境中,而不愿意接触其他语言,这是编程中最致命的误区。

2、各种语言都能干什么

我们上面提到了C、C++、PHP、golang、Java、python,那么他们都是干什么的?

C++

C++我们都知道,它更接近于机器语言。可以说,基本上干咱们这行的,入门都是靠C语言,学习了它的用法之后再转其他语言的。C++的特点就是内存管理,这是它的优点但也是缺点。现在的C++干的都是游戏开发的事情,当然算法方面其实C++也是非常火的。

PHP

PHP总是和nginx一起开发web网页,与我们后面学习的java和tomcat、servlet是类似作用的。

PHP面对的是中小性web网页,例如个人博客等,它的优势是上手简单拿,建站方便。而我们之后学习的Javaweb是可以驾驭住大型高并发的web网页的。可以说Java在web方面也有其特有的好处。

golang

而go语言,和Java比更加简洁、和python比更快,而且处理高并发的能力非常强。所以我们会发现如今许多大厂在招实习生的时候都会要求自学一段时间的go。但是这也是找实习的后话,而且前提是大厂。

python

那么关于python,大家或多或少比上面几门语言接触的多一点。其方便性和易读性不言而喻。基本上一周的时间可以写一些小型脚本,爬爬图片、小说等。但其实python最火的是在人工只能领域,因为python的集成做的非常好,我们基本上只需要使用pip指令就能安装有相应功能的库,这就相当于站在巨人的肩膀上,使用前人写好的功能为己所用。

Java

最后是Java,Java其实在年龄上没有python老,但是它却比python多火了许久的时间,在21世纪初,Java的火热程度是难以想象的。简单举个例子,原名为livescript的javascript这门与Java没有任何内容相关性、仅仅是名字沾边的语言,也是因为与Java的开发公司SUN公司合作了之后火了起来。从上面的语言排行图中可以看出Java其实垄断了很长一部分时间。至于Java的应用,安卓、后端、web都涉及到了。

最后还是那句话,语言只是一种工具,学习哪种语言取决于你想干什么

六、JDK

1、什么是JDK?

  • JDK是Java Development Kit的缩写,翻译过来就是Java开发工具,我们可以简单理解使用Java必须得有JDK这个东西。

  • JDK是整个Java的核心,包括了JRE(Java Runtime Environment),一堆Java工具和Java的基础类库(rt.jar)

  • JDK包含的基本组件包括

    • javac ——编译器,将源程序转成字节码
    • jar ——打包工具,将相关的类文件打包为一个文件
    • javadoc ——文档生成器,从源码注释中提取文档
    • jdb ——debugger,查询错误的工具

2、JDK的种类

在我们的印象中,Java现在已经是Oracle公司的了,但是Java其实是SUN公司的开发产物,随后被卖给了Oracle公司。

JDK其实不仅仅只有Oracle的版本,也有其他的很多版本。但是我们可以把JDK分为两类

第一类

OpenJDK

Java最早由SUN公司(Sun Microsystems,发起于美国斯坦福大学,SUN是Stanford University Network的缩写)发明,2006年SUN公司将Java开源,此时的JDK即为OpenJDK。

OpenJDK是Java SE的开源实现,他由SUN和Java社区提供支持,2009年Oracle收购了Sun公司,自此Java的维护方之一的SUN也变成了Oracle。

大多数JDK都是在OpenJDK的基础上编写实现的,比如IBM J9,Azul Zulu,Azul Zing和Oracle JDK。几乎现有的所有JDK都派生自OpenJDK,他们之间不同的是许可证,

OpenJDK根据许可证GPL v2发布。
Oracle JDK根据Oracle二进制代码许可协议获得许可。

第二类

OracleJDK

Oracle JDK之前被称为SUN JDK,显而易见,这是在2009年Oracle收购SUN公司之前,收购后被命名为Oracle JDK。

实际上,Oracle JDK是基于OpenJDK源代码构建的,因此Oracle JDK和OpenJDK之间没有重大的技术差异。

某次大会上,曾用下图证实了OpenJDK 7和Oracle JDK 7在程序上是非常接近的,两者共用了大量相同的代码,图中提示了两者共同代码的占比要远高于图形上看到的比例,所以我们编译的OpenJDK基本上可以认为性能、功能和执行逻辑上都和官方的Oracle JDK是一致的

img

两者的区别

最简单的解释就是 OpenJDK是开源的,OracleJDK是官方的

当我们安装使用了OpenJDK,在cmd中输入java -version之后会显示

image-20210705114606380

而当我们安装使用了OracleJDK,在cmd中输入java -version之后会显示

image-20210705114732785

其中Java HotSpot™ 64-Bit Server VM表明,此JDK的JVM是Oracle的64位HotSpot虚拟机,运行在Server模式下。Java™ SE Runtime Environment (build 1.8.0_281-b09)是Java运行时环境(即JRE)的版本信息。

更多技术层面上的不同就由各位自己去查询资料了,这里就不细说了

3、JDK的下载

目前OracleJDK已经更新到了JDK16,但是市面上主流的JDK还是JDK8和JDK11。

JDK8历史久且稳定,即使是在如今JDK跟新到了16的情况下,很多企业还在使用

JDK11也是非常的稳定,且引入了很多新特性,使用也是非常广泛

选择那种下载全靠个人喜欢,反正在我们学习的层面上,两者的差异没那么大。(或许你可以两者都下载)

清华大学开源软件镜像站OpenJDK11/Win

清华大学开源软件镜像站OpenJDK11-jre/Win

清华大学开源软件镜像站OpenJDK8/Win

清华大学开源软件镜像站OpenJDK8-jre/Win

Java SE Development Kit 11- - Downloads (oracle.com)

Java SE Development Kit 8 - Downloads (oracle.com)

另外补充一点,JDK的下载最好使用zip压缩包的形式,因为这样可以咱们手动配置环境变量,更改JDK版本更加方便。

当然,如果你是懒人的话,exe的下载形式也是可以的

此外,JDK11默认是没有jre路径的,但是内置了,如果有需要和JDK8的jre路径统一,可以在镜像站下载或者直接用指令导出

4、配置环境变量

在开始之前,确保你的zip压缩包已经解压了

首先使用windows自带的搜素功能搜索编辑系统环境变量

image-20210705122840431

将其打开,并点击环境变量

image-20210705122940286

系统变量或者用户变量中配置如下

image-20210705123707919

CLASSPATH

.;%JAVA_HOME%\\lib

JAVA_HOME

D:\\Java\\jdk11.0.11(自己下载的jdk路径)

Path变量中输入如下

image-20210705124117354

%JAVA_HOME%\\bin

%JAVA_HOME%\\jre\\bin

在配置如上之后在cmd中输入javac测试,和下图一样就说明配置成功

image-20210705124312228

如果这篇看不懂可以看我的总结博客Java环境变量配置与IDEA的安装

七、Java的IDE

1、什么是IDE?

集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。所有具备这一特性的软件或者软件套(组)都可以叫集成开发环境。

2、IDEA?eclipse?

在Java编写中,最常见的IDE莫属eclipse和idea了,这两者都是非常好用的IDE。

eclipse是一款免费的IDE软件,在早些年的开发中非常流行,其针对不同场景有不同的版本。但是自从idea异军突起,eclipse的出镜率逐年下降。其中一个原因就是eclipse的bug常年性的不修复,而且更新频率越来越慢

idea是目前Java界中公认的最好用的IDE,没有之一,无论是代码提示,还是界面设计还是各种插件支持,它做的都比eclipse要好,它是JetBrains公司出品的一系列产品的集大成者。但是可惜的是idea是一款收费软件,一年要千把块钱,当然学生可以使用学生邮箱免费试用。(白嫖JB公司的四年全家桶不香吗?!)

3、IDEA的安装与使用

1、安装

首先附上下载地址:下载 IntelliJ IDEA:JetBrains 功能强大、符合人体工程学的 Java IDE

选择exe快捷安装

image-20210619192706676

选择你自己想安装的路径,不推荐c盘

image-20210619192822047

一路next就完事了。

2、插件

我们打开IDEA之后,先在file里打开settings

image-20210619193847121

在插件一栏的插件市场中搜索Chinese

image-20210619193944967

选择第二个下载应用即可,按照提示重启就是中文页面了。

3、测试

先创建一个Java类

image-20210705130435038

测试运行

public class test {
    public static void main(String[] args) {
        System.out.println("hello world!");
    }
}

如图运行成功

image-20210705130519971

八、Blog!

讲了这么多,有关于Java的前置知识就讲的差不多了

让我们回到于Java关系不大但是与我们的生活息息相关的领域——blog

blog真的是咱们这行的必需品,为何?

博客也就是网络日记,在这个高速发展的快节奏信息化时代,有多少人静得下心来写一篇手写日记?

浮躁的社会氛围已经感染了每个人,早八的压迫和满课的无奈导或多或少致了每晚的通宵。

我们能在这样的条件下干什么呢?

答案是——写博客!

1、博客的作用

博客不仅是你对一个知识点、一个阶段、一件新鲜事的记录和收藏,其实更是自我内心的一种宣泄(在我看来

有人会问——为什么要写博客?

  • 学到的知识需要总结和思考。我们高强度的学习赶路,往往会使我们迷失了方向,博客就是你的沿途记录,告戒着你不能忘记初心!
  • 文笔的组织能力需要提高。文本组织能力其实在今后的工作中很重要,博客这种东西写多了,自然知道普罗大众喜欢读什么、听什么
  • 思维的逻辑能力需要提升。写博客其实也在锻炼逻辑思维。博客的每一点需要承上启下,在逻辑层面不能有错误
  • 获得就业前景和广阔人脉。博客写着写着其实会有一批批的fens或者同好,互相总结经验、互相学习进步。这不正是我们想要的吗。况且有些公司面试其实是会看你写的博文的,这也会使你获得更为广阔的就业前景

送各位一句话——“冰冻三尺非一日之寒”

写博文的过程也许很痛苦,也许短期内看不到效果。但是在长期坚持之后,见效是十分明显的,还希望各位坚持下去!

2、博客的注册

国内很多blog平台,然后就推荐几个

1、博客园

2、CSDN

3、简书

4、知乎

这些网络平台最推荐博客园,当然目前的博客园在整改,那么可以退而求其次选择CSDN

知乎和简书其实也是可以写博客的,只不过专业没那么对口

当然如果你不满足在这些网络平台上写博客,可以选择自购vps搭建博客,还能搭建其他的个人网站等等

3、Markdown

1、基本介绍

Markdown 是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档。

当前许多网站都广泛使用 Markdown 来撰写帮助文档或是用于论坛上发表消息。

  • 推荐文编编辑器:Typora
  • 文件后缀:.md

2、使用方法

标题

最多支持六级标题

用#来编辑标题

一个# 加上空格再打字就是一级标题

两个# 加上空格再打字就是二级标题

…以此类推

当然还有快捷键——ctrl+1、2、3、4

字体

hello world! (加粗——两边用**)

hello world!(斜体——两边用*)

hello world!(删除线——两边用~~)

引用

这里是一段引用

(用一个>再来一个空格就行)

分割线

用三个—就是分割线


图片

格式如下:

![图片名称](图片地址)

超链接

[这里是跳转名称](跳转地址)

woodwhale的博客

列表

有序列表,用数字加.再加空格即可

  1. A
  2. B
  3. C

无序列表,用-加空格即可

  • A
  • B
  • C
表格

用Typora直接右键可以构建表格

image-20210704211627555

159
2610
3711
4812

我们源码可以发现表格的样式是这样的

image-20210704211736974

代码块

用三个```就可以构建代码块

int main() {
    print("hello world!");
}

image-20210704212005528

后话

这就是第一节课的所有内容了,如果还有不理解的地方可以多看几遍或者多问。

在这一节我最希望各位学会的不是Java的知识,而是明白一个道理,学会学习真的很重要,而写博客就是我认为的一种高效学习方式。

学习路漫漫,坚持才是胜利!

以上是关于软件创新实验室2021年暑假集训Java技术培训——Java前置知识学习的主要内容,如果未能解决你的问题,请参考以下文章

2021软件创新实验室暑假集训总结篇

2021软件创新实验室暑假集训总结篇

2021软件创新实验室暑假集训SpringBoot框架

2021软件创新实验室暑假集训SpringBoot框架

2021软件创新实验室暑假集训SpringMVC框架(设计原理简单使用源码探究)

2021软件创新实验室暑假集训SpringMVC框架(设计原理简单使用源码探究)