当前位置: 首页 > article >正文

Java基础使用①Java特点+环境安装+IDEA使用

目录

1. Java的概念和用途

1.1 Java的概念和发展史

1.2 Java的重要性

1.3 Java的特点

2. Java环境

2.1 JVM 和 JDK

2.2 Java环境安装

2.3 安装IntelliJ IDEA并使用

2.4 Java的main方法和运行

2.5 IntelliJ IDEA常见快捷键

2.5.1 普通快捷键

2.5.2 调试快捷键

2.5.3 代码生成快捷键

本篇完


        写在前面:本人已经学习了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


2.4 Java的main方法和运行

        初学者看着这一串代码肯定是“一脸懵逼”,没关系慢慢来。通过上述代码,可以看到一个完整的Java程序的结构,Java程序的结构由如下三个部分组成:

  1. 源文件(扩展名为*.java):源文件包含类的定义。类用来表示程序的一个组件,小程序或许只会有一个类。类的内容必须包含在花括号里面。
  2. 类:类中带有一个或多个方法。方法必须在类的内部声明。
  3. 方法:在方法的花括号中编写方法应该执行的语句。

总结一下:

  • 类存在于源文件里面。
  • 方法存在于类中。
  • 语句存在于方法中。

编写和运行第一个Java程序时,可能会遇到的一些错误:
1. 源文件名后缀不是.java
2. 类名与文件名不一致
3. main方法名字写错:mian
4. 类没有使用public修饰
5. 方法中语句没有以分号结尾
6. 中文格式的分号
7. JDK环境没有配置好,操作系统不能识别javac或者java命令

        Java是一门半编译型、半解释型语言。先通过javac编译程序把源文件进行编译,编译后生成的 .class文件时由字节码组成的平台无关、面向JVM的文件。最后通过启动java虚拟机(也就是JVM)来运行 .class文件,此时JVM会将字节码转换成平台能够理解的形式来运行。

        注意:在运行Java程序前,必须先安装号JDK(Java Development Kit即Java开发工具包),JDK里面就包含了javac和java工具,Java程序最终就是在JVM(Java虚拟机)中运行的。


2.5 IntelliJ IDEA常见快捷键

2.5.1 普通快捷键

  • SHIFT+F3  向上一个关键字出现位置
  • 选中文本,按Alt+F3 ,高亮相同文本,F3逐个往下查找相同文本
  • F4   查找变量来源
  • CTRL+SHIFT+O  弹出显示查找内容
  • Ctrl+W 选中代码,连续按会有其他效果
  • F2 或Shift+F2 高亮错误或警告快速定位
  • Ctrl+Up/Down 光标跳转到第一行或最后一行下
  • Ctrl+B 快速打开光标处的类或方法
  • CTRL+ALT+B  找所有的子类
  • CTRL+SHIFT+B  找变量的类
  • Ctrl+Shift+上下键  上下移动代码
  • Ctrl+Alt+ left/right 返回至上次浏览的位置
  • Ctrl+X 删除行
  • Ctrl+D 复制行
  • Ctrl+/ 或 Ctrl+Shift+/  注释(// 或者/*…*/ )
  • Ctrl+H 显示类结构图
  • Ctrl+Q 显示注释文档
  • Alt+F1 查找代码所在位置
  • Alt+1 快速打开或隐藏工程面板
  • Alt+ left/right 切换代码视图
  • ALT+ ↑/↓  在方法间快速移动定位
  • CTRL+ALT+ left/right 前后导航编辑过的地方
  • Ctrl+Shift+Backspace可以跳转到上次编辑的地
  • Alt+6    查找TODO
  • SHIFT+ENTER 另起一行
  • CTRL+Z   倒退(撤销)
  • CTRL+SHIFT+Z  向前(取消撤销)
  • CTRL+ALT+F12  资源管理器打开文件夹
  • ALT+F1   查找文件所在目录位置
  • SHIFT+ALT+INSERT 竖编辑模式
  • CTRL+F4  关闭当前窗口
  • Ctrl+Alt+V,可以引入变量。例如:new String(); 自动导入变量定义
  • Ctrl+~,快速切换方案(界面外观、代码风格、快捷键映射等菜单)

2.5.2 调试快捷键

其实常用的 就是F8 F7 F9 最值得一提的 就是Drop Frame  可以让运行过的代码从头再来

  • alt+F8          debug时选中查看值
  • Alt+Shift+F9,选择 Debug
  • Alt+Shift+F10,选择 Run
  • Ctrl+Shift+F9,编译
  • Ctrl+Shift+F8,查看断点
  • F7,步入
  • Shift+F7,智能步入
  • Alt+Shift+F7,强制步入
  • F8,步过
  • Shift+F8,步出
  • Alt+Shift+F8,强制步过
  • Alt+F9,运行至光标处
  • Ctrl+Alt+F9,强制运行至光标处
  • F9,恢复程序
  • Alt+F10,定位到断点

2.5.3 代码生成快捷键

        IntelliJ IDEA的代码生成类似Eclipse,虽不是独到之处,但因为日常使用频率极高,所以还是罗列在榜单前面。常用的有fori/sout/psvm+Tab即可生成循环、System.out、main方法等boilerplate样板代码,用Ctrl+J可以查看所有模板:

        后面“辅助”一节中将会讲到Alt+Insert,在编辑窗口中点击可以生成构造函数、toString、getter/setter、重写父类方法等。这两个技巧实在太常用了,几乎每天都要生成一堆main、System.out和getter/setter。

        另外,Intellij IDEA 13中加入了后缀自动补全功能(Postfix Completion),比模板生成更加灵活和强大。例如要输入for(User user : users)只需输入user.for+Tab。再比如,要输入Date birthday = user.getBirthday();只需输入user.getBirthday().var+Tab即可。

本篇完

IntelliJ IDEA的功能还是很强大的,在后面的博客中还会慢慢学到。


http://www.kler.cn/a/383075.html

相关文章:

  • python round四舍五入和decimal库精确四舍五入
  • Linux 中 grep、sed、awk 命令
  • 《PCI密码卡技术规范》题目
  • 【从零开始入门unity游戏开发之——C#篇21】C#面向对象的封装——`this`扩展方法、运算符重载、内部类、`partial` 定义分部类
  • 拆解一个微型气泵了解工作原理
  • Java实现贪吃蛇游戏
  • 求猫用宠物空气净化器推荐,有没有吸毛强、噪音小的产品
  • Linux awk命令详解-参数-选项-内置变量-内置函数-脚本(多图、多示例)
  • 我们来学mysql -- EXPLAIN之ID(原理篇)
  • 爱普生 SG - 8201CJA 可编程振荡器成为电子应用的解决方案
  • 【LeetCode】【算法】142. 环形链表II
  • 开放寻址法、链式哈希数据结构详细解读
  • Vue3 + Element Plus简单使用案例及【eslint】报错处理
  • 【漏洞复现】Apache Druid RCE (CVE-2023-25194) 漏洞
  • Linux与Windows中的流量抓取工具:wireshark与tcpdump
  • 防火墙|WAF|漏洞|网络安全
  • 【LeetCode】【算法】215. 数组中的第K个最大元素
  • 内外连接【MySQL】
  • 机器学习(三)——决策树(附核心思想、重要算法、概念(信息熵、基尼指数、剪枝处理)及Python源码)
  • Flutter UI构建渲染(4)
  • Windows10/11下python脚本自动连接WiFi热点
  • STM32启动文件分析
  • Axure是什么软件?全方位解读助力设计入门
  • 实践是认识的来源
  • GPU的内存是什么?
  • 继承——面向对象编程的基石