【Java基础】关于Java基础的一些有趣的常识!

前言

今天看到了一篇文章,是关于茶余饭后的Java常识的一些有趣解答,我觉得写的很有趣很易懂,所以截取了其中我觉得比较有趣的问题分享给大家。原文:饭后茶余的java常识 - 知乎 (zhihu.com)

1. Java语言的特点有哪些?

1、*跨平台,平台是指操作系统(Windows、MacOS、Linux)。

2、*面向对象。

3、简单性,Java是模仿C++编写的一门语言,因为C++的多继承、指针、内存回收等等都属于比较难控制的东西,所以Java摒弃多继承、指针、内存回收,取而代之的是单继承、引用、GC,以降低程序开发复杂度。

3.、*大数据开发相关,一些大数据框架使用Java语言编写的,如Hadoop。


 

2. Java为什么可以跨平台?

因为有JVM虚拟机。

跨平台的理解:

一个中国人要去日本、美国、印度尼西亚旅游,但是这个中国人只会中文,所以他想要在语言上无障碍的话,必须要找一个翻译人员陪同,而这个翻译人员应该分别至少要会中日、中英、中印两语才行。这个的翻译人员就是JVM虚拟机的一个缩影,而日本、美国、印度尼西亚就是操作系统的一个缩影,因此一个操作系统应该有自己独立的JVM虚拟机。

3. 什么是JVM虚拟机?

JVM是Java Virtual Machine的英文首字母缩写。

Java虚拟机会在内存中开辟一块空间,专门用于运行字节码文件,JVM是在操作之前的一台虚拟的机器,用于屏蔽底层操作系统之间的差异,从而实现java源代码文件“一次编译、操作运行”的功能。


 

4. Java是一门计算机高级编程语言,如何理解?

语言是一种规范,是沟通交流的一种方式,那么计算机语言就是人和计算机交流的方式,是人们事先定义好一种规范,只要按照规范编写源文件,那么计算机就能识别。因此同理可得C、C++、PHP计算机语言都是有自己和计算机交互的一套规范,如关键字,通过关键字就能识别你想要计算机做什么。

计算机只认识两个数字:0和1。计算机由硬件组成,计算机通过电路元件的通电(1)和不通电(0)来记录信息。所以说最后编译成字节码文件是一长串只有0和1组成的数字。如果说让我们编写一长串0和1去让计算机执行当然是可以,还省去了编译环节,但是这种编码方式效率极其低,因为我们要记忆很多一长串0、1数字,然后再进行编程,相反如果我们使用日常语言去编写代码,那么我们不需要花费大量的时间在0、1码的记忆和查找中,我们只需要使用提炼后的日常语言(关键字)进行编码即可,提高了开发效率,当然提炼后的日常语言就是一套编程规范,即C、C++、PHP、Java、JS等等,C、C++、PHP、Java、JS只是一种命名,真正实现规范的一些大公司的开发人员。所以说,一门计算机编程语言越高级就意味着它的规范越贴近我们的日常生活的语言。

附上语言发展过程图:

5. 程序存储在哪里?

程序就是存储在一个计算机文件中的一堆英文。

我们写完的程序,计算机是不认识的,必须通过JVM虚拟机将编写好的源文件编译(翻译)成计算机所识别的字节码文件。

编译过程好比如有一个中国学生用中文写了10页纸的论文给一个外籍老师看,这个外籍老师不认识中文,只认识英文,所以此时这个中国学生就需要一名中英翻译的同学,帮它把这篇中文论文翻译成英文论文,内容完全一样,只不过是表现形式不一样。

因此,最终有两篇论文,一篇是中文论文,另一篇是英文论文,对应到编程中,最终有两个文件,一个是源文件,另一个字节码文件。

6. 源文件和字节码文件的命名规范是什么?

Java源文件命名为:源文件名.java。

字节码文件命名为:字节码文件名.class。

7. 源文件和字节码如何打开?

Java源文件通过记事本打开。

字节码文件通过JRE打开,即Java Runtime Environment,Java运行环境,好比mp3要一个音乐播放器才可以打开,mp4要一个视频播放器才可以打开,doc文档需要WPS或者Office才可以打开。


 

8. JVM、JRE、JDK各是什么,有什么关系?

JVM

JVM,Java Virtual Machine,java虚拟机。

