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.mzph.cn/pingmian/24323.shtml

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

相关文章

EasyExcel导出多个sheet封装

导出多个sheet 在需求中&#xff0c;会有需要导出多种sheet的情况&#xff0c;那么这里使用easyexcel进行整合 步骤 1、导入依赖 <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><d…

多尺度注意力创新

深度之眼17种多尺度注意力创新

西门子PLC学习之数据块的单个实例,多重实例与参数实例间的区别

首先介绍下函数&#xff0c;函数块与数据块这三个概念。 数据块 数据块里可以存储各种类型的参数。有人可能会问&#xff0c;m寄存器不是可以存储布尔值&#xff0c;8位&#xff0c;16位&#xff0c;32位变量吗&#xff0c;为什么要多此一举&#xff1f;因为虽然m寄存器能存储以…

​​​​​​​月薪20K的程序员应具备怎样的技能和水平?

在当今互联网高速发展的时代&#xff0c;程序员的薪资水平也在不断提高。对于月薪20K的程序员来说&#xff0c;他们不仅需要具备扎实的编程基础&#xff0c;还需要掌握一系列与工作相关的技能和能力。 月薪20K的程序员应具备怎样的技能和水平&#xff1f; 相信这是一个很多人都…

什么是智慧零售?智慧零售的发展前景如何?

在零售业的快速发展中&#xff0c;市场竞争日益激烈&#xff0c;产品同质化严重&#xff0c;线下销售与线上商店的竞争加剧&#xff0c;资金成本问题日益凸显。这些问题不仅限制了零售业的发展&#xff0c;也给消费者带来了诸多不便。然而&#xff0c;智慧零售的出现&#xff0…

ElementUI中date-picker组件,怎么把大写月份改为阿拉伯数字月份(例如:一月、二月,改为1月、2月)

要将 Element UI 的 <el-date-picker> 组件中的月份名称从中文大写&#xff08;如 "一月", "二月"&#xff09;更改为阿拉伯数字&#xff08;如 "1月", "2月"&#xff09;&#xff0c;需要进行一些定制化处理。可以通过国际化&a…

45-5 护网溯源 - 远控木马样本溯源

在分析恶意样本时&#xff0c;需要查看包括作者名字、ID、IP地址、域名等在内的相关信息。 把恶意样本上传到微步、360沙箱云分析&#xff1a;样本报告-微步在线云沙箱 (threatbook.com) 动态分析 运行截图 发现该木马是与一个装机软件绑定的&#xff0c;你运行正常软件的时候…

封装组件库仿elementui<1>

目录 type属性 引入字体图标 button的点击事件 disabled属性 methods:{//点击事件是外部注册的handleClick(e){this.$emit(click,e)//通知父组件点击了&#xff0c;点了按钮&#xff0c;触发外界的click&#xff1f;传参为事件对象//向父组件派发了click事件} }, type属性…

项目进度管理必备:15款最佳项目进度跟踪工具推荐

15好用的款主流项目进度管理软件&#xff1a;PingCode、Worktile、Trello、Tower、Asana、Smartsheet、Teambition、ClickUp、Wrike、Monday.com、Notion、禅道、飞书、云效、蓝凌。 严格的进度管理有助于更好地控制项目进展&#xff0c;提升团队效率&#xff0c;最终实现项目成…

减调食谱攻略:美味低卡又健康

早餐主要求质&#xff0c;也就是求营养&#xff0c;更确切的说是“均衡的营养&#xff0c;多重的营养元素”确保每天早餐不重样就差不多了。 早餐主食&#xff1a;蛋羹、糖心水煮蛋&#xff0c;皮蛋瘦肉粥、南瓜粥、小米粥&#xff0c;蒸煮玉米、南瓜、芋头、红薯&#xff0c;…

【Linux】The server quit without updating PID file的几种解决方案

&#x1f60e; 作者介绍&#xff1a;我是程序员洲洲&#xff0c;一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主。 &#x1f913; 同时欢迎大家关注其他专栏&#xff0c;我将分享Web前后端开发、人工智能、机器学习、深…

Java使用XWPFTemplate将word填充数据,并转pdf

poi-tl poi-tl&#xff08;poi template language&#xff09;是基于Apache POI的Word模板引擎。纯Java组件&#xff0c;跨平台&#xff0c;代码短小精悍&#xff0c;通过插件机制使其具有高度扩展性。 主要处理区域有这么几个模块: 依赖 <dependency><groupId>…

记忆++入门01

1.数字编码 2. 地点桩 1. 卧室 2.婴儿房 3.卫生间 4.次卧 5.书房 6.厨房 7.餐厅 8.客厅 9.阳台左 10.阳台右

深度学习每周学习总结P10(车牌识别)

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制 数据链接 提取码&#xff1a;ppv1 –来自百度网盘超级会员V5的分享 目录 0. 总结1. 数据导入、查看数据分类&#xff0c;自定义transform…

【TB作品】MSP430G2553单片机,MSP430 单片机读取 SHT30 传感器并显示数据

使用 MSP430 单片机读取 SHT30 传感器并显示数据 作品功能 本文介绍了如何使用 MSP430 单片机读取 SHT30 温湿度传感器的数据&#xff0c;并通过 OLED 屏幕显示实时的温度和湿度信息。通过此项目&#xff0c;您将学习如何配置 MSP430 的 I2C 接口、读取 SHT30 传感器的数据以…

高考志愿填报有哪些技巧和方法

一年一度高考季&#xff0c;又高考志愿填报的时侯了。高考志愿填报的时侯&#xff0c;需要考虑的因素比较多&#xff0c;有的同学觉是离家越远越好&#xff0c;要放飞自我&#xff0c;家长再也管不了我了。有的同学觉得专业比学校牌子重要&#xff0c;只要报个好专业&#xff0…

Nvidia/算能 +FPGA+AI大算力边缘计算盒子:大型机械智能预警系统

三一重工股份有限公司&#xff0c;是由三一集团创建于1994年&#xff0c;通过打破国人传统的“技术恐惧症”坚持自主创新迅速崛起。2011年7月&#xff0c;三一重工以215.84亿美元的市值荣登英国《金融时报》全球市值500强&#xff0c;是迄今唯一上榜的中国机械企业。2012年1月&…

AI和机器人引领新一轮农业革命

AI和机器人技术在农业领域的应用正在迅速发展&#xff0c;未来它们可能会实现厘米级精度的自主耕作。 精确种植&#xff1a;AI算法可以分析土壤条件、气候数据和作物生长周期&#xff0c;以决定最佳种植地点和时间。 土壤管理&#xff1a;利用传感器和机器学习&#xff0c;机器…

Android Webview 详解

一 简介 一个基于webkit引擎、展现web页面的控件 Android 4.4前&#xff1a;Android Webview在低版本 & 高版本采用了不同的webkit版本的内核Android 4.4后&#xff1a;直接使用了Chrome内核 1.1 作用 在 Android 客户端上加载h5页面在本地 与 h5页面实现交互 & …

为Android组件化项目搭建Maven私服

概览 文章目录 概览前言搭建 maven 私服服务器环境jdk安装配置nexus安装配置管理创建存储点、仓库 项目中使用 maven 私服上传 module 到仓库自动发布 module手动上传单个aar包 引用仓库中的 modulebuild.gradle引入远程module FAQ开发阶段有些module用远程依赖&#xff0c;有些…