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

【Java入门合集】第一章Java概述

【Java入门合集】第一章Java概述


博主:命运之光
专栏:JAVA入门

学习目标
1.理解JVM、JRE、JDK的概念;
2.掌握Java开发环境的搭建,环境变量的配置;
3.掌握Java程序的编写、编译和运行;
4.学会编写第一个Java程序,掌握Java程序的结构。

目录

  • 【Java入门合集】第一章Java概述
    • 1.1Java语言简介
      • 简介
      • Java的起源
      • Java技术的发展阶段
        • 第一阶段——萌芽期
        • 第二阶段——完善期
        • 第三阶段——平稳期
        • 第四阶段——发展期
      • Java技术体系平台
      • Java语言的特点
      • Java代码的处理过程
    • 1.2搭建Java开发环境
      • Java的开发环境
      • JDK相关概念
      • Java语言运行机制
    • 1.3Java程序的运行
      • 文本编辑工具介绍
      • 准备工作
      • “HelloWorld”程序
      • 关于CLASSPATH
      • HelloWorld代码解释
      • 良好的编程风格
      • 集成开发环境介绍
    • 1.4常见错误总结
    • 🍓🍓总结🍓🍓


1.1Java语言简介

简介

Java是一门高级的面向对象的程序设计语言。使用Java语言编写的程序是跨平台的,从PC机到移动设备,到处都运行着Java开发的程序和游戏。Java程序可以在任何计算机、操作系统以及支持Java的硬件设备上运行。
在这里插入图片描述

Java的起源

请添加图片描述

请添加图片描述

Java技术的发展阶段

第一阶段——萌芽期

时间 :1991年;
地点:美国Sun公司(美国加利福利亚);
主要设计者: James Gosling(詹姆斯•高斯林);
产品:Oak语言。

第二阶段——完善期

时间:1995年—1998年;
1995年Java语言面世, 推出
JDK1.0

1998年发布JDK 1.2,随之将Java 分为J2SEJ2EEJ2ME

第三阶段——平稳期

时间:1999年—2004年;
产品:JDK 1.3 ~ JDK 1.4;
Java已成为最为流行的网络编程语言,并且在移动计算和智能制造等领域得到了广泛应用。

第四阶段——发展期

时间 :2005——现在;
产品 :2005年推出JDK 1.5;
2009年Oracle甲骨文74亿美元收购Sun,获得Java版权;
2014年,甲骨文发布Java SE 8.0(JDK1.8)

Java技术体系平台

Java SE(Java Standard Edition)标准版(整个技术架构的核心
)

支持面向桌面级应用(如Windows下的应用程序)的Java平台,提供了完整的Java核心API,此版本以前称为J2SE。

Java EE(Java Enterprise Edition)企业版

是为开发企业环境下的应用程序提供的一套解决方案。该技术体系中包含的技术如:Servlet 、Jsp等,主要针对于Web应用程序开发。版本以前称为J2EE。

Java ME(Java Micro Edition)小型版

支持Java程序运行在移动终端(手机、PDA)上的平台,对Java API有所精简,并加入了针对移动终端的支持,此版本以前称为J2ME。

Java语言的特点

🍓特点一:面向对象

  • 两个基本概念:类、对象;
  • 三大主要特性:封装、继承、多态;

🍓特点二:健壮性
吸收了C/C++语言的优点,但去掉了其影响程序健壮性的部分(如指针、内存的申请与释放等),提供了一个相对安全的内存管理和访问机制;

🍓特点三:跨平台性

  • 跨平台性:通过Java语言编写的应用程序在不同的系统平台上都可以运行。“Write once , Run Anywhere
  • 原理:只要在需要运行 java 应用程序的操作系统上,先安装一个Java虚拟机 (JVM Java Virtual Machine)即可。由JVM来负责Java程序在该系统中的运行。

Java代码的处理过程

程序开发需要经过 编写源码 ——>编译 ——> 运行 的过程。
请添加图片描述

如果从编程语言的角度而言,分为两种类型的编程语言:编译型、解释型

编译型源程序(C程序)——>编译链接——>可执行程序EXE——>运行——>操作系统
Java属于两种类型的合集:
源文件——>编译——>字节码文件(二进制文件)——>解释/运行——>解释器——>操作系统


1.2搭建Java开发环境

Java的开发环境

Java开发运行环境是指Java开发工具和相应的硬/软件环境,目前主流是Oracle公司的JDK(java开发工具包 Java Development Kit) 。
为了提高Java程序的开发效率,目前有很多集成开发工具(IDE),包括Eclipse、MyEclipse、JBuilder、JDeveloper、JCreator等,使用这些集成开发工具能帮助我们敏捷快速地开发应用系统。

