笔记说明:记录视频课程中老师写的笔记(相当于抄板书,目的是加强记忆),附带自己的思考和总结(用块引用格式标记),“学而不思则罔,思而不学则怠”,用反复学习思考总结的方式,督促自己进步。 由于自己是零基础学起,遇到困难是难免的,要做好心理准备,克服困难向前走。时常反思复习,温故知新,加深理解。
1.角色转变:从今天开始就是Java软件工程师了
2.什么是软件工程师?
是一种职位的名称,通常是通过“某种编程语言”完成软件的开发
3.什么是软件呢?
大家眼前的笔记本就是一台计算机,计算机包括两部分:
* 硬件:鼠标、键盘、显示器。主机内存的CPU、内存条、硬盘等等...(注意:计算机只有硬件是无法工作的,需要软件驱动才能工作)
* 软件:软件包括 系统软件和应用软件
系统软件:直接和硬件交互的软件,例如:windows7、winxp、win8、win10、Linux操作系统
应用软件:应用软件通常运行在系统软件中,例如:QQ运行在windows操作系统上。QQ就是应用软件。win7就是操作系统。
我们通常所说的软件开发一般都是指使用计算机编程语言完成“应用软件”的开发。
4.开发软件需要计算机编程语言,计算机编程语言很多,例如:C语言、C++、Java、.NET、C#、php。咱们主要学习那个编程语言呢?Java编程语言,java系列的技术。通过学习Java系列的技术完成应用软件开发。
5.Java软件工程师:通过Java编程语言完成应用软件的开发。
6.学习之前先安装一个好用的文本编辑器,这里安装的是EditPlus3
* 安装EditPlus之后取消文件自动备份
* 设置字体
...
7.作为程序员要求掌握最基本的windows相关的DOS命令
具体已经整理到专题博客:https://blog.csdn.net/CealWang/article/details/104145647
8.关于windows操作系统的文件扩展名的设置
文件的扩展名决定文件的类型
作为Java程序员,以后要新建.java结尾的文件,所以必须保证文件的扩展名是.java
做法:打开计算机-->组织-->文件夹和搜索选项-->查看-->隐藏已知文件类型的扩展名,把前面对勾去掉
9.计算机语言发展史
9.1 什么是计算机<编程>语言?
提前的人为的制定好的一套交流规则,有时候,有的语法是需要死记硬背的,不需要问为什么。而只要遵守这套语法规则,那么人和计算机之间就可以很好地沟通、交流。这就是计算机编程语言。计算机编程语言有很多种,例如:C语言、C++、Java、PHP...
9.2 计算机语言发展史:
第一代语言:机器语言
主要编写二进制码,直接编写100101010101这样的二进制,以打孔机为代表。体积大,容错率小
第二代语言:低级语言
主要以汇编语言为代表,在低级语言中已经引入了一些英语单词,例如变量赋值采用mv
第三代语言:高级语言
几乎和人类的语言完全相同,即使是没有学习计算机编程,只要看到这段代码就知道该代码主要完成什么功能。例如:C语言、C++、Java、....
总之,编程语言的发展方向是:向着人类更加容易理解的方向发展。
10.Java语言发展史:
* Java语言诞生于1995年。在1995年之前SUN公司(太阳微电子公司:该公司目前被Oracle收购了。Oracle甲骨文:做数据库的。)为了占领智能电子消费市场,派James Gosling领导团队开发了一个Oak(橡树)语言。
* 1996年:JDK1.0诞生
- 什么是JDK? Java开发工具包;做Java开发必须安装的一个工具包,该工具包需要从官网下载。目前SUN被Oracle收购了,所以下载需要去Oracle的官网下载。http://www.oracle.com
* 目前JDK最高版本是:Java8/JDK1.8/JDK8
课后任务:1.查一下2020年最高版本
2.自己电脑有没有安装java
在DOS窗口中,用java -version 命令查了一下,我的电脑已经安装了java 1.8.0_91 版本
* Java包括三大块:
- JavaSE(Java标准版)
- JavaEE(Java企业版)
- JavaME(Java微型版)
其中JavaSE是基础
反思:第一次把java三种对应的版本理清楚了,以前都是模糊印象,没有注意区分过。
专门学了java课程,要注意区分不同的概念,才能更好的入门。
11.Java语言特性【开源、免费、跨平台、纯面向对象】
* 简单性:
相对而言的,例如java中不再支持多继承,C++是支持多继承的,多继承比较复杂;C++中有指针,Java中屏蔽了指针的概念。所以相对来说Java是简单的。
Java语言底层是C++实现的,不是C语言。
* 面向对象
Java是纯面向对象的,更符合人的思维模式,更容易理解。
* 可移植性
什么是可移植性? Java程序可以做到 一次编译,到处运行。如:Java程序可以在windows操作系统上运行,不作任何修改的情况下,同样可以直接放在Linux操作系统上运行。这被称作Java程序的可移植性,或者叫做跨平台。
windows操作系统和Linux操作系统的内核肯定不同,这两个操作系统执行指令的方式也不一样。显然,java程序不能直接和操作系统打交道,因为java程序只有一份,操作系统执行原理都不同。
SUN团队很聪明,想了一个办法,他们让java程序运行在一台虚拟的计算机中,这个虚拟的计算机叫做Java虚拟机,简称JVM。Java虚拟机再和底层的操作系统打交道。
在这里自我总结一下:Java虚拟机,为了解决java跨平台运行的问题,实现java程序的可移植性
重点理解可移植性(跨平台)
* 多线程
* 健壮性
和自动垃圾回收机制有关,自动垃圾回收机制简称GC机制。Java语言运行过程中产生的垃圾是自动回收的,不需要程序员关心。(C++语言中,程序员分配一块空间,一定要记得释放掉一块空间,否则时间久了会造成大量内存泄露,导致内存溢出,程序崩溃;Java语言中,程序员只负责申请空间,不需要释放,Java语言会自动回收垃圾)
* 安全性
....
12.Java的加载与执行
* Java程序的运行包括两个非常重要的阶段
- 编译阶段
- 运行阶段
* 编译阶段
- 编译阶段主要的任务是检查Java程序是否符合Java语法,符合Java语法则能够生成正常的字节码文件(xxx.class);不符合Java语法规则无法生成字节码文件
- 字节码文件中不是纯粹的二进制,这种文件无法在操作系统中直接执行
- 编译阶段的过程:
* 程序员需要在硬盘的某个位置<位置随意>新建一个扩展名为.java的文件,该文件被称为源文件,源文件中编写的是Java源代码/源程序。这个源程序不能随意编写,必须符合Java语法规则
* Java程序员需要使用JDK中自带的javac.exe命令进行Java程序的编译。
javac在哪用? 怎么用?
- 在DOS命令窗口中使用。
- javac的使用规则:
javac java源文件的路径
javac是一个java编译工具/命令。
* 一个java源文件可以编译生成一个或多个.class文件。【以后再说】
* 字节码文件/class文件是最终要执行的文件,所以class文件生成之后,删除java源文件并不会影响java程序执行,但是一般不要删除java源程序,因为class文件最终执行效果可能不是我们想要的,这时候需要回头修改java源程序,然后将java源程序重新编译生成新的class文件,然后再运行新的class文件生成新的效果。
* 编译结束后,可以将class文件拷贝到其他操作系统中运行。【跨平台】
* 运行阶段 【可以在其他操作系统中运行,跨平台】
- JDK安装之后,除了自带一个javac.exe,还有另一个工具/命令,叫做java.exe,主要负责运行阶段。
- java.exe在哪里用?怎么用?
- 在DOS窗口中使用
- java.exe使用规则:
java 类名
例如:
硬盘上有一个A.class,那么就这样用: java A
硬盘上有一个B.class,那么就这样用: java B
硬盘上有一个C.class,那么就这样用: java C
千万要注意:不能写成这样:java A.class【这种方式是错误的,不要带扩展名,要记住】
- 运行阶段的过程:
* 打开DOS命令窗口
* 输入 java A
* java.exe命令启动Java虚拟机(JVM),JVM会启动类加载器ClassLoader
* ClassLoader会去硬盘上搜索A.class文件,找到该文件则将该字节码文件装载到JVM中。
* JVM将A.class字节码文件解释成二进制1010101010这样的数据。
* 然后操作系统执行二进制和底层硬件平台进行交互。
13.开始第一个Java程序
* 保证计算机中已经安装了文本编辑器Editplus(我的电脑安装了Notepad++,试试能不能用)
* 安装JDK【JDK一般需要从Oracle的官网下载】,我们这里讲解的是JDK7
13.1 JDK、JRE、JVM的关系,搞清楚
* JDK:Java开发工具包,Java开发人员一定要安装
* JRE:Java Runtime Environment,Java运行时环境,Java程序开发完之后,只要有一个运行环境就可以运行Java程序。
* JVM:Java虚拟机,Java程序最终运行在JVM上的,JRE包括Java虚拟机(JVM)的。JVM没有单独的安装软件。
* JDK和JRE都有单独的安装软件,一般JDK都会自带一个JRE。如果不在这台电脑上做Java开发,仅仅是需要运行Java程序,不需要安装JDK,只安装JRE就可以,JRE的体积比较小。比如在客户的机器上运行程序,只需安装JRE,而JRE中包含了JVM。三者的关系可以用下图表示。
13.2 JDK目录介绍:
JDK/bin:该目录下存放了很多命令,例如javac.exe和java.exe。javac.exe负责编译,java.exe负责运行
13.3 开发HelloWorld.java源程序【照抄,不要问为什么,注意大小写】
13.4 将HelloWorld.java源程序通过javac工具进行编译:
- 首先需要解决的问题是:javac命令是否可用
- 打开DOS命令窗口,直接输入javac,然后回车,出现报错:
'javac'不是内部或外部命令,也不是可运行的程序或批处理文件。
以上问题是因为:windows操作系统无法找到javac命令文件
- 怎么解决以上javac不可用的问题?
- windows操作系统是如何搜索硬盘上某个命令的呢?
* 首先从当前目录下搜索
* 当前目录搜不到的话,会从环境变量path指定的路径中搜索某个命令
* 如果都搜索不到,则报以上错误。
- 配置环境变量path
* 注意:path环境变量和java语言没有关系,path环境变量是属于windows操作系统的一个知识点,是专门给windows操作系统指路的。
* java要想能随意使用,需要将javac所在的目录配置到环境变量path中,用法:path=xxxx;D:\programs\Java\jdk1.8.0_91\bin 路径之间要用分号隔开,必须是英文分号“;”。
* 修改环境变量后,一定要先退出DOS窗口,用exit命令退出,再重新打开一个
- 环境变量修改说明,如下图,环境变量有两个部分,:
- javac命令怎么用?
javac java源文件路径
注意:路径包括绝对路径和相对路径两种方式
* 绝对路径方式:1.开始-运行-cmd,打开DOS命令窗口
2.输入javac 再直接把java源文件拖拽到javac后面,会直接显示java源文件所在的绝对路径
3.回车
没有报错的话,会在java源文件所在目录下生成一个.class文件,编译成功了。
编译时,我的程序出现了一个报错,"String"的"S"没有大写。注意java是大小写敏感的,编译过程如下图:
* 相对路径方式:
1.打开java源程序所在的文件,在目录栏输入cmd,打开DOS命令窗口,在源文件所在的目录操作DOS命令
2.输入dir,回车,查看当前目录下的文件,确定路径是对的
3.输入del *class,删除HelloWorld.class文件
4.直接输入javac HelloWorld.java
5.回车,生成class文件,编译成功
收获:1.步骤1打开DOS命令窗口的方式,将DOS窗口中的目录切换到源文件所在目录下,比较便捷,不用依次切换盘符;2.记得用dir检查目录是否正确;3.学到了DOS命令的删除命令del
13.5运行java程序:
- 需要使用java.exe命令
- 首先测试java命令是否可用
- 使用方式:java 类名
硬盘上有HelloWorld.class,那么类名就是:HelloWorld
java HelloWorld
一定要注意:java命令后面跟的不是文件路径,是一个类的名字。
- 首先你需要将DOS窗口中的目录切换到HelloWorld.class文件所在目录。dir确定当前目录下真的有HelloWorld.class文件。
- 然后直接执行:java HelloWorld 敲回车,效果就是输出 Hello World! 运行结束。效果如下: