Java 初识

Java 的发展历程

Sun 公司。

Oracle 公司。

[图片]

[图片]

普通版本,也叫过渡版本。
正式版本,也叫长期支持版本(LTS)。

Java SE,Java EE,Java ME

Java 技术体系分为三个平台:Java SE,Java EE,Java ME。

Java SE(Java Standard Edition,标准版):支持面向桌面级应用(如 Windows 系统下的应用程序)的 Java 平台,提供了完整的 Java 核心 API,此版本以前称为 J2SE。

Java EE(Java enterprise Edition,企业版):是为开发企业环境下的应用程序提供的一套解决方案。该技术体系中包含的技术如:Servlet,Jsp 等,主要针对于 Web 应用程序开发。此版本以前称为 J2EE。企业版相当于是在标准版基础上进行了一个扩展,可以支持更多的技术。

Java ME(Java Micro Edition,小型版):支持 Java 程序运行在移动终端(手机,PDA)上的平台,对 Java API 有所精简,并加入了针对移动终端的支持,此版本以前称为 J2ME。自从安卓出来后,Java ME 就很少有人用了。

Java 能做什么

[图片]

Java 的主要特性

[图片]

与 C 和 C++ 不同,Java 规范中没有 “依赖具体实现” 的地方。基本数据类型的大小以及有关运算的行为都是明确的。

例如,Java 中的 int 总是 32 位整数,而在 C 和 C++ 中,int 可能是 16 位整数、32 位整数,也可能是编译器开发商指定的任何其他大小。唯一的限制是,int 类型的字节数不能低于 short int,并且不能高于 long int。在 Java 中,数值类型有固定的字节数,这消除了代码移植时一个令人头痛的主要问题。二进制数据以固定的格式进行存储和传输,消除了有关字节顺序的困扰。字符串则采用标准的 Unicode 格式存储。作为系统组成部分的类库定义了可移植的接口。例如,有一个抽象 Window 类,并给出了面向 UNIX、Windows 和 Macintosh 环境的不同实现。

JVM 和 JDK

JVM:Java Virtual Machine,Java 虚拟机。

JRE:Java Runtime Environment,Java 运行环境。

JDK:Java Development Kit,Java 开发工具包。

JRE = JVM + 核心类库 + 运行工具

JDK = JVM + 核心类库 + 开发工具

核心类库:Java 已经写好的东西,直接拿来用即可。

开发工具:包括 javac(编译工具),java(运行工具),jdb(调试工具),jhat(内存分析工具)等。

运行工具是从开发工具中抽取出来的,比如去掉了编译工具 javac,调试工具 jdb 等,但是包括运行工具 java 等。

JVM 是一个虚拟的计算机,具有指令集并使用不同的存储区域。负责执行指令,管理数据,内存,寄存器。

JVM 是真正运行 Java 程序的地方。

不同的平台有不同的 JVM。JVM 机制屏蔽了底层运行平台的差别,实现了 “一次编译,处处运行”。

如果想要运行一个已经开发好的 Java 程序,计算机中只需安装 JRE 即可。

JDK 是提供给 Java 开发人员使用的,其中包含了 Java 的开发工具,也包括了 JRE,所以如果安装了 JDK,就不用再单独安装 JRE 了。

JDK 包含了 JRE,JRE 包含了 JVM。

因为不同的操作系统需要不同的 JVM,而 JVM 又是包含于 JDK 的,因此不同的操作系统就需要安装不同的 JDK。

跨平台的原理

Java 语言的跨平台是通过虚拟机实现的。

Java 语言不是直接运行在操作系统里面的。而是运行在虚拟机中的。

针对于不同的操作系统,安装不同的虚拟机就可以了。

在这里插入图片描述

一个编译好的 .class 文件,可以在多个操作系统中运行,只要这些平台安装了各自对应的 JVM 即可。因为有了 JVM,同一个 Java 程序就可以在不同的操作系统中执行,这样就实现了 Java 程序的跨平台性。

Java 程序执行原理

Java 是混合型语言,需要先编译,后解释执行。

在这里插入图片描述

编译器会给字节码文件自动命名,基本名和源文件名一致,扩展名为 .class

Java 程序不是直接运行在系统中的,而是运行在虚拟机中的。字节码文件在虚拟机中运行,虚拟机才是字节码文件真正运行的地方。

虚拟机总是从公共类的 main() 方法开始执行。

在 DOS 窗口运行 Java 源文件

先切换到源文件所在路径。

先将 Java 源文件 xxx.java 编译为字节码文件 xxx.class,在 DOS 窗口执行命令:

