Saul's blog Saul's blog
首页
后端
分布式
前端
更多
分类
标签
归档
友情链接
关于
GitHub (opens new window)

Saul.J.Wu

立身之本,不在高低。
首页
后端
分布式
前端
更多
分类
标签
归档
友情链接
关于
GitHub (opens new window)
  • Java入门基础

    • 计算机常识

    • Java语言概述

      • Java语言概述
        • Java基础知识图解
        • 软件开发介绍
          • 软件开发
          • 人机交互方式
          • 操作系统发展史
          • 常用的DOS命令
          • 常用快捷键
        • 计算机编程语言介绍
          • 什么是计算语言?
          • 计算机语言的发展
        • Java语言概述
        • 为什么用Java?
        • Java版本历史
        • Java技术体系平台
        • Java在各领域的应用
        • Java语言的诞生
        • Java语言主要特性
        • Java语言运行机制及运行过程
          • Java语言的特点
          • 跨平台性
          • Java的两种核心机制
          • 核心机制——Java虚拟机
          • 核心机制——垃圾回收
        • Java的环境搭建
          • JDK
          • JRE
          • JDK、JRE、JVM关系
          • 下载安装
          • 环境变量
        • 开发体验-HelloWorld
          • 编写代码
          • 编译文件
          • 运行class文件
        • 注释(Comment)
          • 单行注释
          • 多行注释
          • 文档注释
        • Java API的文档
        • 良好的编程风格
        • 常用的java开发工具
          • 文本编辑工具
          • Java集成开发环境(IDE)
        • 总结
    • 基本语法

    • 数组

    • 面向对象

    • 异常处理

  • Java核心基础

  • 设计模式

  • Web开发

  • SpringBoot

  • 微服务

  • Elasticsearch

  • 运维

  • 后端
  • Java入门基础
  • Java语言概述
SaulJWu
2020-11-19

Java语言概述

Java基础是学习JavaEE、大数据、Android开发的基石。

# Java基础知识图解

image-20201119224345117

  • 任何语言都会有关键字、数据类型、运算符、流程控制

# 软件开发介绍

# 软件开发

软件,即一些列按照特定舒徐组织的计算机数据和指令的集合。有系统软件和应用软件之分。

  • 系统软件:操作系统

例如:windows,mac,Linux,Android,IOS等等...

  • 应用软件:应用程序

平时用的软件,word,ppt,excel等等....

# 人机交互方式

  • 图形化界面(Graphical User Interface GUI)

这种方式简单直观,使用者易于接受,容易上手操作。

  • 命令行方式(Command Line Interface CLI)

需要一个控制台,输入特定的指令,让计算机完成一些操作。较为麻烦,需要记住一些指令。

# 操作系统发展史

施乐-苹果-微软

Pascal之父Nicklaus Wirth: "Algorithms+Data Structures=Programs"

算法 + 数据结构 = 应用程序

算法其实是业务逻辑。

数据结构解决的是数据存储的问题。

不同的数据结构,会产生不同的效率,就算是算法再好,如果数据结构选的不合适,虽然结果能达到,但是效率很差。所以这是值得深入研究的问题。

# 常用的DOS命令

# 切换盘符
d:

# 列出当前目录下的文件以及文件夹
dir

# 创建目录 make directory
md <name>

# 删除目录 目录不是空不能删除
rd <name>

# 进入指定目录
cd

# 退回到上一级目录
cd..

# 退回到根目录
cd /

# 创建文件
echo name:Tom,age=12>1.doc

# 删除文件 delete
del <name>
del *.txt
del <directory> # 删除目录下的文件

# 退出dos命令行
exit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

# 常用快捷键

← →:移动光标

↑ ↓:调阅历史操作命令

Delete和Backspace:删除字符

# 计算机编程语言介绍

# 什么是计算语言?

​ 如果人要与计算机交流,那么就要学习计算机语言。

​ 九三级语言有很多种。如:C,C++,Java,PHP,Kotlin,Python,Scala,Rust等等。

# 计算机语言的发展

  • 第一代语言:机器语言

指令以二进制代码形式存在。

  • 第二代语言:汇编语言

使用助记符表示一条机器指令。

image-20201119232639219

  • 第三代语言:高级语言。

C、Pascal、Fortan面向过程的语言

C++面向过程/面向对象语言

面向对象的语言

Java跨平台的纯面向对象的语言

.NET跨语言的平台

