Java入门(P 13-P 20,day 03)

1. Java的诞生

image-20221114185723236

指针无比强大,可以直接操纵内存。但是C却没有提供一个工具进行越界的检查,导致不熟悉的人容易犯错。

内存空间的管理,C更是采用放任态度,自己分配的空间自己去释放。

致命的是,在编译期间这些问题是无法被发现的,而在运行程序的时候会突然暴露出来。

处理指针的内存分配成为一个头疼的问题,开始时C称自己是具有可移植性的:在A上写的代码,在B上进行编译即可运行。

所有人需要尽可能使用C的标准函数库,针对不同的平台,C都要去写一份,有一些小小的错误都会导致编译失败。

这样子的话,C语言的执行效率固然高,但也经不住这么造。相当于是一种“暴政”,导致大家不是很喜欢。

C++ 贴近底层,更加复杂。复杂的特性和语法,导致很多人无法完全掌握这门语言。

image-20221114191436076

为了实现真正的跨平台,Java在每个操作系统之上增加了一个抽象层——Java的虚拟机,统称JVM。

只要安装了这个环境,代码无论在哪个电脑上都可以正常运行,因为Java写的程序,最终都是跑在虚拟机上。

除非个别情况,一般都不会看到操作系统。

image-20221114192031516
image-20221114192346426

凭借集群功能,第一次展示了复杂应用的可扩展性和高可用性。 (软件、硬件、服务器)

  • 高可用
  • 高性能
  • 高并发

这个之后被称为中间件的东西,将程序员从事务管理、安全管理、权限管理等方面解放出来。让他们可以专注于业务去开发。

2. Java的特性和优势

  • 简单性
  • 面向对象:重点研究内容是对象,以及对象之间的接口上,模拟人的思维去写程序
  • 可移植性
  • 高性能:即时编译,可使某些代码的效率接近C++的效率
  • 分布式:为网络分布式环境所设计的,可以处理TCP/IP协议上的东西。利用URL (统一资源定位符),使得访问网络上的资源,像访问本地资源一样简单。同时Java支持一些远程的方法调用,使用网络去调用方法。
  • 动态性:Java本身不具有动态性,但是其中的反射机制使得Java具有一定的动态性
  • 多线程
  • 安全性
  • 健壮性:不会像C那样,不会造成计算机的崩溃。哪怕确实有一些异常,也不会崩溃,因为其中的异常机制的存在。

3. Java三大版本

image-20221114203403659

4. JDK JRE JVM

image-20221114203456597

  1. JDK Java开发者工具,包括JRE,JVM。主要是用于程序开发
  • javac 通过编译来运行Java程序
  • javadoc 将Java的一些东西生成一篇文档
  • jar 可以将Java打包成一个应用
  1. JRE Java运行时环境,运行Java程序有JRE就可以,但是如果进行开发的话,还需要用到JDK提供的一些开发工具

    但是实际上,只需要下载JDK即可,因为JRE包含在其中。

  2. JVM Java虚拟机是Java跨平台运行的核心技术,是一种规范,相当于在所有操作系统上,模拟了一个CPU去处理Java相关的东西。

    因为虚拟机的存在,屏蔽了底层系统的差别,实现了一次编译,到处运行的效果。

  3. Java的代码是如何编译成字节码的两种运行方式

    • 解释型
    • 编译型

5.安装开发环境

image-20221114204555814

卸载JDK

image-20221114205106301

  1. 先在环境变量的路径中找到JDK的安装目录,直接连包删除
  2. 然后再将环境变量中的JAVA_HOME清理掉
  3. 删除path下关于Java的目录
  4. 在Dos窗口下输入java -version 检查是否删除成功

安装JDK

  1. 下载JDK8,对应电脑的版本

  2. 双击安装,选择好用的安装路径,后面配置环境变量的时候要用

  3. 配置环境变量

    1. 我的电脑–>右键–>属性–>高级系统设置

    2. 环境变量–>JAVA_HOME

      • 变量名 要求是大写的

      • 变量值 就是环境的安装路径

    3. 配置path变量

      %% 表示引用,现在需要在path变量中引用一个路径 %JAVA_HOME%

      再指向它下面的一个bin目录 %JAVA_HOME%\bin

      还要配这个路径 %JAVA_HOME%\jre\bin检查安装的是否成功

  4. 检查安装是否成功 java -version (win + 加号 是放大镜的作用)