JDK相关概念

JDK
Java Development kit 即 java开发工具包),用于开发Java程序
JRE
(Java Runtime Environment 即java运行环境),用于运行Java程序
JVM
(Java Virtual Machine 即Java虚拟机),将Java程序翻译成机器语言,交给底层操作系统执行,并保证运行效果,实现JAVA程序跨平台性

在这里插入图片描述

🍓JDK 、JRE、JVM关系
JDK = JRE + 开发工具库(例如javac编译工具等)
JRE = JVM + Java SE标准类库

Java语言运行机制

在Java中所有的程序都是在 JVM(Java Virtual Machine)上运行的。JVM是在一台计算机上由软件或硬件模拟的虚拟计算机

  • 对于不同的平台,有不同的虚拟机;
  • 只有某平台提供了对应的java虚拟机,java程序才可在此平台运行;
  • Java虚拟机机制屏蔽了底层运行平台的差别,实现了“一次编译,到处运行”。

在这里插入图片描述

Java编译环境
在这里插入图片描述


1.3Java程序的运行

文本编辑工具介绍

  • 文本编辑工具
    记事本在这里插入图片描述

EditPlus
在这里插入图片描述

TextPad
NotePad++

准备工作

注:在编写代码之前,先确认系统中“文件扩展名”选项被勾选,如图所示。
在这里插入图片描述

“HelloWorld”程序

步骤一:编写

  • 选择最简单的编辑器:记事本; (也可以使用NotePad++)
  • 敲入代码;
  • 将文件保存成HelloWorld.java,这个文件是存放java代码的文件,称为源文件
    在这里插入图片描述

步骤二:编译

  • 有了java源文件,通过编译器将其编译成JVM可以识别的字节码文件;
  • 命令提示符窗口(win+R)中操作。

Dos常用命令
1、转换盘符
D: 回车 //转到D盘;
C:回车 //转到C盘;
2、cd 目录名 // 进入目录名所表示的目录(即文件夹)
cd myjava //进入myjava目录;
cd … //退回到父目录;
cd \ //退回到根目录;
cd myjava\a\b //进入到myjava下的a下的b目录;
cd命令只能在同一个盘符内进行目录转换,跨盘符不行,需要先转换盘符
3、exit //退出命令行窗口

  • 进入Java源文件目录下,通过javac编译工具对HelloWorld.java文件进行编译; 格式: javac HelloWorld.java
  • 如果程序没有错误,没有任何提示,在当前目录下会出现一个HelloWorld.class文件,该文件称为字节码文件,也是可以执行的java的程序。
    在这里插入图片描述
    在这里插入图片描述

步骤三:解释程序,对生成的Hello.class在JVM上执行。

通过运行工具java.exe对字节码文件进行执行;
格式: java HelloWorld (不写扩展名)
在这里插入图片描述
在这里插入图片描述

关于CLASSPATH

执行java程序的过程

在这里插入图片描述

1.CLASSPATH主要指的是类的运行路径,启动JVM后,JVM在运行时需要通CLASSPATH加载所需要的类。
2.默认情况下,CLASSPATH是指向当前目录(命令行窗口所在的目录)中的类。(因而一般需要进入到程序所在路径下执行程序)
(JDK6.0后一般情况下无需配置CLASSPATH)

HelloWorld代码解释

public class HelloWorld {public static void main( String[] args ) {System.out.println("hello,world!");}
}

如果有public,则文件名必须与类名“HelloWorld”相同,否则可以不同

这是定义一个名字叫做HelloWorld的类,类是java当中所有代码的一个基本组织单位

第二行是固定写法,基本不能改变,这是程序启动的起点

第三行开始,就是程序执行的内容,这一行是一个输出语句、打印语句,就是在屏幕当中显示一行信息英文的双引号中间就是显示的文本内容

1.Java源文件以***“java”为扩展名。源文件的基本组成部分是类(class),如本例中HelloWorld类。
2.Java应用程序的执行入口是
main()方法***。它有固定的书写格式:
public static void main(String[] args) {…} 或
public static void main(String args[]) {……}

3.Java语言严格区分大小写。
4.Java方法由一条条语句构成,每个语句以“;”结束。
5.大括号都是成对出现的,缺一不可。
6.一个源文件中最多只能有一个public类。其它类的个数不限,如果源文件包含一个public类,则文件名必须按该类名命名

良好的编程风格

  • 🍍正确的注释和注释风格🍍

使用文档注释来注释整个类或整个方法;
如果注释方法中的某一个步骤,使用单行或多行注释;

  • 🍍正确的缩进和空白🍍