Python、Scala……

# Java语言概述

  • 是SUN(Standfor University network,斯坦福大学网络公司)1995年推出的一门高级编程语言。
  • 是一种面向Internet得编程语言。Java一开始富有吸引力是因为Java程序可以在Web浏览器中运行。这些Java程序被称为Java小程序(applet)。Applet使用现在的图形用户界面与Web用户进行交互。applet内嵌在HTML代码中。
  • 随着Java技术在web方面的不断成熟,已经称为Web应用程序的首选开发语言。

后台开发语言:Java、PHP、Python、Go、Node.js

Java适合综合大型网站

PHP、Python适合中小项目。

  • 安卓系统的架构

image-20201119233106033

# 为什么用Java?

  • 从Java语言的市场需求来看。

TIOBE (opens new window)是一个流行编程语言排行,每个月更新,排名权重,基于世界范围内,工程数量,课程数量和第三方供应商数量。搜索引擎也以此为标准。

image-20201119233551306

image-20201119233644476

从目前中国市场就业岗位和薪资待遇来说,Java发展得最好。

# Java版本历史

  • 1991年Green项目,开发语言最初命名Oak(橡树)
  • 1994年,开发组意识到Oak非常适合于互联网
  • 1995年5月23日,Java语言诞生
  • 1996年1月,第一个JDK (opens new window)-JDK1.0 (opens new window)诞生
  • 1996年4月,10个最主要的操作系统 (opens new window)供应商申明将在其产品中嵌入JAVA技术
  • 1996年9月,JDK1.0发布,约8.3万个网页应用了JAVA技术来制作
  • 1997年2月18日,JDK1.1 (opens new window)发布
  • 1997年4月2日,JavaOne会议召开,参与者逾一万人,创当时全球同类会议规模之纪录
  • 1997年9月,JavaDeveloperConnection (opens new window)社区成员超过十万
  • 1998年2月,JDK1.1 (opens new window)被下载超过2,000,000次
  • 1998年12月8日,JAVA2 (opens new window)企业平台J2EE发布
  • 1999年6月,SUN公司发布Java的三个版本:标准版(J2SE (opens new window))、企业版(J2EE (opens new window))和微型版(J2ME (opens new window))
  • 2000年5月8日,JDK1.3 (opens new window)发布
  • 2000年5月29日,JDK1.4 (opens new window)发布
  • 2001年6月5日,NOKIA (opens new window)宣布,到2003年将出售1亿部支持Java的手机
  • 2001年9月24日,J2EE1.3 (opens new window)发布
  • 2002年2月26日,J2SE1.4 (opens new window)发布,自此Java的计算能力有了大幅提升
  • 2004年9月30日18:00PM,J2SE1.5 (opens new window)发布,成为Java语言发展史上的又一里程碑。为了表示该版本的重要性,J2SE1.5 (opens new window)更名为Java SE 5.0(JDK5.0)
  • 2005年6月,JavaOne大会 (opens new window)召开,SUN公司公开Java SE 6。此时,Java的各种版本已经更名,以取消其中的数字“2”:J2EE更名为Java EE,J2SE更名为Java SE,J2ME更名为Java ME
  • 2006年12月,SUN公司发布JRE6.0
  • 2009年12月,SUN公司发布Java EE 6,Oracle收工SUN,交易价格74亿美元
  • 2010年11月,由于Oracle公司对于Java社区的不友善,因此Apache扬言将退出JCP[14] (opens new window)
  • 2011年7月28日,Oracle公司发布Java SE 7
  • 2014年3月18日,Oracle公司发表Java SE 8,是继JDK 5.0以来变化最大的版本
  • 2017年9月21日,Oracle公司发表Java SE 9
  • 2018年3月21日,Oracle公司发表Java SE 10,版本号也开始按年和日期称呼,称为18.3
  • 2018年9月25日,Java SE 11发布,版本号也称为18.9

现在JDK基本上每6个月更新一次。

通常公司都是用最稳定的版本,现在基本上都是JDK 8.0

# Java技术体系平台

  • Java SE (Java Standard edition) 标准版

支持面向桌面级应用(如Windows下的应用程序)的JavaPing太,提供了完整的Java核心API,此版本以前称为J2SE

  • Java EE (Java Enterprise Edition) 企业版

