首页 游戏 软件 资讯 排行榜 专题
首页
编程语言
【JAVA学习-1】JAVA是什么

【JAVA学习-1】JAVA是什么

热心网友
49
转载
2026-04-28

猛然发现

【JA VA学习-1】JA VA是什么

免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈

学习JA VA开发差不多半年了。虽说精通一门语言需要经年累月,但这段时间的摸索,确实积累了不少感想和收获。正好借此机会记录下来,也算是对持续学习的一种鞭策。以前总听人说,JA VA比C/C++要简单些,可真上手了才发现,事情没那么简单。比如知道package的功能类似于C++里的#include,但一开始愣是没搞懂每一个点都代表一层目录,光是理清这个结构就费了不少功夫。

那么,怎么开始学习JA VA呢?

首先得弄明白什么是编程语言。其实很简单,语言的核心功能就是交流。我们学汉语、学英语,不都是为了和他人沟通吗?编程语言也一样,它的交流对象是计算机。不过,计算机(不单指电脑,还包括各种智能设备)也有自己的“语言局限”,就像我只听得懂汉语,计算机也只能识别其大脑(CPU)能理解的指令。对我们而言,这些指令最终都映射成二进制的机器语言。计算机识别这些0和1的组合,执行相应功能。

但问题来了:机器语言太难了。比如在x86平台上,谁能记得住一条“mov”指令背后对应的是哪一串0和1?为了方便编程,汇编语言应运而生。它是平台特定的,x86的汇编和ARM的汇编就完全不同。汇编语言与机器指令一一对应,只是给那些晦涩的二进制组合取了个好记的名字。尽管如此,汇编依然难学,而且被平台牢牢绑住。当然,它的优势是执行效率高,毕竟少了很多中间环节。

高级语言的诞生

随着计算机科学发展,第三代语言,也就是我们常说的“高级语言”出现了。这类语言用接近英文的语法,大大降低了编程门槛。开发者只需掌握语言规则,实现功能,剩下的交给编译器——它会把代码编译成汇编代码,再转换成对应平台的机器码。C/C++就是典型的代表:编辑源代码,用编译器生成汇编代码,再用汇编器转为机器码,最后在目标平台上运行。

但C/C++有个明显的局限:跨平台性。这里的“平台”主要不是指CPU(编译器已经能处理不同CPU的差异了),而是指操作系统。因为C/C++能直接调用操作系统提供的系统接口,但类Unix系统(如Linux)和Windows的系统调用差异巨大。这就导致,想要写一个能在不同系统上运行的程序,往往得用一堆宏来判断当前平台。对于只熟悉Linux系统调用的开发者来说,面对Windows下的C开发,难免会感到束手无策。

JA VA的解决之道

JA VA巧妙地绕开了这个缺陷。它的方法是在操作系统之上再加一层——虚拟机。虚拟机针对不同操作系统有不同实现,从而屏蔽了系统间的差异。这就是JA VA“一次编写,到处运行”特性的基石。其实不光是JA VA,像Python这类语言也运行在虚拟机之上。所以,运行这些语言前,你不仅需要语言编译器,还得安装一个虚拟机软件。

除了虚拟机,JA VA还有自己的一套二进制文件格式。这类似于Windows下的PE文件,或者Linux下的ELF文件。想想看,一个C语言的可执行文件,操作系统是怎么把它加载成一个进程的?靠的就是文件格式协议。操作系统解析文件,识别出数据段、代码段等信息,然后为进程分配地址空间。

JA VA的可执行文件(.class文件)不走这条路。它不直接运行在操作系统上,而是跑在虚拟机里。虚拟机再运行在操作系统之上。相当于,虚拟机来识别JA VA文件的格式,并为这个JA VA程序分配内存空间。注意,这个内存空间是在虚拟机进程的地址空间内分配的,而非操作系统直接管理的一个独立进程地址空间。

好了,技术原理先聊这么多。其中难免有理解不准确的地方,欢迎指正。

JA VA编程需要准备什么?

接下来看看,用JA VA编程到底需要什么。不妨先回想一下用C/C++编程的流程:在Windows下,你可能会装一个VC++ 6.0(现在更多人用VS Code或其他IDE了),写一句printf(“hello world!”);,点击运行,就能在输出窗口看到结果。这个“运行”按钮背后,其实完成了一系列动作:编译、链接、执行,最后把输出信息展示给你。在Linux下,你可能需要gcc来编译C代码(运行则不需要gcc)。

这就很明确了:编写C代码,你必须先有一个C语言编译器(比如gcc或VC++)。这个编译器是操作系统特有的,因为它需要识别程序中的系统调用,生成该操作系统独有的可执行文件。

