前言

去年四月份大一下半学期正式开始学习Java,一路从java基础、数据库、jdbc、javaweb、ssm以及Springboot,其中也学习了一段时间数据结构。

在javaweb期间做了图书商城项目、ssm阶段做了权限管理项目,springboot学了之后手痒去b站看视频做了个个人博客项目(已部署到服务器,正在备案中)。期间也不断进行做笔记,总结,但是越学到后面越感觉有点虚,觉得自己基础还有欠缺。

之后一段时间我会重新回顾java基础、学习一些设计模式,学习多线程并发之类,以及接触一些jvm的相关知识,越学到后面越会感觉到基础的重要性,之后也会以博客形式输出学习的内容。

现在整理的java知识基础点是在之前学习尚硅谷java课程的笔记基础之上加工汇总,部分图片会引用尚硅谷或网络上搜集或自己画,在重新回顾的过程中也在不断进行查漏补缺,尽可能将之前困惑的点都解决,让自己更上一层楼吧。

博客目录索引博客目录索引(持续更新)


一、认识Java

历史介绍

1991年Green项目,开发语言最初名为Oak(橡树)。

1994年,开发组认为Oak非常适合于互联网。

1995年5月,Sun Microsystems公司推出Java程序设计语言(Oak改名Java)。

1996年,发布JDK1,约8.3万个网页应用使用Java技术来制作。

  • 最原始版本Java 1.02版本有250个类,bug较多,其中applet是重点。1.02到1.1版本都算是Java。

1997年,发布JDK1.1,JavaOne会议召开,创当时全球同类会议规模之最。

  • 此时版本有500个类,功能更强,更好用,开始受欢迎,适合于开发图形界面(Awt组件)

1998年,发布JDK1.2,同年发布企业平台J2EE(Enterprise Edition,企业版)。

1999年,Java分为J2SE、J2EE和J2ME,JSP/Servlet技术诞生。

  • 此时有时可以达到平台原始速度,用来书写正规的企业级应用程序或移动应用程序
  • J2SE(Java 2 Etandard Edition):Java的标准版,用于标准的应用开发
  • J2EE(Java 2 Enterprise Edition):Java的一种企业版用于企业级的应用服务开发
  • J2ME(Java 2 Micro Edition):Java的微型版,常用于手机上的开发
    • J2EE,J2SE,J2ME是java针对不同的的使用来提供不同的服务,也就是提供不同类型的类库。

2004年,发布里程碑式版本:JDK1.5,为凸显版本重要性,更名为JDK5.0

  • 此版本有3500个类,对其语言本身也做了很大改变,更容易开发

2005年,J2SE又叫JavaSE,J2EE改为又叫JavaEE,J2ME又叫JavaME。

2009年,Oracle公司收购SUN,交易金额为74亿美元。

2011年,发布JDK7.0版本。

2014年,发布JDK8.0版本,是继JDK5.0以来变化最大的版本。

2017年,发布JDK9.0,最大限制实现模块化。

2018年3月,发布JDK10.0,版本号也称为18.3。

2018年9月,发布JDK11.0,版本号成为18.9。

现今JavaSE已经出到15版本了,我们暂时只需要熟悉JDK8的语法即可!

说明:对于Java3或Java4是从来没有出现过的,到1.5版本时,由于认为进步幅度太大,需要全新名称,冒出Java5.0,用5来对应1.5。


Java介绍

Java一开始兴起是因为它能够在web浏览器中运行,也被称为Java小程序(applet),它可以嵌套在HTML代码中。

后台开发语言Java(中大型首选语言)、PHP,Python(中小型)、Go(具有Java效率,又有c++速度),Node.js

再详细介绍下几个Java技术体系平台

  • JavaSE:也称为标准版,支持面向桌面级应用的Java平台,提供了完整的Java核心API,所有从事Java开发的都是先从JavaSE开始学起。
  • JavaEE:企业版,主要用于web应用程序开发,为开发企业环境下的程序提供一套解决方案,包含技术如servlet、JSP等。
  • JavaME:小型版,支持Java程序运行在移动端(手机、PDA)上平台,针对于移动终端的支持。
  • Java Card:支持一些Java小程序(Applets)运行在小内存设备(如智能卡)上的平台。