image-20221114214114998

  • bin目录 放一些Java可执行程序,比如作为编译器的javac
  • include目录 由于jdk是用C/C++编写的,所以启动的时候,需要去引用C的一些头文件
  • jre 是Java运行环境。如果只跑Java的话,有这个jre就够了
  • lib (library) 放置了Java的一些内库文件,与jvm相关的一些东西
  • src (source) 是一个资源文件,其中放了很多Java类的基础源代码

6. Hello World 详解

写代码的路径准备

  1. 新建文件夹,用于存放代码
  2. 新建一个Java文件
    • 后缀名为.java
    • Hello.java

image-20221114215415805

编写代码

public class Hello{
    public static void main(String[] args){
        System.out.print("Hello,World!");
    }
}
  • 外面 声明公开名时,需要和新建文件名一样

  • 里面 有一个main方法 ()中传递参数,String的首字母要大写 [] 再加上 args

    main是一个主方法,程序必须通过main()才能执行

  • 这两个地方是创建默认类时需要的两个东西

  • main方法中的语句写完之后,要加上分号

Dos环境中编译、运行代码

image-20221114221044724

右键导航栏,选择属性,设置Dos窗口的字体大小

  • 使用javac 编译Java文件,编译后得到class文件

    javac java文件

    首先,路径要正确;第二,文件名称要正确。

    image-20221114221403386

  • 使用java命令 运行的是class文件,不用写后缀。jvm能运行的也就是class文件

    image-20221114221541405

注意事项

  1. 每个单词的大小写不能出现问题,因为Java是大小写敏感的
  2. 尽量使用英文,若是中文的话,控制台可能无法识别,输出的是乱码
  3. 文件名和类名必须保持一致,并且首字母大写
  4. 标点符号不能使用中文,不能多、不能少符号

7.编译型和解释型

程序的运行机制——编译型、解释型 是计算机高级编程语言中的两种类型

image-20221115095447692

编译 和 解释 说白了,都是一种翻译功能,只是二者进行的时机不同

image-20221115100102848

编译 compile 是将程序一次性翻译成机器可以理解的二进制语言,执行速度更快,对操作系统的要求较低

编译型一般用于操作系统,C/C++的程序

解释 执行哪条语句就翻译哪条语句,用一下就翻译一下

网页服务器的脚本,对速度要求不高,可使用解释型语言,边执行边解释,包括JS、python等都属于解释型语言

  • Java虽然接近解释型语言的特征,但是他是从Java文件变成了class文件,中间这个编译的过程,得到的class文件才真正的被执行,即Java文件在被执行之前,经历了一次预编译,生成的代码介于机器码和Java源码之间的一种程序——字节码文件
  • 字节码文件,运行的时候会走到 JVM上执行。先放在类装载器上,这样该类就进入了虚拟机当中;然后经过字节码校验器,检查代码是否正确;代码正确,再通过解释器将代码解释给操作系统平台
  • Java文件通过javac进行编译得到类文件,再解释给操作系统代码写了些什么,然后操作系统按照代码的指令去进行相关的操作,完成对应的任务

— 原始人抬头仰望星空的时候,宇宙发出了警告,人类已经窥得了宇宙的真理,这是一件危险的事情。因为当原始人抬头仰望星空开始,整个人类的发展就不过是为了实现他的愿望而已。就相当于,我们一旦有了一个需求或目标,剩下的道路就会不断完善,只要确定了方向,不停下脚步,我们终究能抵达自己的终点。

8.使用 IDE 开发

不仅能进行代码的编辑,同时也能看代码有没有错误。

psvm 生成main方法

sout 生成输出语句

IDEA优化(微服务、大数据均是利用IDEA进行开发)

原文地址:http://www.cnblogs.com/olin25/p/16891620.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性