是为开发企业环境下的应用程序提供的一套解决方案。该技术体系中包含的技术如Servlet、Jsp等,主要针对于Web应用程序卡覅。版本以前称为J2EE

  • Java ME (Java Micro Edition) 小型版

支持Java程序运行在移动终端(手机、PDA)上的平台,对Java API有所精简,并加入了针对移动终端的支持,此版本以前称为J2ME

  • Java Card

支持一些Java小程序(Applets)运行在小内存设备(如智能卡)上的平台

# Java在各领域的应用

  • 企业级应用

主要指复杂的大企业的软件系统、各种类型的网站。Java的安全机制以及它的跨平台的优势,使它在分布式系统领域开发中有广发应用。应用领域包括金融、电信、交通、电子商务等。

Java Web开发:后台开发

  • Android平台应用

Android应用程序可以用Java语言编写。Android开发水平的高低很大程度取决于Java语言核心能力是否扎实。

  • 大数据平台开发

各类框架有Hadoop,Spark,Storm,flink等,就这类技术生态圈来讲,还有各种中间件如flume,kafka,sqoop等等,这些框架以及工具大多数是用Java编写而成,但提供诸如java,Scala,Python,R等各种语言API供编程。

  • 移动领域应用

主要表现在消费和嵌入式领域,是指在各种小型设备上的应用,包括手机,PDA,机顶盒,汽车通信设备等。

# Java语言的诞生

​ Java之父James Gosling团队在开发”Green“项目时,发现C却笑垃圾回收系统,还有可移植的安全性、分布程序设计和多线程功能。最后,他们想要一种易于移植到各种设备上的平台。

image-20201121203256259

​ Java确实是从C语言和C++语言继承了许多成份,甚至可以将Java堪称是类C语言发展和衍生的产物。比如Java语言的变量声明,操作符形式,参数传递,流程控制等方面和C语言、C++语言完全现同。但同时,Java是一个纯粹的面向对象的程序设计语言,它继承了C++语言面向对象技术的核心。

​ Java舍弃了C语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)、多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再应用的对象所占据的内存空间。JDK1.5又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱。

# Java语言主要特性

  • java语言是易学的。

Java语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用Java。

  • Java语言是强制面向对象的。

Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字implenments)。

  • Java语言是分布式的。

Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用接口(java net),它提供了用语网络应用编程的类库,包括URL、URLConnetciton、Socket、ServerSocket等。java的RMI(远程方法激活)机制也是开发啊分布式应用的重要手段。

  • Java语言是健壮的。

Java的强类型机制、异常处理、垃圾的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。

当你未接触java语言时,是不了解这些特性,当你懂得了Java语言,回头再来看这些特性,你就明白了。

# Java语言运行机制及运行过程

# Java语言的特点

  • 面向对象

两个基本概念:类、对象

三大特性:封装、继承、多态

  • 健壮性

吸收了C/C++语言的有点,但去掉了其影响程序健壮性的部分(如指针、内存的申请与释放等),提供了一个相对安全的内存管理和访问机制

其实仍然可能会出现内存溢出、内存泄漏,但是已经很健壮了。

  • 跨平台性

    ​ 通过Java语言编写的应用程序在不同的系统平台上都可以运行。”Write once,Run Anywhere“

    ​ 原理:只要需要运行java应用的操作系统上,想安装一个Java虚拟机(JVM Java Virtual Machine)即可。由JVM来负责Java程序在该系统中的运行。

# 跨平台性

image-20201121204721499

因为有了JVM,同一个Java程序在三个不同的操作系统中都可以执行。这样就实现了Java程序的跨平台性。

Java程序实际是跑在JVM上,而JVM可以安装在不同的系统上。

不同操作系统的JVM是不一样的。

# Java的两种核心机制

  • Java虚拟机(Java Virtal Machine)
  • 垃圾收集机制(Garbage Collection)

# 核心机制——Java虚拟机

  • JVM是一个虚拟的计算机,具有指令集并使用不同的存储区域。负责执行指令,管理数据、内存、寄存器。
  • 对于不同的平台,有不同的虚拟机。
  • 只有某平台提供了对应的java虚拟机,java程序才可以在此平台云运行
  • Java虚拟机机制屏蔽了底层运行平台的差别,实现了“一次编译,到处运行”

image-20201121205223764

写的Java去执行形式是字节码的形式,跑在JVM上,JVM依赖操作系统,操作系统需要硬件CPU进行计算。

image-20201121205429728