使用tab键,实现缩进;
运算符两边习惯性各加一个空格,比如:2 + 4 * 5

  • 🍍块的风格🍍

行尾风格
次行风格

在这里插入图片描述
在这里插入图片描述

集成开发环境介绍

  • Java集成开发环境(IDE)

JBuilder
NetBeans
Eclipse
MyEclipse
IntelliJ IDEA

Eclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是提供了一个基础的底层支持,而后针对于不同的编程语言都会提供有相应的插件支持。
Eclipse属于绿色免安装软件,解压缩后就可以直接使用(运行 Eclipse.exe程序)。

下载网址:http://www.eclipse.org/downloads/packages/,根据自己的操作系统选择相应的Eclipse版本,本书使用的是windows 64位版

在这里插入图片描述

在这里插入图片描述
Eclipse窗口介绍

在这里插入图片描述


1.4常见错误总结

🍎
在这里插入图片描述

🍓错误原因:

  • 源文件名不存在或者写错;
  • 当前路径错误;
  • 后缀名隐藏问题;

🍎🍎
在这里插入图片描述

🍓错误原因:

  • 类文件名写错;
  • 类文件不在当前路径下(如上不在D盘根目录);

🍎🍎🍎
在这里插入图片描述

***错误原因:***声明为public的类应与文件名一致,否则编译失败;
在这里插入图片描述
编译失败,注意错误出现的行数,再到源代码中指定位置改错


🍓🍓总结🍓🍓

  • JDK,JRE,JVM的关系;
  • 环境变量path配置及其作用; Java程序的编写、编译、运行步骤:
    在这里插入图片描述
  • Java程序编写的规则;
  • 在配置环境、编译、运行各个步骤中常见的错误以及解决方法。

相关文章:

【Java入门合集】第一章Java概述

【Java入门合集】第一章Java概述 博主:命运之光 专栏:JAVA入门 学习目标 1.理解JVM、JRE、JDK的概念; 2.掌握Java开发环境的搭建,环境变量的配置; 3.掌握Java程序的编写、编译和运行; 4.学会编写第一个Java程序&#x…...

Android无线调试操作说明

1.首先通过手机机蓝牙将jackpal.androidterm-1.0.70.apk(终端模拟器)传的设备上安装 链接: https://pan.baidu.com/s/151SzEgsX0b_VTWowzfUrsA?pwdrn75 提取码: rn75 复制这段内容后打开百度网盘手机App,操作更方便哦 2.打开这个终端模拟器,输入以下命…...

什么是 Python ?聊一聊Python程序员找工作的六大技巧

最近我一直在思考换工作的事情。因此,这段时间我会看一些题目,看一些与面试相关的内容,以便更好地准备面试。我认为无论你处于什么阶段,面试中都会有技术面试环节。无论是初级职位还是高级职位,都需要通过技术面试来检…...

RabbitMQ 01 概述

什么是消息队列 进行大量的远程调用时,传统的Http方式容易造成阻塞,所以引入了消息队列的概念,即让消息排队,按照队列进行消费。 它能够将发送方发送的信息放入队列中,当新的消息入队时,会通知接收方进行处…...

面经|曹操出行供需策略运营

1.自我介绍 面试官表示看了简历之后,表示对专业能力比较放心。想了解下对于专业能力之外,关于其他方面的介绍。 2.策略运营,除了工具之外,还有哪些能力是需要具备的 回答:主要是从做项目的维度逻辑先去回答的。 分析思…...

【Python】selenium工具

目录 1. 安装 2. 测试 3. 无头浏览器 4. 元素定位 5. 页面滑动 6. 按键、填写登录表单 7. 页面切换 Selenium是Web的自动化测试工具,为网站自动化测试而开发,Selenium可以直接运行在浏览器上,它支持所有主流的浏览器,可以接…...

实验六~Web事件处理与过滤器

1. 创建一个名为exp06的Web项目,编写、部署、测试一个ServletContext事件监听器。 BookBean代码 package org.example.beans;import java.io.Serializable;/*** Created with IntelliJ IDEA.* Description:* User: Li_yizYa* Date: 2023—04—29* Time: 18:39*/ Su…...

刷题4.28

