Java基础语法①Java特点和环境安装

目录

1. Java的概念和用途

1.1 Java的概念和发展史

1.2 Java的重要性

1.3 Java的特点

2. Java环境

2.1 JVM 和 JDK

2.2 Java环境安装

2.3 安装IntelliJ IDEA并使用


        写在前面:本人已经学习了C/C++方向的内容,大二结束找到实习回学校后还有时间,想着再多学一门语言增加自己对计算机的理解,所以开始了Java的学习。Java的学习可不学习前面专栏的内容,懂一点C语音基础最好,后面还会更新JavaSE和相关技术栈。

1. Java的概念和用途

1.1 Java的概念和发展史

        Java是一门面向对象的编程语言,Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程,是一门优秀的程序设计语言。不仅如此,Java还是一个有一系列计算机软件和规范形成的技术体系,这个技术体系提供了完整的用于软件开发和跨平台部署的支持环境,并广泛应用于嵌入式系统、移动终端、企业服务器、大型机等各种场合。

        Java 语言源于 1991 年 4 月,Sun 公司 James Gosling博士 领导的绿色计划(Green Project) 开始启动,此计划最初的目标是开发一种能够在各种消费性电子产品(如机顶盒、冰箱、收音机等)上运行的程序架构。这个就是Java的前身: Oak (得名与Java创始人James Gosling办公室外的一棵橡树),但由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1995年代互联网的发展,Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布,并提出“Write once, Run anywhere”的口号。


1.2 Java的重要性

        下图数据来自于TIOBE编程语言社区2023年9月最新的排行榜,常年占据语言排行榜前列,是近些年最火的编程语言之一。

        TIOBE 编程语言社区排行榜是编程语言流行趋势的一个指标,每月更新,这份排行榜排名基于互联网上有经验的程序员、 课程和第三方厂商的数量。排名使用著名的搜索引擎(诸如 Google、MSN、Yahoo!、Wikipedia、YouTube 以及 Baidu 等)进行计算。

注:上述排名不能说明哪个语言好,哪个不好,每门编程语言都有适应自己的应用场景。

        Java语言目前在IT领域的应用是非常广泛的,掌握Java语言可以从事不少IT行业的相关开发岗位,具体包括:

  • 企业级系统:比如大型复杂的企业级软件系统,Java的安全机制以及跨平台性的优势,其在分布式系统领域开发中有广泛应用,涉及到金融、电信、交通、电子商务、ERP系统等。
  • Web开发领域:Java语言在设计初期,赶上了互联网发展的风口,当时就瞄准了互联网开发,凭借稳定的性能表现和较好的扩展性,Java语言一直是大型互联网平台的重要解决方案。
  • android平台应用:Android是一种智能手机操作系统,Java是一门非常流行的编程语言。Android上的应用程序就是大多是用Java编写的,Android的SDK大部分就是直接将Java SDK翻译过来的,所以具有Java基础,也可以快速上手Android开发。
  • 大数据平台开发:大数据相关的各类框架,比如:Hadoop、spark、storm、flink等,以及各种中间件flume、kafka、sqoop等,这些框架以及工具等大多数是用Java语言开发的,随着大数据技术的落地应用,Java在大数据领域的应用前景也是比较广阔的。

        除上述开发领域外,Java在游戏领域、人工智能领域、科学计算领域、嵌入式领域也有一定的应用。因此学好Java,将来就业的选择也会非常广泛。

在校招中的岗位需求:

        从上述位置需求中可以看出,由于应届生缺少实际工作经验,因此校招中企业更看重学生的基础,也就是:语言、数据结和/ 算法、操作系统、网络、数据库等,其他的属于加分项。

1.3 Java的特点