javac xxx.java

再运行字节码文件,在 DOS 窗口执行命令:

java xxx

例如:

[图片]

javac 命令来编译源文件(要带上后缀名),编译成计算机可执行的文件。其中 c 代表 compile。

javac.exe 是编译工具,java.exe 是运行工具。

编译得到后缀名为 .class 的文件。这是一个字节码文件。.class 文件不能直接被机器执行,需要用解释器解释执行。

用 java 命令执行 .class 文件(不带后缀名),得到结果。这是把 .class 文件装载到 JVM 中去执行。

Java 程序的组织结构

源文件的基本组成是类。类是所有 Java 程序的构建模块,Java 程序中的所有内容都必须放在类中。

Java 程序的执行入口是 main() 方法,有固定的书写格式:

public static void main(String[] args){
}

一个源文件可以有多个类,每次编译完,每一个类都会生成一个对应的基本名与类名相同的 .class 文件。

如果源文件包含一个 public 类,则该源文件必须按该类命名。

一个源文件中最多只能有一个 public 类(公共类),其它类的个数不限,也可以将 main() 方法写在非 public 类中,然后指定运行非 public 类,这样入口方法就是非 public 类的 main() 方法。

一个类只能有一个 main() 方法,一个源文件可以有多个类,每一个类都可以有一个 main() 方法,因此一个源文件可以有多个 main() 方法。

public 类叫做公共类,main() 方法叫做主方法。

程序示例:

// public static void main(String[] args) 表示一个主方法,主方法是程序的入口
public class Hello{// 编写一个主方法,即 main() 方法public static void main(String[] args){System.out.println("Hello World");System.out.println("Xiao Cheng is studying Java.");}
}class Dog{public static void main(String[] args){System.out.println("Dog");}
}class Tiger{public static void main(String[] args){System.out.println("Tiger");}
}

此处的源文件名取为 Hello.java,编译之前文件夹的内容:

[图片]

编译之后文件夹的内容:

[图片]

以不同的类作为主类来运行程序:

[图片]

类中可以有一个或多个方法,方法必须在类的内部声明。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

G5 - Pix2Pix理论与实战

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 目录 理论知识图像翻译CGANU-NetPix2Pix损失函数模型结构生成器差别器 模型效果总结与心得体会 理论知识 前面已经学习了GAN与CGAN,这节开始学习P…

记一次Linux下Docker镜像服务器磁盘空间清理

我们开发环境Jenkins构建项目时报服务器磁盘空间不足,导致项目自动化构建部署失败, Docker镜像服务器磁盘空间清理我们做了多次了,之前在清理Docker镜像服务器时走了不少弯路,查了不少Docker镜像服务器空间清理,都大同…

AI大数据处理与分析实战--体育问卷分析

AI大数据处理与分析实战–体育问卷分析 前言:前一段时间接了一个需求,使用AI进行数据分析与处理,遂整理了一下大致过程和大致简要结果(更详细就不方便放了)。 文章目录 AI大数据处理与分析实战--体育问卷分析一、数据…

部署kubesphere报错

安装kubesphere报错命名空间terminted [rootk8smaster ~]# kubectl apply -f kubesphere-installer.yaml Warning: apiextensions.k8s.io/v1beta1 CustomResourceDefinition is deprecated in v1.16, unavailable in v1.22; use apiextensions.k8s.io/v1 CustomResourceDefini…

LabVIEW阀性能试验台测控系统

本项目开发的阀性能试验台测控系统是为满足国家和企业相关标准而设计的,主要用于汽车气压制动系统控制装置和调节装置等产品的综合性能测试。系统采用工控机控制,配置电器控制柜,实现运动控制、开关量控制及传感器信号采集,具备数…

【数据结构初阶】--- 顺序表

顺序表,好像学C语言时从来没听过,实际上就是给数组穿了层衣服,本质是一模一样的。 这里的顺序表实际是定义了一个结构体,设计各种函数来实现它的功能,比如说数组中的增删改查插入,这些基本操作其实平时就会…

go语言内置预编译 //go:embed xxx 使用详解

在go语言里面,我们可以使用一个“类注释”的语法来来让编译器帮助我们在编译的时候将一些文件或者目录读取到指定的变量中来供我们使用。 go:embed语法: //go:embed 文件或者目录路径 var 变量名 变量类型 说明: 文件或者目录路径 可以…

【操作系统】进程与线程的区别及总结(非常非常重要,面试必考题,其它文章可以不看,但这篇文章最后的总结你必须要看,满满的全是干货......)