优点:舍弃指针,运算符重载,可以自动清理。

Java特点:面向对象,具有健壮性,跨平台性,安全性。

三大特性:封装,继承,多态。


二、认识及安装JDK

1、认识JDK

上述是对Java的初步认识与介绍,我们想要编译Java代码并执行还需要下载JDK。一般来说下载JDK8即可,JDK中的包含了几个内容如下图:

  • JDK(Java development kit):Java开发工具
  • JRE(Java runtime environment):Java运行环境
  • JVM(Java virtuak machine):Java虚拟机
  • 总结一下JDK=JRE+开发工具集(例如Javac编译工具等),JRE=JVM+JavaSE标准类库

我们再看这张图一目了然JDK、JRE、JVM的关系

看一下各自包含的内容


2、安装JDK

配置与测试

JDK下载地址:JDK官网下载地址

下载JDK8即可,直接都默认下一步即可,我是直接放在C盘以防出现其他问题。

两种方式,建议下面第二种方式

安装好之后,就是配置环境变量了:

方式一:直接配置路径,不建议

首先找到你安装JDK路径下的bin目录,复制该路径

接着桌面此电脑右击—属性—高级系统设置—环境变量,在上面的用户变量区域双击path,只有添加如C:\Program Files\Java\jdk1.8.0_201\bin即可!!!

  • 系统变量与用户变量实际上就是覆盖范围不一样而已,用户变量覆盖你登陆的用户,系统变量就是所有用户通用。

方式二:配置JAVA_HOME变量,推荐使用该方式!!!

在系统变量中新建一个变量,变量为JAVA_HOME,值为C:\Program Files\Java\jdk1.8.0_201。需要注意值的路径并不在bin目录里。

然后在系统变量中的path双击后新增两条%JAVA_HOME%\bin%JAVA_HOME%\jre\bin

  • 其中的% %代表获取其中的值,实际上也就是相当于C:\Program Files\Java\jdk1.8.0_201\bin,%%引用变量作用。

此时肯定会有疑问:为什么要配置JAVA_HOME这个变量值呢?

:方便引用、归一原则方便修改、还有最重要一点就是有些第三方软件会引用约定好的JAVA_HOME变量,若不配置会无法使用。

测试配置是否生效

配置好环境之后,我们打开cmd来进行测试,命令:java -version以及Javac

当出现如上图信息就表示已经安装并配置成功了!!!


配置注意及不生效解决

上面配置过程是按照win10方式的,配置时注意点以及配置后问题

配置注意点:

对于win7用户,编辑用户path变量时,会写在一起,就写在开头并且添加一个;号

对于win10用户,点击用户path变量时,点击新增即可。

出现问题:有时候执行javac执行不了解决方法?

对于win10的用户,将path配置的变量值向上移即可,提高优先级,再去试试是否生效。


3、认识Java虚拟机

之前说到它的特点有个跨平台性,这就离不开Java的JVM虚拟机,同一个java程序,在JVM虚拟机编译之后可以在三个不同的操作系统中都可以运行,如下图:

Java的核心机制:Java虚拟机以及垃圾回收机制。但是Java程序还是会有内存泄漏以及内存溢出的问题。


三、Java的工作方式

工作过程

①首先编写Java源代码文件,名称例如Main.java。

②通过使用JDK中的编译器来运行源代码,若是有错会报错,没有错在同目录下产出字节码文件如Main.class。

  • 编译命令:javac Main.java
  • 这个字节码文件能够被任何支持Java的装置(如jvm虚拟机)转移成可执行的内容,编译后的内容与平台无关。

③执行字节码文件,使用jvm虚拟机来进行读取与执行字节码。

  • 执行命令:java Main java后只需要字节码的前缀名称即可!!!

注意说明

在java源文件中可以声明多个类,但是只能有一个类可以声明为public,并且要求声明public的类的类名与源文件的名称一样,见如下:

//源代码文件名称:Main.java
public class Main{
public static void main(String[] args){
....
}
} class AA{
}
class BB{
}

将源代码编译为字节码文文件,例如编译上面java源代码会编译为3个字节码文件分别是:Main.class AA.class BB.class

我们要执行哪个class文件,直接java class前缀名,注意执行指定的字节码文件必须要有main方法否则会报找不到Main方法的错误。


四、javadoc小工具

前言

之前使用了进行编译源代码的java以及执行字节码文件的javac工具,接下来演示另一个工具javadoc,这些都是下载jdk后的bin目录里的执行文件:

正因为我们配置了环境变量,我们才能在其他目录下的cmd中进行使用这些可执行程序,否则只能在这个目录下进行编译执行操作等。

javadoc使用

javadoc.exe:是JDK所提供的工具,能讲注释内容进行解析,从而生成一套网页文件形式体现的程序说明文档。

我们先准备一个java源文件:

/**
文档注释.
这是我的第一个java文档.
@author changlu
@version v1.0
*/
public class Main{
/**
这里的main表示入口
*/
public static void main(String[] args){
System.out.println("hello world");
}
}

注意:要使用ANSI编码格式保存,因为windows默认使用的是ANSI,使用其他的话,你中文会变成乱码。

接下来,我们在源代码路径下的cmd中输入:javadoc -d Main -author -version Main.java

  • Main:表示等会生成一套说明文档目录名称
  • -author:表示包含@author段
  • -version:表示包含@version段
  • Main.java:表示源代码文件

执行完之后,当前执行命令目录会有一个Main文件夹,打开目录中的index.html即可看到HTML形式的说明文档,文档样式如下:

上述只是一个简单的小例子,更多实际用法可以去官网查看:JavaDoc


五、IDE集成开发环境

使用普通的文本编辑器进行java开发通常效率并不是很高,初学者可以使用Notepad++来进行学习编写,其它的IDE工具包含:JBuilderNetBeansEclipseMyEclipse以及IntelliJ IDEA

经常使用的一般是Eclipse和IDEA,Eclipse是免费的,IDEA企业版是需要收费不过可以使用pj的,相对于IDE开发工具来说IDEA是十分人性化使用起来特别舒服,谁用谁知道。

下载途径:微信公众号(软件管家、火耳软件安装等),还有一些网站上也会有。


参考文章

[1]. JAVA中J2SE和J2EE和 J2me关系

[2]. jdk与jre的区别

[3]. 【关于基础】——-1、玩好JDK,面试不用愁。(附JAVA知识体系图) 重要重要

[4]. 书籍《Head First Java 2.0》

[5]. 尚硅谷_Java零基础教程(宋红康主讲)


我是长路,感谢你的阅读,如有问题请指出,我会听取建议并进行修正。

欢迎关注我的公众号:长路Java,其中会包含软件安装等其他一些资料,包含一些视频教程以及学习路径分享。

学习讨论qq群:891507813 我们可以一起探讨学习

注明:转载可,需要附带上文章链接

01、初识Java的更多相关文章

  1. 【Java基础】【01初识Java】

    01.01_计算机基础知识(计算机概述)(了解) A:什么是计算机?计算机在生活中的应用举例 计算机(Computer)全称:电子计算机,俗称电脑.是一种能够按照程序运行,自动.高速处理海量数据的现代 ...

  2. JavaSE教程-01初识Java

    1.计算机的概念 软件+硬件 2.操作系统 Windows.Mac.Linux.Unix等 3.计算机编程语言 计算机语言是一种人与计算机沟通的媒介. 分类: 机器语言:都是基于二进制的方式,由0和1 ...

  3. 081 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 06 new关键字

    081 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 06 new关键字 本文知识点:new关键字 说明:因为时间紧张,本人写博客过程中只是 ...

  4. 080 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 05 单一职责原则

    080 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 05 单一职责原则 本文知识点:单一职责原则 说明:因为时间紧张,本人写博客过程中只是 ...

  5. 079 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 04 实例化对象

    079 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 04 实例化对象 本文知识点:实例化对象 说明:因为时间紧张,本人写博客过程中只是对知 ...

  6. 078 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 03 创建类

    078 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 03 创建类 本文知识点:创建类 说明:因为时间紧张,本人写博客过程中只是对知识点的关 ...

  7. 077 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 02 类和对象

    077 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 02 类和对象 本文知识点:类和对象 说明:因为时间紧张,本人写博客过程中只是对知识点 ...

  8. 076 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 01 Java面向对象导学

    076 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 01 Java面向对象导学 本文知识点:Java面向对象导学 说明:因为时间紧张,本人 ...

  9. 初识Java

    Java是一种简单的.面向对象的.分布式的.解释的.安全的.可移植的.性能优异的多线程语言.它以极强的安全性.平台无关性.硬件结构无关性.语言简洁.面向对象的特点,在网络编程语言中占据了无可比拟的优势 ...

  10. SSH 框架学习之初识Java中的Action、Dao、Service、Model-收藏

    SSH 框架学习之初识Java中的Action.Dao.Service.Model-----------------------------学到就要查,自己动手动脑!!!   基础知识目前不够,有感性 ...