1、 开闭原则软件实体(模块,类,方法等)应该对扩展开放,对修改关闭,即在设计一个软件系统模块(类,方法)的时候,应该可以在不修改原有的模块(修改关…...

做了一年csgo搬砖项目,还清所有债务:会赚钱的人都在做这件事 !

前段時间,在网上看到一句话:有什么事情,比窮更可怕? 有人回答说:“又忙又窮。” 很扎心,却是绝大多数人的真实写照。 每天拼死拼活的996,你有算过你的時间值多少钱? 我们来算一笔…...

线性回归模型(7大模型)

线性回归模型(7大模型) 线性回归是人工智能领域中最常用的统计学方法之一。在许多不同的应用领域中,线性回归都是非常有用的,例如金融、医疗、社交网络、推荐系统等等。 在机器学习中,线性回归是最基本的模型之一&am…...

VP记录:Codeforces Round 868 (Div. 2) A~D

传送门:CF A题:A-characteristic 构造一个只有 1 , − 1 1,-1 1,−1的数组,满足乘积为 1 1 1的数对的个数为 k k k. 发现 n n n的范围很小,考虑直接暴力枚举数组中 1 1 1的个数,记为 i i i,那么对于1的所有数对来说,我们有 i ∗ ( i − 1 ) / 2 i*(i-1)/2 i∗(i−1)/2个,然后…...

【VQ-VAE-2论文精读】Generating Diverse High-Fidelity Images with VQ-VAE-2

【VQ-VAE-2论文精读】Generating Diverse High-Fidelity Images with VQ-VAE-2 0、前言Abstract1 Introduction2 Background2.1 Vector Quantized Variational AutoEncoder3 Method3.1 Stage 1: Learning Hierarchical Latent Codes3.2 Stage 2: Learning Priors over Latent C…...

并发编程基石:管程

大家好,我是易安! 如果有人问我学习并发并发编程,最核心的技术点是什么,我一定会告诉他,管程技术。Java语言在1.5之前,提供的唯一的并发原语就是管程,而且1.5之后提供的SDK并发包,也…...

电路中噪声来源

电路包括不同的部件和芯片,所有都有可能成为噪声的来源。例如,电阻会带来热噪声,这个噪声为宽频噪声,几乎涵盖所有频率范围;运算放大器其芯片内部会产生噪声;而 ADC产生的量化噪声相较于其他器件&#xff0…...

JAVASE的全面总结

(未完待续) 五、子类与继承 5.1 子类与父类 继承是一种由已有的类创建新类的机制。利用继承,我们可以先创建一个共有属性的一般类,根据该一般类再创建具有特殊属性的新类,新类继承一般类的状态和行为,并…...

关于repeater录制的流量子调用的identity中带有~S的情况

前段时间同事问我,我们录制的流量中,尤其是dubbo的子调用显示经常他的末尾会带上一个小尾巴这个是什么意思呢,其实之前我没有太在意这个事情,只是同事这么疑问了,确实激起了好奇心,所以就差了下 到底是什么…...

Java面试题队列

Java中的队列都有哪些,有什么区别 1. ArrayDeque, (数组双端队列) 2. PriorityQueue, (优先级队列) 3. ConcurrentLinkedQueue, (基于链表的并发队列) 4. DelayQueue, (延期…...

大型Saas系统的权限体系设计(二)

X0 上期回顾 上文《大型Saas系统的权限体系设计(一)》提到2B的Saas系统的多层次权限体系设计的难题,即平台、平台的客户、客户的客户,乃至客户的客户的客户如何授权,这个可以通过“权限-角色-岗位”三级结构来实现。 但这个只是功能权限&am…...

HTML(四) -- 多媒体设计

目录 1. 视频标签 2. 音频标签 3. 资源标签(定义媒介资源 ) 1. 视频标签 属性值描述autoplayautoplay如果出现该属性,则视频在就绪后马上播放。controlscontrols表示添加标准的视频控制界面,包括播放、暂停、快进、音量等…...

设置苹果电脑vsode在新窗口中打开文件

0、前言 最近切换到mac电脑工作,又得重新安装一些工具软件并设置。虽然这些设置并表示啥复杂的设置,但是久了不设置还是会忘记。于是记录之,也希望给能帮助到需要的人。 我们使用vscode阅读或者编辑文件时,有时候希望同时打开多…...

系统设计 --- MongoDB亿级数据查询优化策略

系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南 在数字化营销时代,邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天,我们将深入解析邮件打开率、网站可用性、页面参与时…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论

路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中(图1): mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...

uniapp 字符包含的相关方法

在uniapp中,如果你想检查一个字符串是否包含另一个子字符串,你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的,但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...

PHP 8.5 即将发布:管道操作符、强力调试

前不久,PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5!作为 PHP 语言的又一次重要迭代,PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是,借助强大的本地开发环境 ServBay&am…...

算法打卡第18天

从中序与后序遍历序列构造二叉树 (力扣106题) 给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。 示例 1: 输入:inorder [9,3,15,20,7…...