Java虚拟机会在内存中开辟一块空间,专门用于运行字节码文件,JVM是在操作之前的一台虚拟的机器,用于屏蔽底层操作系统之间的差异,从而实现java源代码文件“一次编译、操作运行”的功能。

JRE

JRE,Java Runtime Environment,Java运行环境

JRE中包含了JVM,因此java源文件才能运行在JRE中,并且在运行之前,源文件需要翻译成字节码文件,随后才将字节码文件放在JVM上运行。

因此下载JRE的时候就间接下载了JVM。所以如果想要运行别人写好的java程序,只需在电脑上安装JRE即可。但是开发人员仅仅只有JRE还不够,我们是做开发的,是一个从无到有的过程,是我们写好了java程序,交给别人来运行,所以我们还需要JDK。

JDK

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

JDK涵盖了很多在开发时需要用到的工具。因为JDK是开发人员使用的,开发出来的java程序需要立即执行看下是否有bug或者其他问题,所以JDK中包含了JRE,即也包含了JVM。所以我们Java开发人员只需要安装JDK,安装完JDK就可以进行开发了。

9. 记事本和IDE的区别?

IDE是Integrated Development Environment是首字母缩写,记事本和IDE都可用于开发java程序,记事本仅仅只有记录java代码的功能,而IDE除了可以记录java代码之外,还有关键字拼写错误高亮、代码出错异常、编译时异常高亮提示、自动导包、快捷键功能等等一系列辅助咱们开发者进行软件开发,因此我们有理由拒绝使用IDE吗?答案很显然。

建议在学习javaSE阶段使用记事本进行开发,学习到集合、IO等常用类再切换IDE进行开发,因为常用类有很多异常以及包要导入,在我们通过一段时间的纯记事本开发之后,我们可以开始使用IDE,感受IDE带给我们的快感。

java开发常用的IDE:Eclipse、MyEclipse、IDEA。

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

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

相关文章

【并发编程】手写线程池阻塞队列

📝个人主页:五敷有你 🔥系列专栏:并发编程 ⛺️稳重求进,晒太阳 示意图 步骤1:自定义任务队列 变量定义 用Deque双端队列来承接任务用ReentrantLock 来做锁并声明两个条件变量 Condition fullWai…

网站不收录,与服务器不备案有关吗

随着互联网的快速发展,网站已经成为企业、个人和机构宣传和展示自己的重要平台。然而,许多网站在建设完成后却面临着不收录的问题,这给网站的管理者和拥有者带来了很大的困扰。其中,一些人认为,网站不收录的原因与服务…

什么是Instagram Reels?用好Reels 让你的流量暴涨!

Instagram Reels是Instagram在2020年全新推出的短视频功能,旨在与TikTok展开竞争。作为跨境卖家的你,利用 Reels 这一神器,将为你带去更多的流量。那该如何利用好这一神器呢?本篇文章,大白将带大家深入了解 Reels 并用…

推动海外云手机发展的几个因素

随着科技的不断发展,海外云手机作为一种新兴技术,在未来呈现出令人瞩目的发展趋势。本文将在用户需求、技术创新和全球市场前景等方面,探讨海外云手机在未来的发展。 1. 用户需求的引领: 随着人们对移动性和便捷性的需求不断增长&…

《Git 简易速速上手小册》第2章:理解版本控制(2024 最新版)

文章目录 2.1 本地仓库与版本历史2.1.1 基础知识讲解2.1.2 重点案例:回滚错误提交2.1.3 拓展案例 1:利用 git bisect 查找引入 bug 的提交2.1.4 拓展案例 2:合并提交历史 2.2 远程仓库的使用2.2.1 基础知识讲解2.2.2 重点案例:在 …

通过Harbor构建docker私服仓库

Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,它扩展了开源的Docker Distribution,通过添加一些企业必需的功能特性,如安全、标识和管理等。Harbor由VMware公司开发并开源,旨在帮助用户迅速搭建一个企业级的Docke…

点云transformer算法: FlatFormer 论文阅读笔记

代码:https://github.com/mit-han-lab/flatformer论文:https://arxiv.org/abs/2301.08739[FlatFormer.pdf] Flatformer是对点云检测中的 backbone3d部分的改进工作,主要在探究怎么高效的对点云应用transformer 具体的工作如下:一…

PostgreSQL的wal文件回收问题