随机推荐

  1. Spring boot freemarker 配置

    spring: datasource: type: com.alibaba.druid.pool.DruidDataSource driverClassName: com.mysql.jdbc.Dri ...

  2. CCF-交通规划-dijkstra+贪心

    交通规划 问题描述 G国国王来中国参观后,被中国的高速铁路深深的震撼,决定为自己的国家也建设一个高速铁路系统. 建设高速铁路投入非常大,为了节约建设成本,G国国王决定不新建铁路,而是将已有的铁路改造成 ...

  3. Codeforces Round #626 (Div. 2) D. Present(位运算)

    题意: 求n个数中两两和的异或. 思路: 逐位考虑,第k位只需考虑0~k-1位,可通过&(2k+1-1)得到一组新数. 将新数排序,当两数和在[2k,2k+1)和[2k+1+2k,2k+2)之 ...

  4. 2019icpc徐州站 Cat 计蒜客 - 42540 && The Answer to the Ultimate Question of Life, The Universe, and Everything. 计蒜客 - 42545

    VJ链接:https://vjudge.net/contest/412095#problem/A Cat 计蒜客 - 42540 题意: 给你一个区间[L,R],给你现在拥有的钱S.你需要从[L,R] ...

  5. codeforces622E Ants in Leaves (dfs)

    Description Tree is a connected graph without cycles. A leaf of a tree is any vertex connected with ...

  6. codeforces 949B :A Leapfrog in the Array 找规律

    题意: 现在给你一个n,表示有2*n-1个方格,第奇数方格上会有一个数字 1-n按顺序放.第偶数个方格上是没有数字的.变动规则是排在最后一个位置的数字,移动到它前边最近的空位 . 直到数字之间没有空位 ...

  7. 二叉排序树的构造 && 二叉树的先序、中序、后序遍历 && 树的括号表示规则

    二叉排序树的中序遍历就是按照关键字的从小到大顺序输出(先序和后序可没有这个顺序) 一.以序列 6 8 5 7 9 3构建二叉排序树: 二叉排序树就是中序遍历之后是有序的: 构造二叉排序树步骤如下: 插 ...

  8. XHXJ's LIS HDU - 4352 最长递增序列&数位dp

    代码+题解: 1 //题意: 2 //输出在区间[li,ri]中有多少个数是满足这个要求的:这个数的最长递增序列长度等于k 3 //注意是最长序列,可不是子串.子序列是不用紧挨着的 4 // 5 // ...

  9. 一、Python简介及下载安装

    一.关于Python Python是目前比较受欢迎的脚本语言之一,具有简洁性.易读性以及可扩展性的特点. Python与Java均可以写网页,也可以写后台功能,区别是Python执行效率低,开发效率高 ...

  10. K8S(14)监控实战-grafana出图_alert告警

    k8s监控实战-grafana出图_alert告警 目录 k8s监控实战-grafana出图_alert告警 1 使用炫酷的grafana出图 1.1 部署grafana 1.1.1 准备镜像 1.1 ...