# 核心机制——垃圾回收

  • 不再使用的内存空间应回收——垃圾回收。

在C/C++等语言中,由程序员负责回收无用内存。

Java语言消除了程序员回收无用内存空间的责任:它提供一种系统级线程跟踪存储空间的分配情况。并在JVM空闲时,检查并释放哪些可被释放的存储空间。

  • 垃圾回收在Java程序运行过程中自动进行,程序员无法精确控制和干预。
  • Java程序还会出现内存泄漏和内存溢出问题吗?YES!

程序员写程序的时候,GC有时候不能自识别导致,具体拓展等后面会详细说。

# Java的环境搭建

我们了解java有许多版本,但目前企业中最常用的是8。而且高版本也是向下兼容。

旧的功能,想删除掉,但是不敢,因为不是每个公司都要重新编写程序的能力,如果新版本删除了旧功能,旧项目跑不起来了……

什么是JDK,JRE

# JDK

  • JDK,全称为Java Development Kit,Java开发工具包

JDK是提供给Java开发人员使用的,其中包含了Java的开发工具,也包括了JRE。所以安装了JDK,就不用单独安装JRE了。

# JRE

  • JRE,全称为Java Runtime Environment,Java运行环境

包括Java虚拟机和java程序所需的核心类库等,如果想要运行一个开发号的Java程序,计算机中只需要安装JRE即可。

简单而言,使用JDK的开发工具完成的Java程序,交给JRE去运行。

# JDK、JRE、JVM关系

image-20201121212925646

  • JDK = JRE + 开发工具集(例如Javac编译工具等)
  • JRE = JVM + Java SE标准类库

image-20201121213330582

如图,上面是官方的关系图。

# 下载安装

官方网站:

www.oracle.com

java.sun.com

Windows下用Chocolatey管理包工具 | Saul's blog (opens new window)

这里我建议win10使用Chocolatey安装JDK8

  • 不同的操作系统安装JDK方式不同。

  • 如果是手动安装

    安装路径不要中文,不要有空格 安装文件夹保留版本号

  • 64位系统装64位,32位系统装32位程序

# 环境变量

如果是用chocolatey 安装,不需要配置环境变量,因为自动配置了

如果你没有配置环境变量,你必须在java目录下,才可以执行以下指令

java.exe
javac.exe
java -version
1
2
3

如果都没有报错,代表安装成功。

但是如果想要在任何位置都能执行java程序,必须配置环境变量。

下面我以win10系统为例

  • 我的电脑>>属性>>高级系统设置>>高级>>环境变量

image-20201121215331142

可以在用户变量或者系统变量配置,区别是一个是只有当前win10用户能使用,另一个是所有用户都能使用。

# 编辑PATH,后面追加一个
%JAVA_HOME%\BIN;
# 新建一个JAVA_HOME环境变量
JAVA_HOME:C:\Program Files\Java\jdk1.8.0_211
1
2
3
4

配置成功后,重新打开cmd控制台,再试试

java.exe
javac.exe
java -version
1
2
3

就可以了。实现了在任何位置执行java程序。

当系统中存在多个JDK版本,只要看环境变量指向哪个版本,就使用哪个版本。

# 开发体验-HelloWorld

  • 步骤
  1. 将Java代码编写到拓展名为.java的文件中
  2. 通过javac命令对该java文件进行编译
  3. 通过java命令对生成的class文件进行运行

image-20201121221013879

# 编写代码

创建一个java源文件,比如是新建一个demo.java文件

class HelloWorld{
    public static void main(String[] args){
        System.out.println("你好!世界!");
    }
}
1
2
3
4
5

# 编译文件

# cd切换到java文件下的目录
javac demo.java
1
2
  • 会发现同一个目录生成一个HelloWorld.class文件,字节码的文件是根据源文件的类名生成。
  • 每次修改源代码,都需要重新编译一次。

win10系统不区分大小写,所以通过win10系统运行编译器的时候,不区分大小写也能找到文件。不信?试试新建大小写不同的文件夹,会提示重复。

# 运行class文件

java HelloWorld
1

这时候就成功运行了。

运行class文件的时候是区分大小写的

如果能运行java -v,java.exe程序,但是就是运行不了class文件,检查是不是配置了classpath,删除掉这个环境变量

# 注释(Comment)

  • 用于注解说明解释程序的文字就是注释。

注释提高了代码的阅读性,是调试程序的重要方法。