引子 将PostgreSQL的GUC参数wal_recycle设置为on,然后对数据库执行一定业务量的操作,会发现在pg_wal目录下,有很多未来使用的wal文件,且创建时间比现在正在使用的wal文件更早,下文将描述和分析这种情况。 问题描述 …

springboot160社区智慧养老监护管理平台设计与实现

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计,课程设计参考与学习用途。仅供学习参考, 不得用于商业或者非法用途,否则,一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

【数据分享】1929-2023年全球站点的逐年平均能见度(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据,气象指标包括气温、风速、降水、能见度等指标,说到气象数据,最详细的气象数据是具体到气象监测站点的数据! 之前我们分享过1929-2023年全球气象站点的逐年平均气温数据、逐年最高气温数据…

在django中集成markdown文本框

首先需要下载开源组件&#xff1a;http://editor.md.ipandao.com/&#xff0c;可能需要挂梯子。 百度网盘&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1D9o3P8EQDqSqfhAw10kYkw 提取码&#xff1a;eric 1.在html代码中生成一个div&#xff0c;ideditor <div c…

Oracle数据表ID自增操作

一、Oracle ID自增长功能介绍 Oracle数据库默认不支持像 SQLServer、MySQL中的自增长&#xff08;auto increment&#xff09;功能&#xff0c;即自动为每一行记录的自增长字段生成下一个值。 二、Oracle ID自增长方法 第一种&#xff0c;通过序列&#xff08;sequence&#…

蓝桥杯Web应用开发-CSS 基础语法4(字体属性、链接中的伪类、列表样式)

专栏持续更新中 字体属性 字体属性用于定义字体的类型、字号大小、加粗、斜体等方面样式。常用的字体属性如下表所示&#xff1a; 属 性可 取 值描 述fontfont-style、font-variant、font-weight、font-size&#xff08;或 line-height&#xff09;、font-family在一个声明中…

《计算机网络简易速速上手小册》第5章:无线网络和移动通信(2024 最新版)

5.1 WLAN的工作原理 - 揭秘无线局域网络的魔法 5.1.1 基础知识 无线局域网络&#xff08;WLAN&#xff09;允许设备通过无线方式连接到一个局部区域网络&#xff0c;主要基于IEEE 802.11标准&#xff0c;俗称Wi-Fi。WLAN的核心是无线路由器&#xff0c;它不仅充当着网络中各设…

【多模态】27、Vary | 通过扩充图像词汇来提升多模态模型在细粒度感知任务(OCR等)上的效果

论文&#xff1a;Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models 代码&#xff1a;https://github.com/Ucas-HaoranWei/Vary 出处&#xff1a;旷视 时间&#xff1a;2023.12 一、背景 当前流行的大型视觉-语言模型 Large Vision-Language Mode…

挑战杯 python+opencv+深度学习实现二维码识别

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; pythonopencv深度学习实现二维码识别 &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;3分工作量&#xff1a;3分创新点&#xff1a;3分 该项目较为新颖&…

探索Gin框架:Golang Gin框架请求参数的获取

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站https://www.captainbed.cn/kitie。 前言 我们在专栏的前面几篇文章内讲解了Gin框架的路由配置&#xff0c;服务启动等内容。 专栏地址&…

后台弱口令问题

网站的运营管理不能缺少后台管理系统的支持&#xff0c;若能成功进入后台管理系 统&#xff0c;就意味着在Web渗透测试中成功了一大半。进行非授权登录有很多种方法&#xff0c; 这里主要介绍的是弱口令问题&#xff0c;破解弱口令是进入系统的最常见也是最有效的方 法&#xf…

如何在 Java 中通过 Map.Entry 访问 Map 的元素

我们使用 Map.Entry 来遍历 ConcurrentHashMap 的代码片段如下&#xff1a; for (Map.Entry<String, String> entry : map.entrySet()) { System.out.println("Key: " entry.getKey() ", Value: " entry.getValue()); } 在 Map.java 中&…

RabbitMQ_00000

MQ的相关概念 RabbitMQ官网地址&#xff1a;https://www.rabbitmq.com RabbitMQ API地址&#xff1a;https://rabbitmq.github.io/rabbitmq-java-client/api/current/ 什么是MQ&#xff1f; MQ(message queue)本质是个队列&#xff0c;FIFO先入先出&#xff0c;只不过队列中…