以下Java语言特性来自于Java白皮书:

  1. 简单性
           Java语法是C++语法的一个“纯净版本”,相当于对C++做了一个减法。这里没有头文件、指针运算(甚至指针语法)、结构、联合、操作符重载、虚基类等等。不仅如此,Java开发环境远远超出大多数其他编程语言的开发环境。
  2. 面向对象

    什么是面向对象?
           在Java的世界里,一切皆对象。比如:人、狗、手机、电脑等都是对象。所谓面相对象,就是依靠对象之间的交互来完成事情,比如:人用手机网上购物,狗吃骨头…
           Java的面向对象特性与C++旗鼓相当,与C++的主要不同点在于多重继承。在Java中,取而代之的是更简单的接口概念。而且与C++相比,Java提供了更丰富的运行时自省功能。

  3. 分布式(微服务)
            Java有丰富的例程库,用于处理像HTTP和FTP之类的TCP/IP协议。Java应用程序能够通过URL打开和访问网络上的对象,其便捷程度就好像访问本地文件一样。

  4. 健壮性
           Java与C++最大的不同在于Java采用的指针模型可以消除重写内存和损坏数据的可能性(对 于曾经花费几个小时来检查由于指针bug而引起内存冲突的人来说,一定很喜欢Java的这一特性)。不仅如此,Java编译器能够检测许多在其他语言中仅在运行时才能够检测出来的问题。

  5. 安全性
           Java适用于网络/分布式环境。为了达到这个目标,在安全性方面投入了大量的精力。使用Java可以构建防病毒、防篡改的系统从一开始,Java就设计成能够防范常见的各种攻击:1.运行时堆栈溢出。2.蠕虫和病毒常用的攻击手段。3.破坏自己进程空间之外的内存。4.未经授权读写文件

  6. 体系结构中立
          编译器生成一个体系结构中立的目标文件格式,按照该中规范生成的文件,只要有Java运行时系统,这些编译后的代码就可以在许多处理器上运行。Java编译器通过生成与特定计算机体系结构无关的字节码指令来实现这一特性。精心设计的字节码不仅可以很容易的在任何机器上解释执行,而且还可以动态地翻译成本地机器代码。
    这也就是为什么可以:“Wrice once,Run anywhere”。

  7. 可移植性
           与C/C++不同,Java规范中没有“依赖具体实现的地方”。基本数据类型的大小以及有关运算都做了明确的说明。例如,Java中的int永远是32位的整数,而在C/C++中,int可能是16位整数、32位整数,也可能是编译器提供商指定的其他大小。在Java中,数据类型具有固定的大小,这消除了代码移植时令人头疼的主要问题。

  8. 解释性
           Java为了实现与平台无关,自己维护了一套基于栈架构的指令集,Java源代码经过编译之后,字节码文件中的指令就是按照自己的指令集来组织的,但是在具体硬件环境中运行时,系统并不能识别,因为Java程序在执行时,Java解释器会逐条的将字节码文件中的指令翻译成CPU的指令集。

  9. 高性能
           边解释边执行,垃圾会说等导致了Java代码运行效率偏低,近年来JVM也在不断的优化,比如:JIT(即时编译器),热点代码探测,让Java程序的执行效率大幅提高,在有些场合不亚于C/C++。

  10. 多线程
            Java在当时很超前。它是第一个支持并发程序设计的主流语言。多线程可以带来更好的交互响应和实时行为。并发程序设计绝非易事,但是Java在这方面表现出色,可以很好的管理这个工作。

  11. 动态性
            Java与C/C++相比更加具有动态性。它能够适应不断发展的环境。库中可以自由的添加新方法和实例变量,而对客户端没有任何影响。在Java中找出运行时类型信息十分简单。

因此:Java不仅仅是一门编程语言,也是一个由一些列计算机软件和规范组成的技术体系。


2. Java环境

2.1 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 了。

        如果要从事Java编程,则需要安装JDK,如果仅仅是运行一款Java程序则JRE就满足要求。

        Java的安装包分为两类,一类是JRE其就是一个独立的Java运行环境; 一类是JDK其是Java的开发环境,不过在JDK的发布包中包含了一个独立的JRE,另外需要注意JDK本身就内置有JRE。

2.2 Java环境安装

        在Windows下安装JDK的时候一定要考虑安装包的位数,如果是32位操作系统,则准备jdk-xxx-windows-i586.exe,如果是64位操作系统,则准备jdk-xxx-windows-x64.exe。下文中安装的是64位操作系统下的JDK,32位操作系统下安装方式同理。