目录 一、 进程1.1 PID(进程标识符)1.2 内存指针1.3 文件描述符表1.4 状态1.5 优先级1.6 记账信息1.7 上下文 二、线程三、总结:进程和线程之间的区别(非常非常非常重要,面试必考题) 一、 进程 简单来介绍一下什么是进程&#xf…

C++学习/复习13--list概述

一、list概念 1.带头双向链表 2.构造函数 3.迭代器(其迭代器需尤其注意) 4、size 5.front/back 6.插入删除 删除时的迭代器失效 由于list的节点特殊,既有数据又有指针,其实现需要节点/迭代器/list各成一类再组合

Windows系统电脑本地部署AI音乐创作工具并实现无公网IP远程使用

文章目录 前言1. 本地部署2. 使用方法介绍3. 内网穿透工具下载安装4. 配置公网地址5. 配置固定公网地址 前言 本文主要介绍如何在Windows系统电脑上快速本地部署一个文字生成音乐的AI创作工具MusicGPT,并结合cpolar内网穿透工具实现随时随地远程访问使用。 MusicG…

Spring AI 第二讲 之 Chat Model API 第八节Anthropic 3 Chat

Anthropic Claude 是一系列基础人工智能模型,可用于各种应用。对于开发人员和企业来说,您可以利用 API 访问,直接在 Anthropic 的人工智能基础架构之上进行构建。 Spring AI 支持用于同步和流式文本生成的 Anthropic 消息 API。 Anthropic …

29网课交单平台 epay.php SQL注入漏洞复现

0x01 产品简介 29网课交单平台是一个专注于在线教育和知识付费领域的交单平台。该平台基于PHP开发,通过全开源修复和优化,为用户提供了高效、稳定、安全的在线学习和交易环境。作为知识付费系统的重要组成部分,充分利用了互联网的优势,为用户提供了便捷的支付方式、高效的…

2.Rust自动生成文件解析

目录 一、生成目录解析二、生成文件解析2.1 Cargo.toml2.2 main函数解析 一、生成目录解析 先使用cargo clean命令删除所有生成的文件,下图显示了目录结构和 main.rs文件 使用cargo new testrust时自动创建出名为testrust的Rust项目。内部主要包含一个src的源码文…

[网鼎杯 2020 青龙组]jocker

运行程序,发现是要我们自己输入 那么肯定是拿到enc慢慢还原 32位,无壳 进来就红一下报错 这里可以看见长度为24 动调一下看看 这里进行了大量的异或 这里是对地址开始的硬编码进行异或,从而达到smc的效果 所以你也可以发现在进行这一步操作之前 encry函数全是报错 你点开…

Python 知识图谱补全,Knowledge Graph Completion,基于大模型的知识图谱补全,基于LLMs的KGC任务

今天讲一篇文章《Exploring Large Language Models for Knowledge Graph Completion》 ,这篇文章主题:基于大模型做知识图谱补全 1.文章主要思想: 本章描述知识图谱补全中的三个任务:三元组分类、关系预测和实体(链接)预测&…

[office] 如何才能用EXCEL打开dat文件- #微信#学习方法

如何才能用EXCEL打开dat文件? 方法: 1、打开EXCEL软件; 2、文件,打开,选择要转化的DAT文件; 3、在弹出的向导文件(步骤1)中,选择合适的文件类型(按预览选择&#xf…

秒杀优化+秒杀安全

1.Redis预减库存 1.OrderServiceImpl.java 问题分析 2.具体实现 SeckillController.java 1.实现InitializingBean接口的afterPropertiesSet方法,在bean初始化之后将库存信息加载到Redis /*** 系统初始化,将秒杀商品库存加载到redis中** throws Excepti…

QT treeWidget如何添加虚线

1、添加以下代码即可: ui.treeWidget->setStyle(QStyleFactory::create("windows"));2、效果如下:

CorelDRAW2024发布更新啦!设计师们的得力助手

在数字化的今天,视觉设计已经成为我们生活中不可或缺的一部分。从手机界面到广告海报,从网页布局到包装设计,每一个细节都离不开设计师们的专业与创意。然而,面对日益增长的设计需求和不断提升的审美标准,许多设计师开…

华为鸿蒙开发-鸿蒙基于ARKTS开发之启动模式

前言 鸿蒙生态取得爆发式增长! 截至3月底,已有超4000个应用加入鸿蒙生态。 而在今年1月中旬,华为刚宣布HarmonyOS NEXT鸿蒙星河版面向开发者开放申请,这一版本鸿蒙系统也被称为“纯血鸿蒙”。 当时,华为宣布首批200…