那么JA VA呢?根据前面的分析,它也需要一个编译器,负责把.ja va源代码编译成JA VA虚拟机能够识别的.class二进制文件。除此之外,它还离不开JA VA虚拟机。这是与C语言关键的不同:C编译后的程序由操作系统直接识别执行;而JA VA编译后的文件,只能由JA VA虚拟机来识别和运行。

在JA VA体系里,编译器对应的是ja vac命令,虚拟机则是ja va命令。安装好JA VA环境后,你可以在其bin目录下找到它们。这些工具,加上JA VA的基础库(比如String、各种容器类),共同构成了JA VA的基本运行环境,也就是JRE(Ja va Runtime Environment)。

但如果要进行开发,光有JRE还不够。你还需要调试、打包(生成jar文件)等更多功能。这些由JDK(Ja va Development Kit)提供,它是支持JA VA开发的完整工具包。

当然,JA VA世界还有三个重要的“版本”:J2SE(标准版)、J2EE(企业版)和J2ME(微型版)。它们之间的区别,主要在于JRE所包含的库和功能范围不同,语言本身的核心语法并无二致。另外,JA VA本身也在不断进化,持续推出新版本以支持更强大的特性。目前主流的环境是JA VA 8或11,文中的示例是基于JA VA 7(即JDK 1.7)的。

程序的起点:main方法

和C/C++一样,JA VA程序也有一个固定的入口——main方法。它的定义必须严格遵循这个格式:public static void main(String[] args)

  • public:意味着其他类可以调用这个方法。
  • static:表明这是一个静态方法,无需创建类的实例对象就能直接执行。
  • void:方法没有返回值。这一点和C语言不同,C语言的main函数返回值常用来指示程序执行状态。
  • String[] args:参数是一个字符串数组,用来接收用户输入的命令行参数。需要注意的是,这里的args[0]就是第一个参数,而不是像C语言那样,argv[0]通常是程序名本身。

当你用ja va A命令运行一个类A时,背后的过程大致是:JA VA虚拟机在classpath(类路径)中寻找并动态加载A类。如果找不到,你会看到“错误: 找不到或无法加载主类 A”;如果找到了A类,但类里没有定义标准格式的main方法,则会提示“错误: 在类 A 中找不到主方法,请将主方法定义为: public static void main(String[] args)”。

接下来学什么?

最后,梳理一下学习JA VA的主要路线。这里主要参考《JA VA编程思想》的脉络,结合一些个人实践和思考,大致可以分为以下这些核心模块:

  1. JA VA语法基础
  2. JA VA中的类和对象
  3. JA VA类的访问权限控制
  4. JA VA的继承
  5. JA VA的接口与多态
  6. 内部类
  7. 异常处理
  8. 字符串
  9. 容器
  10. 泛型支持
  11. 动态类型和反射
  12. 注解
  13. JA VA I/O系统
  14. JA VA线程
  15. JA VA网络编程

这些内容构成了JA VA从入门到深入的知识骨架,后续的学习和实践都将围绕它们展开。

来源:https://blog.csdn.net/yu616568/article/details/41289727
免责声明: 游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

相关攻略

Java防止SQL注入的几个途径
网络安全
Java防止SQL注入的几个途径

Ja va防SQL注入:从根源到边界的实战策略 谈起Ja va Web应用的安全,SQL注入绝对是个绕不开的“经典”话题。攻击者之所以能得手,核心往往在于一个简单的操作:字符串拼接。当用户输入被直接拼接到原始SQL语句中时,就相当于为恶意逻辑的植入打开了一扇门。那么,最根本的解决之道是什么?答案是杜

热心网友
04.28
怎么描述 Java 异常处理中的“受检异常逃逸”:如何在不声明 throws 的情况下抛出受检异常
编程语言
怎么描述 Java 异常处理中的“受检异常逃逸”:如何在不声明 throws 的情况下抛出受检异常

怎么描述 Ja va 异常处理中的“受检异常逃逸”:如何在不声明 throws 的情况下抛出受检异常 在Ja va的世界里,受检异常(Checked Exception)的处理规则向来明确:要么捕获,要么在方法签名中用throws声明。这是编译器定下的铁律。但话说回来,总有一些场景让人想“绕个路”。

热心网友
04.28
Selenium显式等待进阶:精准等待动态内容替换(Java实战指南)
编程语言
Selenium显式等待进阶:精准等待动态内容替换(Java实战指南)

