【Java基础】Java语言特性

news2024/9/23 17:21:34

认识Java

java语言的执行过程

  1. 编写纯文本文件 .java

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

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

  3. 由JVM运行 .class

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

在这里插入图片描述

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

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

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

反编译
在这里插入图片描述

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运行环境
    在这里插入图片描述

    版本更新
    在这里插入图片描述
    java8最常用

    • Oracle JDK是Open JDK(JDK的核心,开源)的一个实现,更加稳定高效
      在这里插入图片描述

认识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)
      在这里插入图片描述

    • 在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/356990.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux进程概念(三)

环境变量与进程地址空间环境变量什么是环境变量常见环境变量环境变量相关命令环境变量的全局属性PWDmain函数的三个参数进程地址空间什么是进程地址空间进程地址空间&#xff0c;页表&#xff0c;内存的关系为什么存在进程地址空间环境变量 什么是环境变量 我们所有写的程序都…

SpringBoot升级到3.0

SpringBoot 3.0出来有一段时间了&#xff0c;一直没时间来整理&#xff0c;这次来看一下吧。 Spring Boot 可以轻松创建独立的、生产级的基于 Spring 的应用程序&#xff0c;您可以“直接运行”。 SpringBoot升级到3.01. SpringBoot的维护时间线2. pom添加3. 打包大小对比4. 升…

GEE学习笔记 七十:【GEE之Python版教程四】Python基础编程二

通过上一章的讲解&#xff0c;我们对于python有了初步的了解&#xff0c;这一章就详细讲解一下python的各个变量以及运算规则等内容。 关于测试代码推荐初学者将每一段代码都自己敲入编辑器中在本地运行。 1、数值 这是任何编程中都会有的基本变量&#xff0c;在python支持的…

mac m1设备上安装Qt并使用qt编程遇到的问题以及解决方式

# 简介&#xff1a; 首先在M1平台上的程序可以看到有两种架构&#xff0c;分别是intel的&#xff08;x86-64&#xff09;和苹果的m1&#xff08;arm64架构&#xff09;&#xff0c;根据苹果的介绍&#xff0c;当在m1上面运行intel程序的时候使用的是转译的方式运行的&#xff…

设计模式(十)----结构型模式之适配器模式

1、概述 如果去欧洲国家去旅游的话&#xff0c;他们的插座如下图最左边&#xff0c;是欧洲标准。而我们使用的插头如下图最右边的。因此我们的笔记本电脑&#xff0c;手机在当地不能直接充电。所以就需要一个插座转换器&#xff0c;转换器第1面插入当地的插座&#xff0c;第2面…

以太网详细解析

数据链路层&#xff1a;考虑相邻两个节点之间的传输&#xff08;通过网线/光纤/无线直接相连的两个设备&#xff09; 这里以数据链路层其中最知名的就是“以太网” 以太网帧格式&#xff1a; 以太网数据帧帧头载荷帧尾 帧头&#xff1a;目的地址、源地址、类型 目的地址和源…

51单片机简易电阻电感电容RLC测量仪仿真设计

51单片机简易电阻电感电容RLC测量仪仿真( proteus仿真程序讲解视频&#xff09; 仿真图proteus7.8及以上 程序编译器&#xff1a;keil 4/keil 5 编程语言&#xff1a;C语言 设计编号&#xff1a;S0040 51单片机简易电阻电感电容RLC测量仪仿真51单片机最小系统的相关知识复位…

【第二阶段:java基础】第13章:泛型(P553-P568):自定义泛型、泛型的集成和通配符、Junit

本系列博客是韩顺平老师java基础课的课程笔记&#xff0c;B站&#xff1a;课程链接&#xff0c;吐血推荐的一套全网最细java教程&#xff0c;获益匪浅&#xff01; 韩顺平P553-P5681. 泛型的理解和好处2. 泛型的定义3. 泛型的语法4. 泛型的细节5. 自定义泛型6. 泛型继承和通配符…

62 一次 Promotion failed 的调试

前言 最近 有一个想法就是, 调试一下 DefNewGeneration 里面的晋升失败的情况 呵呵 对于这块的代码上面, 看着感觉有一些疑问的地方, 因此想通过 实际的调试, 来验证一下 实际的情况 然后 之前写了一个用例, 但是 和心中的期望差距甚大, 当然 主要的问题 还是自己对于 细…

CSDN 算法技能树 蓝桥杯-基础 刷题+思考总结

切面条-蓝桥杯-基础-CSDN算法技能树https://edu.csdn.net/skill/algorithm/algorithm-530255df51be437b967cbc4524fe66ea?category188 目录 切面条 大衍数列 门牌制作 方阵转置 微生物增殖 成绩统计 星系炸弹 判断闰年的依据: 特别数的和 *日志统计*&#xff08;双指…

结构体与引用

1.结构体基本概念结构体属于用户自定义的数据类型&#xff0c;允许用户存储不同的数据类型2.结构体定义和使用语法: struct 结构体 { 结构体成员列表 };通过结构体创建变量的方式有三种:struct 结构体名 变量名struct 结构体名 变量名 { 成员1值&#xff0c;成员2值...}定义结构…

《爆肝整理》保姆级系列教程python接口自动化(十八)--重定向(Location)(详解)

简介   在实际工作中&#xff0c;有些接口请求完以后会重定向到别的url&#xff0c;而你却需要重定向前的url。URL主要是针对虚拟空间而言&#xff0c;因为不是自己独立管理的服务器&#xff0c;所以无法正常进行常规的操作。但是自己又不希望通过主域名的二级目录进行访问&…

分布式session共享解决方案

分布式session共享解决方案 1.分布式 Session 问题 示意图 解读上图&#xff0c;假如我们去购买商品 当 Nginx 对请求进行负载均衡后, 可能对应到不同的 Tomcat比如第 1 次请求, 均衡到 TomcatA, 这时 Session 就记录在 TomcatA, 第 2 次请求&#xff0c; 均衡到 TomcatB, 这…

【Mysql8.0取消严格区分大小】已安装的mysql8.0取消严格区分大小写及mysql8.0重装与赋权限详解(2023年亲测有效)

【写在前面】其实故事要从my.cnf为空&#xff0c;且lower-case-table-names为0开始&#xff0c;linux环境下mysql8.0及其之后的版本对表名和数据库是严格区分大小写的&#xff0c;从而导致我们运行项目时候会报错Table xxx.QRTZ_LOCKS doesnt exist。但是我已经装好了mysql8.0咋…

17.CSS伪类

举一个简单的例子来说明什么是伪类&#xff1f; 从之前的代码中&#xff0c;如下图&#xff0c;我们像给这两个列表中的某一列单独设置样式&#xff0c;我们该如何做呢&#xff1f; 我们肯定会选择在li标签上添加class去实现&#xff0c;如下 开始标记结束标记实际元素 <…

python--matplotlib(2)

前言 Matplotlib画图工具的官网地址是 http://matplotlib.org/ Python环境下实现Matlab制图功能的第三方库&#xff0c;需要numpy库的支持&#xff0c;支持用户方便设计出二维、三维数据的图形显示&#xff0c;制作的图形达到出版级的标准。 实验环境 Pycharm2020.2.5社区版,w…

算法练习-链表(二)

算法练习-链表&#xff08;二&#xff09; 文章目录算法练习-链表&#xff08;二&#xff09;1. 奇偶链表1.1 题目1.2 题解2. K 个一组翻转链表2.1 题目2.2 题解3. 剑指 Offer 22. 链表中倒数第k个节点3.1 题目3.2 题解3.2.1 解法13.2.2 解法24. 删除链表的倒数第 N 个结点4.1 …

中国智能物流行业市场规模及未来发展趋势

中国智能物流行业市场规模及未来发展趋势编辑中国智能物流行业市场规模正在快速增长。随着电子商务、物流配送、物联网等行业的发展&#xff0c;物流行业需求不断提高&#xff0c;智能物流产品应运而生。智能物流行业主要通过智能化管理、智能路径规划、智能定位、物流配送等方…

Java特性之设计模式【工厂模式】

一、工厂模式 概述 工厂模式&#xff08;Factory Pattern&#xff09;是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式&#xff0c;它提供了一种创建对象的最佳方式 在工厂模式中&#xff0c;我们在创建对象时不会对客户端暴露创建逻辑&#xff0c;并且是通…

投票需要什么流程微信投票互助平台的免费投票平台搭建

“最美家政人”网络评选投票_免费小程序投票推广_小程序投票平台好处手机互联网给所有人都带来不同程度的便利&#xff0c;而微信已经成为国民的系统级别的应用。现在很多人都会在微信群或朋友圈里转发投票&#xff0c;对于运营及推广来说找一个合适的投票小程序能够提高工作效…