在Oracle下载1.8:

        关于JDK的配置,网上流传的方法特别多,有的也特别复杂,完全不可取。配置之前,先弄清楚到底配置什么东西。

  • 第一:JAVA_HOME环境变量,值为JDK的安装目录,为什么要这么配置能,主要是应为很多开源软件的依赖到这个变量,用于寻找机器上的Java环境,比如:Tomcat , Maven
  • 第二:Path变量值中追加Java命令的路径,道理很简单,就是希望能够在命令行中,直接使用JDK中提供的命令,比如:javajavac

        第一步:配置JAVA_HOME

        第二步:配置Path, 需要注意Path路径一般是存在的,只需要追加即可。这里使用%JAVA_HOME%的意思是直接引用上面配置的JAVA_HOME的值,这样的好处在于,如果Java安装目录发生变话,主需要修改JAVA_HOME的值,不用再修改Path变量的值。

        第三步:配置CLASSPATH:

变量名: CLASSPATH
变量值: .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
注意前面的 . 这个点号不能省略掉

安装完成JDK以及相应的配置之后,需要验证是否安装成功,是否配置正常。

第一步:打开cmd命令行窗口

        第二步:输出java -version命令,如果输出如下图,表示安装配置成功,否则需要检查安装和配置是否正确。

        实际上在学习,工作中我们完全没有必要去区分什么时候安装JRE,什么时候安装JDK,无非就是JDK的安装包要比JRE大一些。安装一个JDK就可以满足正常的软件开发,运行的需求,因此安装JDK即可。


2.3 安装IntelliJ IDEA并使用

下载网址:Download IntelliJ IDEA – The Leading Java and Kotlin IDE (jetbrains.com)

可选择下载社区板(免费),有时间上网搜索许可码的可下载企业版。

下载后看Java的代码结构创建一个空项目(然后按着下面创建模块+包+类):

一开始是这样:

        看几个快捷键,输入main再按回车就得到了main函数,然后输入sout就得到了打印函数,再在里面输入hello,右上角运行后控制台就输出了hello

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

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

相关文章

atest v0.0.18 提供了强大、灵活的 HTTP API Mock 功能

atest 发布 v0.0.18 atest 是致力于帮助开发者持续保持高质量 API 的开源接口工具。 你可以在命令行终端或者容器中启动: docker run -p 8080:8080 ghcr.io/linuxsuren/api-testing:v0.0.18 亮点 在开源之夏 2024 中 atest 增加了基于 MySQL 的测试用例历史的支持HT…

ele-table表格列表内,双击编辑部分信息(el-table组件同理)

说明 ele-table 为公司内部组件,重点看 【主要代码】 部分代码 ele-table表格列表内:双击需要编辑的区域,编辑部分信息 实现 双击需要编辑的数据,展示输入框/日期选择, 展示输入框:修改完之后,按…

开源的GPT-4o模型使用指南,Mini-Omni2集视觉、语音和双工能力于一体的

1. Mini-Omni2 是什么? Mini-Omni2 是一个开源的多模态语言模型,旨在模拟 GPT-4o 的视觉、语音和文本处理能力。它能够理解和生成视觉、听觉和文本内容,并支持实时的语音输出和灵活的双工交互。 Mini-Omni2 由清华大学和 Inspirai 的研究人…

Serverless + AI 让应用开发更简单

本文整理自 2024 云栖大会,阿里云智能高级技术专家,史明伟演讲议题《Serverless AI 让应用开发更简单》 随着云计算和人工智能(AI)技术的飞速发展,企业对于高效、灵活且成本效益高的解决方案的需求日益增长。本文旨在…

正式开源:从 Greenplum 到 Cloudberry 迁移工具 cbcopy 发布

Cloudberry Database 作为 Greenplum 衍生版本和首选开源替代,由 Greenplum 原始团队成员创建,与 Greenplum 保持原生兼容,并能实现无缝迁移,且具备更新的 PostgreSQL 内核和更丰富的功能。GitHub: https://github.com/cloudberry…

基于人工智能的搜索和推荐系统

互联网上的搜索历史分析和用户活动是个性化推荐的基础,这些推荐已成为电子商务行业和在线业务的强大营销工具。随着人工智能的使用,在线搜索也在改进,因为它会根据用户的视觉偏好提出建议,而不是根据每个客户的需求和偏好量身定制…

SpringBoot starter机制

1、出现的背景 在spring boot之前,想要在spring中集成redis,需要做的事情包括: (1)引入jar包:包括redis的jar包,redis依赖的jar包,相应的版本,与spring版本是否兼容等 …

在 JavaScript 中,`Array.prototype.filter` 方法用于创建一个新数组,该数组包含通过测试的所有元素

