【Java基础】Java语言特性

认识Java

java语言的执行过程

  1. 编写纯文本文件 .java

  2. 经过javac编译器(java complier)编译 .class

    .class是二进制的字节码
    在源文件中定义几个类,就会生成几个

  3. 由JVM运行 .class

    JVM把字节码编译成可以在处理器上运行的高性能的本地代码(native code),机器码

【Java基础】Java语言特性_第1张图片

java是一种介于编译型和解释型语言之间的语言

我们需要格外注意的是 .class->机器码 这一步。在这一步 JVM 类加载器首先加载字节码文件,然后通过解释器逐行解释执行,这种方式的执行速度会相对比较慢。而且,有些方法和代码块是经常需要被调用的(也就是所谓的热点代码),所以后面引进了 JIT(just-in-time compilation) 编译器,而 JIT 属于运行时编译。当 JIT 编译器完成第一次编译后,其会将字节码对应的机器码保存下来,下次可以直接使用。而我们知道,机器码的运行效率肯定是高于 Java 解释器的。这也解释了我们为什么经常会说 Java 是编译与解释共存的语言

终端运行代码,先javac编译,再java运行

反编译
【Java基础】Java语言特性_第2张图片

Java 特性

1.Simple 简单

Java的语法实际上是C++语法的精华部分。Java语法简单,Java没有复杂的类型(structures,unions)以对象(Class)描述一切;Java取消了显式的指针运算,将其隐藏于对象的构造中(initialization, constructor);Java所有类型都是确定的(强类型),方便管理,具有强大的移植性;Java运行于虚拟机(virtual machine)同时也有JIT技术将Java代码直接转化为机器码,运行性能优良。

2.object-oriented 面向对象

面向对象不同于面向结构编程,面向结构编程先考虑局部,而面向对象先考虑整体,设计优先。Java没有C++的多继承概念,转而用轻量化的interface声明对象的功能;Java是类单继承的,其公共父类是Object,描述了Java中的对象应该遵守的规范;Java单继承表明继承是一种非普遍关心,如无必要不要使用,在增强类的功能时,优先考虑在对象内部声明组合对象和使用接口提供的服务。

3.distributed 分布性

Java类库实现了TCP/IP、HTTP、FTP等网络协议,很容易进行网络编程。比如处理TCP/IP的socket;处理HTTP的servlet。

4.robust 健壮性

Java是强静态语言,在编译期间就可以检测大部分类型错误;Java引入了泛型<>进一步增强了编译期的容错性,且提供了更强大的结构化编程工具;Java摒弃了指针,交由JVM自动管理内存,避免了显式调用导致的pointer bug。

5.secure 安全性

Java运行于JVM中,但是不可避免的要和本地代码交互,JVM提供了一层安全性,但是不代表Java代码在Java运行的主机上绝对安全,但这需要高超的技术。相比互联网上只通过数字签名的方式加密,Java的技术安全性更高。

6.architecture-neutral 跨平台

Java代码首先通过编译器转化为JVM可以运行的字节码,而JVM是独立于操作系统和硬件的一种更高一层的抽象,JVM基于栈实现机器的功能,具有强大的硬件兼容能力。JVM的存在保证了Java的跨平台性。

7.portable 可移植性

Java所有类型都是强制规范的,Java的API也完全屏蔽了底层的差异,结合JVM,Java具有强大的可移植性。

8.high-performance 高性能

Java通过JIT技术,在运行时将热点代码直接翻译为机器码,提高了Java在JVM上的运行效率,保证了Java的高性能。

9.multithread 多线程

Java提供了功能强大的多线程类库。

10.dynamic 动态

Java的Class存储了对象的类型信息,通过反射技术可以在运行时构建新的对象,增强对象的方法。这为Java提供了强大的动态能力,增加了Java编程的技术性和灵活性

JDK

Java Platfrom

Java平台是运行在其他平台(操作系统:软件+硬件)的软件系统

有两个组件:

  • The Java Virtual Machine 虚拟机

    针对不同的操作系统有不同的虚拟机,因此java程序可以一次编译,到处运行

  • The Java Application Programming Interface Java 应用程序编程接口(API)

    是一个组件集合(分为类库和接口库,这些库被称为包)

  • JDK(The Java SE Development Kit )是面向Java开发人员的SDK(Software Development Kit)

  • JRE(Java Runtime Enviroment)Java运行环境
    【Java基础】Java语言特性_第3张图片

    版本更新
    【Java基础】Java语言特性_第4张图片
    java8最常用

    • Oracle JDK是Open JDK(JDK的核心,开源)的一个实现,更加稳定高效
      【Java基础】Java语言特性_第5张图片

认识java程序

示例

//输出hello world
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World");
    }
}

注释

  • 多行注释 /* text* /

  • 单行注释 //text

  • 文档注释
/** documentation */

Javadoc(文档注释)详解 (biancheng.net)

根据不同的标签编写注释,最后利用javadoc命令可以生成一个html格式的程序说明文档

main方法

public static void main(String[] args)
  • public static 修饰符

    • 顺序是约定俗成的
  • void 返回值

  • main 函数名

    • 是一个程序的入口
  • args 命令行参数数组

    • 是程序运行时,系统传给程序的参数

    • 名字是约定俗成的

    • java命令行参数详解 - 掘金 (juejin.cn)
      【Java基础】Java语言特性_第6张图片

    • 在这里插入图片描述

你可能感兴趣的:(Java基础,java,jvm,开发语言)