Java 初识

news2024/11/17 1:42:11

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.coloradmin.cn/o/1800102.html

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

相关文章

【全开源】Fastflow工作流系统(FastAdmin+ThinkPHP)

🚀Fastflow工作流系统:高效协作,流程无忧​ 一款基于FastAdminThinkPHP开发的可视化工作流程审批插件,帮助用户基于企业业务模式和管理模式自行定义所需的各种流程应用,快速构建企业自身的流程管控体系,快…

Windows mstsc

windows mstsc 局域网远程计算机192.168.0.113为例,远程控制命令mstsc

【mysql】数据报错: incorrect datetime value ‘0000-00-00 00:00:00‘ for column

一、问题原因 时间字段在导入值0000-00-00 00:00:00或者添加 NOT NULL的时间字段时,会往mysql添加0值,此时可能出现此报错。 这是因为当前的MySQL不支持datetime为0,在MySQL5.7版本以上,默认设置sql_mode模式包含NO_ZERO_DATE, N…

SQL Server数据库xp_cmdshell提权笔记

文章目录 一、简介二、搭建环境三、利用条件1、查询 xp_cmdshell 是否开启,返回为1则证明存在2、判断权限是不是sa,回是1说明是sa3、开启xp_cmdshell4、关闭xp_cmdshell 四、获取数据库权限1、成功获取sqlserver,进行登陆2、开启xp_cmdshell权…

记录汇川:红绿灯与HMI-ST

项目要求: 子程序: 子程序: 实际动作如下: 红绿灯与HMI-ST

ChatGPT交卷2024年高考新课标I卷语文关于AI方面的作文试题

2024年新课标I卷作文试题: 阅读下面的材料,根据要求写作。(60分) 随着互联网的普及、人工智能的应用,越来越多的问题能很快得到答案。那么,我们的问题是否会越来越少? 以上材料引发了你怎样的…

DBeaver入门教学,开源免费,链接数据库的软件

这个可爱的头像就是它 为什么要用这个,小公司一般都用navicat什么的,因为别人一般不会告你,因为告你也没啥钱,但是公司大了有知名度了,用盗版软件就会被告。所以很多好不容易从小做到大的公司,是不允许这种…

使用智谱 GLM-4-9B 和 SiliconCloud 云服务快速构建一个编码类智能体应用

本篇文章我将介绍使用智谱 AI 最新开源的 GLM-4-9B 模型和 GenAI 云服务 SiliconCloud 快速构建一个 RAG 应用,首先我会详细介绍下 GLM-4-9B 模型的能力情况和开源限制,以及 SiliconCloud 的使用介绍,最后构建一个编码类智能体应用作为测试。…

前端解析文件流格式数据异常时并给提示

把后端返回的文件流格式转换成正常数据格式 断点调试返回值 network查看返回值 一、blob类型 let stringData:any await this.blobToString(res); blobToString(blob) { return new Promise((resolve, reject) > { const reader new FileReader(); reader.onloadend (…

Oracle EBS AP发票创建会计科目提示:APP-SQLAP-10710:无法联机创建会计分录

系统版本 RDBMS : 12.1.0.2.0 Oracle Applications : 12.2.6 问题症状: 提交“创建会计科目”请求提示错误信息如下: APP-SQLAP-10710:无法联机创建会计分录。 请提交应付款管理系统会计流程,而不要为此事务处理创建会计分录解决方法 数据修复SQL脚本: UPDATE ap_invoi…

ChatGPT-4o独家揭秘:全国一卷高考语文作文如何轻松斩获满分?

​一、2024年全国一卷高考 二、2018年全国一卷高考 三、2016年全国一卷高考 一、2024年全国一卷高考 技术进步的悖论:我们的问题真的在减少吗? 引言 随着互联网的普及和人工智能的应用,越来越多的问题能够快速得到解答。然而,这引…

二叉树-堆的详解

一,树的概念 1,树的概念 树是一种非线性的数据结构,它是由n(n>0)个有限结点组成一个具有层次关系的集合。 把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。 有…

继承-进阶

父子类成员共享 普通成员对象/父子间不共享, 成员独立 函数成员共享(函数不存储在对象中) 子类由两部分构成:父类中继承的成员和子类中新定义成员 继承方式 子类中存在父类private成员但不可直接访问(及时在类中&am…

C语言| 输出菱形*(梳理篇II)

C语言| 输出菱形*-CSDN博客 凡事还是得自己独立思考后,写一遍程序才能发现问题所在。 容易犯的错误: 【完整程序注释】 运行结果 /* 输出菱形 1 总行数 n为奇数,分上三角形下三角形,只考虑左边的空格和星号* 2 上三角形 行数…

【慢慢理解Vue的设计思想】

# 理解Vue的设计思想 MVVM框架的三要素:数据响应式、模板引擎及其渲染数据响应式:监听数据变化并在视图中更新 Object.defineProperty()Proxy模版引擎:提供描述视图的模版语法 插值:{{}}指令:v-bind,v-on,v-model,v-for,v-if渲染:…

能把试卷上的字消除的软件有哪些?推荐三款好用的

能把试卷上的字消除的软件有哪些?在数字化时代,我们越来越依赖科技手段来解决生活中的各种问题。其中,试卷上的字消除问题,就是一个备受关注的痛点。幸运的是,现在市面上已经出现了多款能够轻松消除试卷上字迹的软件&a…

AI日报|智谱AI再降价,同时开源9B系列模型;国内外气象大模型竞逐升级

文章推荐 AI日报|国产大模型迎来新卷王,天工MoE全球首用4090推理,马斯克计划豪掷90亿购买GPU AI日报|斯坦福团队被曝抄袭国内大模型已删库跑路!英伟达打破摩尔定律,机器人时代到来 智谱AI全模型矩阵进行…

英码科技推出鸿蒙边缘计算盒子:提升国产化水平,增强AI应用效能,保障数据安全

当前,随着国产化替代趋势的加强,鸿蒙系统Harmony OS也日趋成熟和完善,各行各业都在积极拥抱鸿蒙;那么,边缘计算要加快实现全面国产化,基于鸿蒙系统开发AI应用势在必行。 关于鸿蒙系统及其优势 鸿蒙系统是华…

离线环境下安装NVIDIA驱动、CUDA(HUAWEI Kunpeng 920 + NVIDIA A100 + Ubuntu 20.04 LTS)

文章目录 前言 一、基础环境 1.1、处理器型号 1.2、英伟达显卡型号 1.3、操作系统 1.4、软件环境 二、取消内核自动升级 2.1、查看正在使用的内核版本 2.2、查看正在使用的内核包 2.3、禁止内核更新 三、配置本地apt源 3.1、挂载iso镜像文件 3.2、配置apt源 3.3、…

分享万能点击器免费版,吾爱大佬出品,这个太赞了!

小伙伴们!阿星又来给大家推荐神奇的小软件啦!这次的主角可是个神器——鼠标连点器!你听过没?这玩意儿简直是个“自动小助手”,让你的鼠标在屏幕上飞舞,点得飞快,解放你的双手,让你网…