第一课 初步认识 Java
一、目标
1.了解程序的含义。
2.知道主流的编程语言有哪些。
3.了解Java的历史和前景。
4.会安装、配置Java开发环境。
5.会用记事本开发Java。
6了解Java虚拟机和平台原理。
7.知道反编译工具。
8.了解IDE和掌握esplice的使用。
9.会解决遇到的问题。
二.
Ⅰ. 程序
1.程序是一系列步骤的集合体。比如:要把大象装进冰箱里就是一个程序,第一步:打开冰箱门,第二步:把大象塞进去,第三部:关上冰箱门。
2.计算机程序就是在计算机中为了达到某种目的,或者为了实现何种效果而进行的一系列指令合集。比如:手机/电脑等中各种软件游戏,办公、音频软件;日常使用工具:银行ATM、挂号机;日常用器:路由器、电视、洗衣机…
3.程序员:专门编写计算机程序的人员。有很多别称:程序猿、程序媛、工程师、攻城狮、开发小gg 、开发小mm、码农…
Ⅱ. 主流的编程语言
1.程序就是在计算机中为了达到某种目的,或者为了实现何种效果而进行的一系列指令合集。程序设计语言又叫编程语言。
2.计算机识别的是机器语言(二进制),人类通用的数字是十进制的。
3编译器(解释器):人类很难记忆计算机指令所需的二进制数字,所以发明了编译器。发展到今日,已经可以用自然语言去表述计算机指令。然而直接使用自然语言出现的表述会太多(各有各的表述方法),所以开发者们定义了一套语法(基于自然语言),我们只需要按照人家语法去给计算机下达指令即可。
4.主流编程语言:Java、C、C++、Python、C#、PHP、JavaScript
5.编程语言分类:(1)按照是否接近计算机底层分为高级编程和低级编程语言:①Java、python是一种高级编程语言;②汇编语言是一种低级编程语言。(2)按照是否可以在运行时改变代码结构(运行前还是运行后确定变量的数据类型)分为动态语言和静态语言:①静态语言有C、C++、C#、Java…②动态语言有JavaScript、PHP、Python、Erlang…
Ⅲ. Java历史
-
1991年 Sun公司的詹姆高斯林博士领导开发Green project,出现了oak语言
-
1995年 oak更名为Java,正式诞生。
-
1996年 发布Java1.0版本
-
1998年 java发布1.2版本,从此Java出现了三个分支:
①J2 SE(Standard Edition)标准版本:语法基础、标准、核心。利用它可以开发桌面程序(这个分支被C++,C,C#抢占了市场)
②J2 ME(Micro Edition)微版本:用于移动端开发.利用它可以开发移动端程序(在这个分支被Android抢占了市场)
③J2 EE(Enterprise Edition)企业版本:用于企业级开发(微服务、大数据…),例如企业程序中的网站、平台、管理系统…
-
2004年 J2系列和1.xxx系列更改为Java5…
-
2009年 被Oracle收购
-
2013年 Java8出现
-
2019年1月1日 Java8后续版本收费
Ⅳ. 熟练掌握安装、配置Java开发环境
(1)从官网上下载JDk,选择合适的版本(针对电脑操作系统和位数来决定),安装JDk和JRE是为了准备:编译器、虚拟机。
(2)jdk安装目录中程序要了解Javac(Java complier java 编译器);java(无法直接运行会闪退,需要在DOS系统中运行)。
(3)在Windows中可通过Windows+R键->cmd可进入dos系统。(输入cmd右击以管理员身份运行)
在此系统中用命令(command)来执行想做的任务(熟练运用table补全,Dir查看当前目录内容,以及上下键来查看以前命令。)
一些常用的DOS操作:
打开\进入文件夹:cd 要进入的文件夹名/路径
进入上一级文件夹:cd…
进入当前磁盘根的目录(磁盘直接目录):cd/
查看文件夹下的所有内容:dir (directory目录)
-
被标注了dir内容表示他是一个文件夹
-
没被标注的是表示它是一个文件
-
**…**是表示上一级文件夹
-
**.**是表示当前文件夹
-
切换盘符:盘符名:
(4)变量设置
①环境变量:Windows系统中内置的一些信息,方便我们在任何程序中,任何位置使用的信息。
- path(路径)环境变量:在path环境变量中存储了一些在系统的任何程序,任何位置都能用到的路径信息。
- 作用:在存储到path环境变量之后,可以在DOS系统中的任何位置执行该程序。
DOS系统中当你输入了一个程序名,它会自动在当前文件夹下查找是否有此程序,如果有此程序,就运行,没有此程序就会来到path环境变量中寻找存储的路径中是否有该程序,有的话,就运行,否则提示错误…
②环境变量设置的具体步骤
环境变量是在系统的高级设置中存储的。
-
打开开始菜单,搜索环境变量 -> 系统环境变量
-
先在系统变量中创建
JAVA_HOME
的系统变量,变量值为Java安装目录的bin目录的上一级。- JAVA_HOME配置的意义在于我们后期的很多软件都会识别此系统变量。
- JAVA_HOME配置的意义在于我们后期的很多软件都会识别此系统变量。
-
然后在path中添加
%JAVA_HOME%\bin
- %JAVA_HOME%引用JAVA_HOME系统变量的值,然后拼接上\bin之后,它就变成了最初我们单纯的在path中配置的java程序路径。
Ⅴ.用记事本程序编写Java程序
(1)利用对应语言的语法去编写代码(指令),我们使用记事本程序来编写Java程序。
(2)步骤
- 创建一个文本文档(记事本)
打开记事本编写源代码(一个程序的原始、根源代码)
- Java程序的基本架构
public class HelloWorld{} 类声明 以后编写Java代码都要先写此内容
public static void main(String[] args){} 方法声明 声明的是主方法 程序的入口 运行必须写
System.out.println(); 调用系统的输出流 可以在屏幕上打印出内容
public class HelloWorld{
public static void main(String[] args){
System.out.println("Hello World!");
}
}
-
使用javac.exe程序来编译源代码
更改文件名为
HelloWorld.java
编译器只识别.java
文件
javac 要编译的源代码路径
编译之后会出现一个.class
文件(字节码/byte code文件)
4.使用java.exe
程序来运行编译好的字节码文件
java 字节码文件的文件名
注意:不需要写扩展名.class
5.或者用记事本写完扩展名改为.java后,在空白处按住shift右击打开Powershell窗口,然后找到文件路径,用javac运行。
①注释:给代码添加的解释性的词汇、内容,便于开发人员和维护人员阅读。
要求:前期我们所编写的代码都要添加40%以上的注释
Java注释语法三种:
- 单行注释:
//
- 多行注释:
/*注释内容*/
- (了解)文档注释:
/** 注释内容 */
②注意事项:
添加注释时应该添加在要解释的代码行的上方或者右侧。
注释的内容是不会被编译的,且不会被执行,不会影响到别的代码。
合理的注释有助于我们阅读代码,调整思路。
/*
*作者:long天
*描述:是自己的第一个java程序
*时间:2019-09-04 9:12:10
*/
public class HelloWorld{
public static void main(String[] args){
// 这是输出语句 输出Hell World这句话
System.out.println("Hello World!");
}
}
(4)代码规范
一个好的代码应该是给人看的,而不是给机器看的。
-
代码必须注意单词的大小写(严格区分)
-
代码要注意缩进,表现出层级关系,缩写四个空格。
-
声明结构注意花括号,左侧花括号不换行,右侧花括号换行,花括号是成对出现,结尾花括号注意和此声明开头对齐。(在esplice中可用Ctrl+shift+F可使代码格式化,但不是万能的)
-
Java源代码文件名应该遵循大驼峰命名法(帕斯卡命名法),不允许使用中文命名
例如:HelloWorld 首字母大写,如果有多个单词,后面的每个单词首字母都大写。
Ⅵ . 了解Java虚拟机与跨平台的原理
-
Java之所以一经出世就改变了开发行业的格局,是因为java采用了虚拟机运行的机制实现了跨平台,不采用直接编译二进制文件,而被编译为伪二进制文件(Java中的字节码文件.class文件)。
-
Java采用在各种平台的上对应的虚拟机,然后我们编写的Java代码,以后会直接运行在Java虚拟机上,这样就实现了跨平台,但是又因为虚拟机的原因,无法直接面向计算机,性能会有损失(虚拟机决定)(后续关于jvm深入研究调优有时间的可以看看《深入java虚拟机第二版》周志明这本书)
-
JVM(Java虚拟机)
-
从这个结构不难看出,class文件被jvm装载以后,经过jvm的内存空间调配,最终是由执行引擎完成class文件的执行。当然这个过程还有其他角色模块的协助,这些模块协同配合才能让一个java程序成功的运行,下面就详细介绍这些模板,它们也是后面学习jvm最重要的部分。
内存空间:
JVM内存空间包含:方法区、java堆、java栈、本地方法栈。
方法区是各个线程共享的区域,存放类信息、常量、静态变量。
java堆也是线程共享的区域,我们的类的实例就放在这个区域,可以想象你的一个系统会产生很多实例,因此java堆的空间也是最大的。如果java堆空间不足了,程序会抛出OutOfMemoryError异常。
java栈是每个线程私有的区域,它的生命周期与线程相同,一个线程对应一个java栈,每执行一个方法就会往栈中压入一个元素,这个元素叫“栈帧”,而栈帧中包括了方法中的局部变量、用于存放中间状态值的操作栈。如果java栈空间不足了,程序会抛出StackOverflowError异常,想一想什么情况下会容易产生这个错误,对,递归,递归如果深度很深,就会执行大量的方法,方法越多java栈的占用空间越大。
每个帧代表一个方法,Java方法有两种返回方式,return和抛出异常,两种方式都会导致该方法对应的帧出栈和释放内存。
③ 栈运行原理
栈中的数据都是以栈帧(Stack Frame)的格式存在,栈帧是一个内存区块,是一个数据集,是一个有关方法和运行期数据的数据集,当一个方法A被调用时就产生了一个栈帧F1,并被压入到栈中,A方法又调用了B方法,于是产生栈帧F2也被压入栈,B方法又调用了C方法,于是产生栈帧F3也被压入栈…… 依次执行完毕后,先弹出后进......F3栈帧,再弹出F2栈帧,再弹出F1栈帧。 遵循“先进后出”/“后进先出”原则。 帧的组成:局部变量区(包括方法参数和局部变量,对于instance方法,还要首先保存this类型,其中方法参数按照声明顺序严格放置,局部变量可以任意放置),操作数栈,帧数据区(用来帮助支持常量池的解析,正常方法返回和异常处理)。
本地方法栈角色和java栈类似,只不过它是用来表示执行本地方法的,本地方法栈存放的方法调用本地方法接口,最终调用本地方法库,实现与操作系统、硬件交互的目的。
PC寄存器,说到这里我们的类已经加载了,实例对象、方法、静态变量都去了自己改去的地方,那么问题来了,程序该怎么执行,哪个方法先执行,哪个方法后执行,这些指令执行的顺序就是PC寄存器在管,它的作用就是控制程序指令的执行顺序。
执行引擎当然就是根据PC寄存器调配的指令顺序,依次执行程序指令。
静态变量+常量+类信息+运行时常量池存在方法区中,实例变量存在堆内存中。
基本类型的变量和对象的引用变量都是在函数的栈内存中分配。
Ⅶ. 了解反编译工具的使用
-
编译:将自然语言的内容翻译给计算机能识别的二进制过程。(源代码 ->字节码)
-
反编译:将计算机能识别的二进制内容反向解释成自然语言。(字节码->源代码)
-
常用的反编译工具:jad、jd-gui…
Ⅷ. IDE-开发工具
(1)IDE全名为Integrated Development Environment (集成开发环境)。IDE是集成了代码编写、分析、编译、调试等功能的服务套,使用IDE可以快速开发。
(2)开发Java的主流IDE:
- Eclipse - Eclipse基金会开源(开放源代码的)
- MyEclipse - IBM和Genuitec公司合作开发的 (基于Eclipse基金会开源的内容 然后定制开发成的 集成了大量的Java EE组件) (收费)
- Intellij IDEA - Jet Brains开发的 (收费)
- 我们使用的是esplice
(3)Eclips安装步骤
①前提:Eclipse下载安装非常简单,但是必须保证JAVA_HOME被配置正常!
Eclipse的版本必须选择配套的JDK(从·霓虹灯Neon版本开始需要JDK1.8)
-
双击打开Eclipse,会弹出工作空间选择的窗口
工作空间(work_space) : 用于存储日后的配置信息和编写的Java代码
-
进入主界面,切换到Java视图(右击有新建java工程、class选项表示已进入java视图)
-
在左侧创建Java工程
Java Project(工程、项目):代表某个项目程序,实质是一个复杂的文件夹。
)
-
创建好的Java工程,长成下方的样子。
src:编写源代码
在src上右键,创建package(包),再创建Class(类)
-
然后编写代码
-
右键run as -> Java Application运行
Ⅸ. 遇到的问题
-
JDK安装之后(1.8),Oracle公司它将安装包更改了以下,每次安装完之后会自动给你path环境变量中添加一些内容。(如果cmd输入Javac无法使用,在系统变量中删除C:\program Files\Commoniles\Orcal这一路径)。
-
我的世界等Java游戏,可能当初你配置了它的运行环境,但是注意它会对我们现在的环境产生影响。
-
写完代码必须注意Ctrl+S快捷键 保存
-
认为自己打开了CMD,然后从桌面上看到了Java源代码,就认为可以直接使用到它(必须知道文件路径)
-
编译能正常完成(javac),但是无法进行运行(Javac识别的是Java文件,Java 识别的是你写的类)
-
配置JAVA_HOME,配置完之后 没有点确定
自动给你path环境变量中添加一些内容。(如果cmd输入Javac无法使用,在系统变量中删除C:\program Files\Commoniles\Orcal这一路径)。
-
我的世界等Java游戏,可能当初你配置了它的运行环境,但是注意它会对我们现在的环境产生影响。
-
写完代码必须注意Ctrl+S快捷键 保存
-
认为自己打开了CMD,然后从桌面上看到了Java源代码,就认为可以直接使用到它(必须知道文件路径)
-
编译能正常完成(javac),但是无法进行运行(Javac识别的是Java文件,Java 识别的是你写的类)
-
配置JAVA_HOME,配置完之后 没有点确定