文章目录 1、概念在你的代码中的作用示例总结 2、实战3、formattedProducts4、filteredProducts 1、概念 在 JavaScript 中,Array.prototype.filter 方法用于创建一个新数组,该数组包含通过测试的所有元素。具体来说,filter 方法会遍历数组中…

通过源码分析类加载器里面可以加载的类

类列表 每一个ClassLoader里面的类列表,类的数量都是固定的。 对上一节中的dex反编译 使用DexClassLoader类动态加载插件dex   利用jadx对dex进行反编译可以看到有哪些类 源码分析 BaseDexClassLoader 从BaseDexClassLoader类加载器开始分析 在BaseDexClassLoade…

系统架构设计师(软考高级)一站式通关课程

系统架构设计师(软考高级) 一站式通关课程 系统架构设计师(软考高级)教程(三连评论分享链接!) 🎯 课程亮点: 全面覆盖: 从基础概念到高级应用,涵盖…

C++ 优先算法——盛最多水的容器(双指针)

目录 题目:盛最多水的容器 1. 题目解析 2. 算法原理 3. 代码实现 题目:盛最多水的容器 1. 题目解析 题目截图: 如图所示: 水的高度一定是由较低的那条线的高度决定的:例1图中,是由7决定的,然后求出…

SQL-lab靶场less1-4

说明:部分内容来源于网络,如有侵权联系删除 前情提要:搭建sql-lab本地靶场的时候发现一些致命的报错: 这个程序只能在php 5.x上运行,在php 7及更高版本上,函数“mysql_query”和一些相关函数被删除&#xf…

Golang | Leetcode Golang题解之第535题TinyURL的加密与解密

题目: 题解: import "math/rand"type Codec map[int]stringfunc Constructor() Codec {return Codec{} }func (c Codec) encode(longUrl string) string {for {key : rand.Int()if c[key] "" {c[key] longUrlreturn "http:/…

使用 Elasticsearch 进行语义搜索

Elasticsearch 是一款功能强大的开源搜索引擎,可用于全文搜索、分析和数据可视化。传统上,Elasticsearch 以其执行基于关键字/词汇的搜索的能力而闻名,其中文档基于精确或部分关键字匹配进行匹配。然而,Elasticsearch 已经发展到支…

计算机毕业设计Python+大模型新闻自动分类 新闻舆情预测 新闻语料情感分析 新闻推荐系统 朴素贝叶斯分类算法 机器学习 深度学习

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…

【097】基于SpringBoot+Vue实现的个人社区博客管理系统

系统介绍 演示视频 小白博客2.0(SpringbootVue)源码数据库讲解视频设计文档 基于SpringBootVue实现的小白博客2.0系统设计了超级管理员、系统观察者、用户三种角色,超级管理员可对用户授权,具体实现的功能如下 文章采用了比较火的Markdown编…

LM Head weights;ChatGPT-3词汇量:175,000;llama7b 词汇量,词嵌入维度:4096

目录 LM Head weights ChatGPT-3词汇量:175,000 llama7b 词汇量 词汇量:32000 max_position_embeddings: 4096 LM Head weights ChatGPT-3词汇量:175,000 ChatGPT-4 确切的词向量种类数量公开信息。但可以根据一些语言模型的相关知识进行推测分析。 一般来说,语言模…

ArcGIS005:ArcMap常用操作101-150例动图演示

摘要:本文涵盖了GIS软件操作的多方面内容,包括地图文档的新建、打开、保存及版本兼容性处理;错误与警告的查阅及帮助文档的使用技巧;地图打印比例尺的调整与地图信息的完善;图层操作的撤销与恢复,界面元素的…

Chrome和夸克谁更护眼

在当今数字化时代,我们每天长时间面对电脑和手机屏幕,眼睛的健康问题变得越来越重要。浏览器作为我们日常使用频率极高的工具,其护眼功能的优劣直接影响到我们的视觉舒适度。本文将对Chrome和夸克两款主流浏览器进行对比,探讨它们…

WPF+MVVM案例实战(十二)- 3D数字翻牌计时实现

文章目录 1、运行效果2、功能实现1、文件创建2、控件代码实现3、控件引用与菜单实现1.引用用户控件2.按钮菜单3、计时器界面实现4、源代码获取1、运行效果 3D数字翻牌计时 2、功能实现 1、文件创建 打开项目 Wpf_Examples ,在用户控件 UserControlLib 中创建 NumberFoldi…