第1章_初识Java

目录

一、计算机语言的发展历史

二、Java简史

三、Java体系结构

四、Java的特性和优势

五、核心机制

1.垃圾收集机制

2.跨平台原理

五、常用DOS命令

命令

六、Java环境准备-->JDK

七、安装notepad++,配置path环境变量

八、第一段程序

九、程序中常见问题

十、编译方式

十一、扩展:classpath环境变量

十二、扩展:JAVA_HOME环境变量

十三、API

十四、代码量统计工具

十五、注释

1.单行注释和多行注释

2.文档注释

十六、反编译工具的使用

十七、本章最后一段代码

十八、扩展面试题:JDK、JRE、JVM的区别


一、计算机语言的发展历史

计算机语言的发展历史是从机器语言到汇编语言到高级语言的过程,高级语言分为面向过程的高级语言的面向对象的高级语言,Java就属于面向对象的高级语言。

二、Java简史

Java是由SUN公司发明,发明人叫James  Gosling,后来SUN公司经营不佳被现在的oracle公司收购了,Java也经历的很多版本,我这里使用的是JavaSE8.0。

三、Java体系结构

JavaSE(Java  Standard  Edition):标准版,定位在个人计算机上的应用

JavaEE(Java  Enterprise Edition):企业版,定位在服务器端的应用

JavaME(Java  Micro  Edition):微型版,定位在消费性电子产品的应用上(没有什么用)

四、Java的特性和优势

Java的优势有很多,比如跨平台/可移植性、安全性、面向对象、简单性、高性能、分布式、多线程、健壮性,所以Java是一门很好的编程语言。

五、核心机制

1.垃圾收集机制

  1. Java消除了程序员回收无用内存空间的职责,相比c++,开发人员负责要自己收回无用内存。
  2. 垃圾收集在Java程序运行过程中自动进行,程序员无法精确控制和干预;、
  3. 垃圾的自动回收,提高了内存空间的利用效率,也提高了编程人员的效率,很大程度上减少了因为没有释放空间而导致的内存泄露。

2.跨平台原理

.java文件(源文件)可以通过javac.exe编译成.class文件(字节码文件),然后字节码文件可以通过java.exe文件和不同平台的JVM(虚拟机)翻译到不同的平台上,其中javac.exe、java.exe和JVM都是在JDK(Java 语言的软件开发工具包)中的。

而C语言则需要把.c文件(源文件)通过不同平台的编译器编译后产生的可执行文件发送到对应平台上,所以说C语言的可执行文件没有跨平台性,而Java的字节码文件是和平台无关的,所以有Java具有跨平台性。

五、常用DOS命令

DOS操作系统是windows之前的操作系统

  • 在windows中,我们通过鼠标菜单等来操作系统,而在dos操作系统中,要通过dos命令来操作系统。
  • DOS命令不区分大小写。

命令

  1. 控制命令台:win+r-->cmd
  2. 切换磁盘:C:    D:    E:
  3. 显示当前目录仔细信息:dir
  4. 改变当前目录:cd
  5. .代表当前目录     ..表示上一级目录
  6. 清屏:cls
  7. 切换历史命令:上下箭头
  8. 补全命令:Tab键
  9. 创建目录:md
  10. 删除目录:rd
  11. 复制文件:copy something somewhere
  12. 删除文件:del(如果删除的是文件夹或目录,则删除的是其中的所有文件和文件夹)

六、Java环境准备-->JDK

【1】下载JDK

【2】安装JDK

 【3】JDK和JRE

JDK: Java Development kit   ---->编写Java程序的程序员使用的软件

JRE : Java Runtime Enviroment  ---->运行Java程序的用户使用的软件

七、安装notepad++,配置path环境变量

【1】安装记事本:notepad
【2】安装:一直下一步

【3】打开记事本进行设置:
设置-->首选项:

 【4】设置-->语言格式设置:

配置path环境变量

找系统环境变量

将notepad++.exe所在的路径配置到path环境变量中去(notepad++.exe不要写进去)

这样我就可以在任意的路径下去执行这个命令:(注意:控制命令台需要重启)

path环境变量作用:
将命令所在的路径配置到path中去,就相当于在计算机中“注册”了一样,以后找这个命令,会直接去你配置的路径下寻找。
达到了一个效果:在任意的路径下去执行某个命令,path环境是针对整个操作系统而言。 

八、第一段程序

【1】用notepad编写代码:

public class HelloWorld{
        public static void main(String[] args){
                System.out.println("hi 这是一段Java程序。。。");
        }
}

记得保存  ctrl+s,文件名要和类名一样,上面的为例则文件名为HelloWorld.java

【2】进行编译:

 发现出错了,分析出错原因:

解决办法:将javac.exe所在的路径 配置到 环境变量path中去,这样我就可以在任意的路径下去执行这个命令:

配置好环境变量以后发现代码可以成功编译:

 验证:

【3】进行解释/翻译/执行: 

上面执行过程成功的原因:

九、程序中常见问题

【1】最低级的错误:单词拼写错误

【2】要求源文件名字和public修饰的类名必须一模一样

【3】所有的标点必须是英文状态下的,搜狗可以设置中文模式下输入英文标点
中文状态:【】(){} !;:“‘《》?
英文状态:[]       ()  {}  !  ;   :   "  '  <> ?

【4】成对编程
[] {} () <> ""  ''

【5】注意缩进 :只要遇到{}就进行缩进  --->为了格式好看
缩进:tab 
向前缩进: shift+tab

【6】编译:
javac  HelloWorld.java
【7】执行:
java HelloWorld 

【8】java中大小写严格区分,大小敏感

