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

ops/2024/12/28 19:28:46/

目录

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.ppmy.cn/ops/130877.html

相关文章

blender雕刻基础 笔记

一、教学视频来源 案例5:荧光树桩_雕刻基础_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1Bt4y1E7qn/?p18&share_sourcecopy_web&vd_sourced9dc363bbfe0ac72dbaa04823c59231e 二、笔记 1. 启动blender的雕刻模式 启动雕刻模式有两种方式&#x…

[CUDA] stream使用笔记

文章目录 1. stream一般用法2. stream与event:3. stream异常的排查4. stream的异步与同步行为 1. stream一般用法 cudaStream_t stream_; cudaStreamCreate(&stream_); // create stream // some operators running on this stream_ cudaStreamSynchronize(str…

如何引用一个已经定义过的全局变量?

如何引用一个已经定义过的全局变量? 答 、可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变量,假定你将那个变量写错了,那么在编译期间会报错,如果你用…

Android -- (静态广播) APP 监听U盘挂载

Android – (静态广播) APP 监听U盘挂载 注册广播&#xff08;AndroidManifest.xml&#xff09;&#xff1a; <receiver android:name".receiver.MountReceiver"><intent-filter><action android:name"android.intent.action.MEDIA_MOUNTED"…

【基础】使用template替换yaml中的变量

前言 在接口自动化测试的时候&#xff0c;yaml 文件一般放测试的数据或当配置文件使用&#xff0c;yaml 文件存放静态的数据是没问题的&#xff0c;python的数据类型基本上都是支持的。 有时候我们想在 yaml 文件中引用变量来读取 python 代码的设置值。 template 使用 temp…

【Union of Rectangles】:矩形的并集

【Union of Rectangles】&#xff1a;矩形的并集 C语言版本C 版本Java版本Python版本 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; A rectangle in a plane having its sides parallel to the coordinate axis, is determined by the coo…

chrome编辑替换js文件的图文教程

一、找到要修改替换的js文件 二、将文件保存到本地 三、在本地新建一个文件 路径最好跟你要替换的文件的路径保持一致&#xff0c; 四、选中js文件替换 回到原文件右击选择保存并覆盖 点击完保存并覆盖之后回到替换的新文件中&#xff0c;在自动生成的webpack文件中对文件进…

Android中同步屏障(Sync Barrier)介绍

在 Android 中&#xff0c;“同步屏障”&#xff08;Sync Barrier&#xff09;是 MessageQueue 中的一种机制&#xff0c;允许系统临时忽略同步消息&#xff0c;以便优先处理异步消息。这在需要快速响应的任务&#xff08;如触摸事件和动画更新&#xff09;中尤为重要。 在 An…