详解如何在单页应用(SPA)中,用自定义显式等待替代Thread sleep 在单页应用里做自动化测试,尤其是处理动态内容替换时,很多工程师都踩过同一个坑:点击分页后,断言莫名其妙就失败了。表面上看,加个Thread sleep似乎能“解决”问题,但这其实是把定时冲击波埋进了代码里。今天,我们就来彻

热心网友
04.28
怎么利用 Project Panama 的 Foreign Linker 在 Java 中高性能调用原生 C++ 数学库
编程语言
怎么利用 Project Panama 的 Foreign Linker 在 Java 中高性能调用原生 C++ 数学库

怎么利用 Project Panama 的 Foreign Linker 在 Ja va 中高性能调用原生 C++ 数学库 先说一个关键变化:Project Panama 的 Foreign Linker 功能,从 Ja va 22 开始,已经正式成为标准 API的一部分。这意味着,你现在可以直接使

热心网友
04.28
如何利用 Java NIO 零拷贝 MappedByteBuffer 实现对 GB 级日志文件的高速读写
编程语言
如何利用 Java NIO 零拷贝 MappedByteBuffer 实现对 GB 级日志文件的高速读写

如何利用 Ja va NIO 零拷贝 MappedByteBuffer 实现对 GB 级日志文件的高速读写 为什么 MappedByteBuffer 读写大文件反而变慢甚至 OOM 如果你直接用 MappedByteBuffer 去映射一个几十GB的日志文件,结果大概率是程序卡死,或者干脆抛出一个

热心网友
04.28

最新APP

宝宝过生日
宝宝过生日
应用辅助 04-07
台球世界
台球世界
体育竞技 04-07
解绳子
解绳子
休闲益智 04-07
骑兵冲突
骑兵冲突
棋牌策略 04-07
三国真龙传
三国真龙传
角色扮演 04-07

热门推荐

财务系统更换的风险?企业转型的隐形陷阱与应对策略
业界动态
财务系统更换的风险?企业转型的隐形陷阱与应对策略

一、财务系统更换:一场不容有失的“心脏手术” 如果把企业比作一个生命体,那么财务系统就是它的“心脏”。这颗“心脏”一旦老化,更换就成了必须面对的课题。但这绝非一次简单的软件升级,而是一场精密、复杂、牵一发而动全身的“外科手术”。数据显示,超过70%的ERP(企业资源计划)项目实施未能完全达到预期,问

热心网友
04.28
模拟人工点击软件有哪些?类型盘点与应用指南
业界动态
模拟人工点击软件有哪些?类型盘点与应用指南

在企业数字化转型的浪潮中,模拟人工点击软件:从效率工具到智能伙伴 企业数字化转型的路上,绕不开一个话题:如何把那些重复、枯燥的电脑操作交给机器?模拟人工点击软件,正是因此而成为了提升效率、降低成本的得力助手。那么,市面上的这类软件到底有哪些?答案其实很清晰。它们大致可以归为三类:基础按键脚本、传统R

热心网友
04.28
ai智能体发展前景:2026年AI Agent如何重塑全
业界动态
ai智能体发展前景:2026年AI Agent如何重塑全

一、核心结论:AI智能体是通往AGI的必经之路 时间来到2026年,AI智能体这个词儿,早就跳出了PPT和实验室的范畴。它不再是飘在天上的技术概念,而是实实在在地成了驱动全球数字化转型的引擎。和那些只能一问一答的传统对话式AI不同,如今的AI智能体(Agent)本事可大多了:它们能自己规划任务步骤、

热心网友
04.28
ai智能体主要通过哪一层与外部系统交互:深度解析Agen
业界动态
ai智能体主要通过哪一层与外部系统交互:深度解析Agen

一、核心结论:AI智能体交互的“桥梁”是行动层 在AI智能体的标准架构里,它与外部系统打交道,关键靠的是“行动层”。可以这么理解:感知层是Agent的五官,决策层是它的大脑,而行动层,就是那双真正去执行和操作的手。这一层专门负责把大脑产出的抽象指令,“翻译”成外部系统能懂的语言,无论是调用一个API

热心网友
04.28
ai智能体人设描述怎么写?构建高转化AI角色的深度方法论
业界动态
ai智能体人设描述怎么写?构建高转化AI角色的深度方法论

一、核心结论:AI人设是智能体的“灵魂” 在构建AI应用时,一个核心问题摆在我们面前:如何写好AI智能体的人设描述?这个问题的答案,直接决定了智能体输出的专业度与用户端的信任感。业界实践表明,一个优秀的人设描述,离不开一个叫做RBGT的模型框架,它涵盖了角色、背景、目标和语气四个黄金维度。有研究数据

热心网友
04.28