【9】我们要写代码:就当做有一个“框子”

【10】一个源文件中可以有多个类,只能有一个类被public修饰,源文件的名字必须跟public修饰的那个类名保持一致。

多个类会产生独立的字节码文件

执行的时候执行各自独立的字节码文件即可

十、编译方式

【1】方式1

【2】方式2

【3】方式3

【4】方式4 

在notepad中右键文件 -->打开文件夹所在命令行

十一、扩展:classpath环境变量

【1】系统有一个环境变量叫:classpath,现在我们将classpath环境变量显式的写出来

 classpath作用:只要你配置到classpath中的路径,在执行java的字节码文件的时候,就会去这个配置的路径下找 对应的字节码文件

现在我不配置.\了 我配置

 自从我配置了这个环境变量以后,可以在任意的路径下去执行字节码文件:

总结:
classpath作用:针对java执行字节码文件而产生的环境变量,只要配置了字节码文件所在的路径以后,那么以后你在任意位置都可以执行对应的字节码文件

十二、扩展:JAVA_HOME环境变量

后续我们会用到一个软件:tomcat,在执行startup.bat的时候会出现闪退问题:
解决:
必须要配置一个环境变量叫:JAVA_HOME 

我再次启动才会成功:

然后我们的path环境变量中刚好可以借助JAVA_HOME里面的内容,通过%%做引入
%JAVA_HOME%\bin

 

十三、API

  • JDK帮助文档
  • SUN公司为JDK工具包提供了一整套文档资料,我们习惯上称之为JDK文档。
  • JDK文档中提供了Java中的各种技术的详细资料,以及JDK中提供的各种类的帮助说明。
  • JDk文档是Java语言的完整说明,大多数书籍中的类的介绍都要参照它来完成,它是编程者经常查阅的资料
  • 如何理解API:就当做是一个“字典”,“使用手册”,API就相当于是一个电子的帮助文档,可以帮我们查看JDK提供的类的信息,平时查看的时候可结合百度一起看。

十四、代码量统计工具

十五、注释

1.单行注释和多行注释

单行注释//   多行注释/*     */

注释不会参与编译,编译后产生的字节码文件中不会有注释的内容
注释的作用:
(1)注释就起到了标注解释的作用,提高代码的可读性,方便自己,方便他人--》是一个非常良好,非常专业的习惯!!!
(2)方便代码的调试:

2.文档注释

一般文档注释可以配合:jdk提供的工具javadoc.exe来一起使用,通过javadoc.exe可以对文档注释进行解析,生成一套以网页文件形式体现的该程序的说明文档。(自定义类对应的API)

十六、反编译工具的使用

编译
源代码----->class

反编译
class---->源代码

十七、本章最后一段代码

print不换行     println换行     \n转义字符换行     

\t制表符:每八位一个制表符,与前面的几位凑成一个制表符,前面4位就空4格,前面1位就空8格

十八、扩展面试题:JDK、JRE、JVM的区别

JDK,JRE,JVM的关系:

先说JDK和JRE:
初学JAVA很容易被其中的很多概念弄的傻傻分不清楚,首先从概念上理解一下吧,JDK(Java Development Kit)简单理解就是Java开发工具包,JRE(Java Runtime Enviroment)是Java的运行环境,JVM( java virtual machine)也就是常常听到Java虚拟机。JDK是面向开发者的,JRE是面向使用JAVA程序的用户,上面只是简单的区别

通过上图发现发现有两个JRE文件夹,如果细看里面的内容基本上是一样的,如果是只是Java程序使用者,那么只会有最外层的那个JRE目录,JDK中是JRE自带的,你如果安装了JDK必然里面会有一个JRE.那么问题来了,为什么会有两套JRE呢?
从侧面证明:
利用javac.exe进行编译:

 

然后我将C:\Program Files\Java\jdk1.8.0_151\lib\tools.jar改个名字,再去编译:

证明:dt.jar和tools.jar是两个java最基本的包,里面包含了从java最重要的lang包到各种高级功能如可视化的swing包,是java必不可少的。而path下面的bin里面都是java的可执行的编译器及其工具,如java,javadoc等,报错的原因就是输入的javac的命令不是去JDK中bin目录去找的javac.exe,而是去JDK中lib目录中的tools.jar中com.sun.tools.javac.Main中执行,因此javac.exe只是一个包装器(Wrapper),存在的目的是为了让开发者免于输入过长的指命。这个时候发现JDK里的工具几乎是用Java所编写,同属于Java应用程序,因此要使用JDK所附的工具来开发Java程序,所以自身需要附一套JRE才能运行。上图中与jdk同级目录下的JRE就是用来运行一般Java程序用的。
两套JRE运行的时候究竟运行哪一个呢,这个时候JDK中java.exe先从自身目录中找,然后父级目录中找,如果都没有就去注册表中找 

再说JRE和JVM:
JVM -- java virtual machineJVM就是我们常说的java虚拟机,它是整个java实现跨平台的最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行,class文件并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行,类似于C#中的CLR。
JVM不能单独搞定class的执行,解释class的时候JVM需要调用解释所需要的类库lib。在JDK下面的的jre目录里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib和起来就称为jre。

JVM+Lib=JRE,如果讲的具体点就是bin目录下的jvm.dll文件, jvm.dll无法单独工作,当jvm.dll启动后,会使用explicit的方法(就是使用Win32 API之中的LoadLibrary()与GetProcAddress()来载入辅助用的动态链接库),而这些辅助用的动态链接库(.dll)都必须位 于jvm.dll所在目录的父目录之中。因此想使用哪个JVM,只需要设置PATH,指向JRE所在目录下的jvm.dll。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值