注释是一个程序员必须具有的良好编程习惯,将自己的思想通过注释先整理出来,再用代码去体现.

注释了的内容不参与编译,换句话说,编译以后生成的.class结尾的字节码文件中不包含注释信息

Java中的注释类型:

  • 单行注释
  • 多行注释
  • 文档注释

# 单行注释

class HelloWorld{
    // main方法是程序的入口
    // main方法的格式是固定的
    public static void main(String[] args){
        // 这是单行注释 如下的语句表示可以输出到控制台
        System.out.println("你好!世界!");
    }
}
1
2
3
4
5
6
7
8

# 多行注释

/*
  多行注释	
  main方法是程序的入口
  main方法的格式是固定的
 */
class HelloWorld{
    public static void main(String[] args){
        System.out.println("你好!世界!");
    }
}
1
2
3
4
5
6
7
8
9
10

多行注释不可以嵌套使用

# 文档注释

文档注释是Java特有的。注释内容可以被JDK提供的工具javadoc所解析,生成一套以网页文件形式体现的该程序的说明文档

  • 格式
/**
 * @author 指定Java程序的作者
 * @version 指定源文件的版本
 */
1
2
3
4
  • 操作方式
# folder是指文件夹名字
javadoc -d <folder> -author -version
1
2

image-20201122010927481

打开index.html

image-20201122011027610

# Java API的文档

  • API(Application Programming Interface,应用程序编程接口)是Java提供的基本编程接口。

习惯上:将语言提供的类库,都称为api。

  • Java语言提供了大量的基础类,因此Oracle也为这些基础类提供了相应的API文档,用语高速开发者如何使用这些类,以及这些类里包含的方法。

所谓API文档,就是针对于提供的类库如何使用,给的一个说明书。类似于《新华字典》

  • 下载地址 (opens new window),Additional Resources-Java SE 8 Documentation 下载。

# 良好的编程风格

  • 正确的注释和注释风格

使用文档注释来注释整个类或整个方法。

如果注释方法中的某一个步骤,使用单行或多行注释。

  • 正确的缩进和空白

使用一次tab操作,实现缩进。

运算符两边习惯性加一个空格。比如: 2 + 4 * 5.

  • 块的风格

Java API源代码选择了行尾风格

行尾风格

class HelloWorld{
    public static void main(String[] args){
        System.out.println("你好!世界!");
    }
}
1
2
3
4
5

次行风格

class HelloWorld
{
    public static void main(String[] args){
        System.out.println("你好!世界!");
    }
}
1
2
3
4
5
6

后期IDEA基本上都会帮你实现这些

# 常用的java开发工具

Intergrated Development Environment

# 文本编辑工具

  • 记事本
  • UltraEdit
  • EditPlus
  • TextPad
  • NotePad

# Java集成开发环境(IDE)

  • JBuilder
  • NetBeans
  • Eclipse
  • MyEclipse
  • IntelliJ IDEA

IntelliJ IDEA简称IDEA,目前Java开发效率最快的IDE工具,强烈推荐使用!

# 总结

Java程序编写-编译-运行的过程

  • 编写:将编写的java代码保存在以“.java”结尾的源文件中
  • 编译:使用javac.exe命令编译java源文件,会生成字节码文件。格式:javac 源文件名.java
  • 运行:使用java.exe命令解释运行字节码文件。格式:java 类名

提示

在java源文件中可以生命多个class。但是,只能最多有一个类声明为public。 而且要求声明为public的类的类名必须与源文件现同。

程序的入口是main()方法,格式是固定的。

  • args,arguments:参数
  • args可以用其他变量命名
  • 中括号可以写在args[]或者变量名[]
  • 但是推荐不作任何改变

输出语句

// 先输出数据,然后换行
System.out.println();
// 只输出数据
System.out.print();
1
2
3
4

提示

每一行执行语句都以“;”结束。

编译的过程

编译以后,会生成一个或多个字节码文件。字节码文件名与java源文件中的类名相同。

帮我改善此页面 (opens new window)
#Java基础
上次更新: 2020/12/18, 12:50:58
职业发展与提升
Java-关键字与保留字

← 职业发展与提升 Java-关键字与保留字→

最近更新
01
zabbix学习笔记二
02-28
02
zabbix学习笔记一
02-10
03
Linux访问不了github
12-08
更多文章>
Theme by Vdoing | Copyright © 2020-2022 Saul.J.Wu | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式