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

JAVA基础02-Java语言基础以及编译准备工作

什么是JAVA语言

    Java是一门面向对象的编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用的两个特征。

(可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式应用程序等)


JAVA语言的三大体系

 Java语言的三大体系分别是Java SE(Java Platform, Standard Edition),Java EE(Java Platform, Enterprise Edition)和Java ME(Java Platform, Micro Edition)。这三个体系分别对应不同的应用场景和需求,从基础的桌面应用到复杂的企业级系统,再到移动设备应用,Java提供了覆盖面广泛的解决方案。

Java SE
Java SE是Java的标准版,它包含了Java基本类库和语法,主要用于开发图形用户界面(GUI)、复杂逻辑和高性能的桌面应用程序。Java SE可以用于桌面、服务器、嵌入式环境和实时环境。它包含JVM(Java虚拟机)、JRE(Java运行时环境)、JDK(Java开发工具包)和Java语言本身。
 
Java EE

Java EE是基于Java SE的企业版,它提供了一系列服务和API,增加了编写企业级应用程序的类库。Java EE支持分布式、基于组件、安全、可靠、可扩展和易于管理的企业级应用程序的开发和部署。它提供Web服务、组件模型、管理和通信API,适用于大型企业和关键业务应用。
 
Java ME
Java ME是Java的微型版,主要用于消费性电子产品或嵌入式系统中的应用程序。它支持有限连接、内存和


JAVA语言的特点

1.简单性

摒弃了C++中多继承、指针的概念,并且有了一套垃圾回收的机制

2.面向对象

举例:警察抓小偷

面向过程:抓小偷(警察,小偷)

面向对象:警察.抓小偷(小偷)

3.分布式

应用网络编程,可以将单体程序拆分为多个微服务,从而将多个服务部署在不同的服务器中

4.健壮性

强类型语言、异常处理机制、垃圾回收机制

5.安全性

提供一套安全处理机制

6.平台独立与可移植性(编译性语言)

一次编译,多次运行

7.多线程

8.动态性


JAVA语言的历史(现在JDK17)

Java语言的发展经历了多个重要阶段:

  • 1995年5月23日,Java语言诞生,第一个JDK(Java Development Kit)1.0发布。

  • 1996年,JDK 1.1发布,引入了许多基础技术,如JDBC、JavaBeans、RMI等

  • 1997年,JDK 1.2发布,带来了Swing图形界面库

  • 1998年,JDK 1.3发布,增加了JNI(Java Native Interface)等特性

  • 1999年,JDK 1.4发布,引入了Java正则表达式、异常链、IPv6支持等新特性

  • 2002年,JDK 1.5发布,也称为Java 5,引入了泛型、注解、自动装箱/拆箱、foreach循环等新特性。

  • 2004年,JDK 1.6发布,也称为Java 6,带来了性能改进和更好的脚本语言支持。

  • 2006年,JDK 1.7发布,也称为Java 7,引入了switch语句中的字符串、try-with-resources、多个异常捕获等新特性。

  • 2011年,JDK 1.8发布,也称为Java 8,引入了Lambda表达式、Stream API、日期和时间API等新特性。

  • 2014年,JDK 1.9发布,也称为Java 9,引入了模块化系统Project Jigsaw。

  • 2017年,JDK 1.10发布,也称为Java 10。

  • 2018年,JDK 1.11发布,也称为Java 11。

  • 2019年,JDK 1.12发布,也称为Java 12。

  • 2020年,JDK 1.13发布,也称为Java 13。

  • 2021年,JDK 1.14发布,也称为Java 14。

  • 2021年,JDK 1.15发布,也称为Java 15。

  • 2021年,JDK 1.16发布,也称为Java 16。

  • 2021年,JDK 1.17发布,也称为Java 17。


Java的安装与环境配置

--从甲骨文官网下载1.8版本的JDK

--执行安装程序(全部默认下一步即可)

--默认安装在C:\Program Files\Java(尽量不要改路径,如果该路径注意英文命名)

其中 JDK (Java程序的开发工具)  --JRE (Java程序的运行环境)

--配置Java的环境变量:

--打开高级系统设置

--打开环境变量

1.win10操作系统

--在系统变量中配置JAVA_HOME(新建)

--在path中指定jdk的bin路径(新建)

ps:%..%是解析其中间的内容,bin是其中的路径 即设定默认路径

2.win7操作系统


JDK JRE和JVE关系

1)JDK,JRE和JVM关系

· JDK(Java Development Kit),Java开发工具包,主要用于开发,在JDK7前,JDK包括JRE

· JRE(Java Runtime Environment),Java程序运行的核心环境,包括JVM和一些核心库

· JVM(Java Virtual Machine),VM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的,是JRE核心模块。

2)JVM

JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。

Java虚拟机的主要任务是装载class文件,并执行其中的字节码,不同的Java虚拟机中,执行引擎可能有不同的实现。


JAVA的第一个HelloWorld

--新建一个文件夹,用于存放Java源文件

--新建一个Java源文件,后缀是.java(电脑自带的文本文档即可,或notepad++)

//使用class来描述一个类,类名要和文件名一致
class hello{//提供Java程序的入口 main方法public static void main(String[] args){//输出语句System.out.println("hello world!!!");}
}

JAVA程序的编译与运行

1、打开dos命令行(输入cmd即可打开)

2、切换当前目录为Java源文件的目录

注意如果Java源文件在其他盘符则要先切换到其他盘符,比如:java文件在d盘,则使用d: 切换到d盘

再使用cd切换当前目录 :cd C:\Users\jerry\Desktop\test

3、编译Java文件,使用javac进行编译(会生成.class文件) : javac Hello.java (javac 文件名)

4、运行Java程序:java Hello (java 类名)

执行流程:Hello.java ---> Hello.class--->JVM

CLASSPATH的作用以及配置(目的是告诉虚拟机在哪找class文件)

注意:Java源文件时,要么在当前源文件的路径下编译,要么在编译时提供Java源文件的绝对路径

ClassPath指的是java文件在编译或者运行的时候类加载的路径

1、在系统环境变量中添加CLASSPATH,指定类加载的路径(如果类路径固定,可以使用这种方式)

2、动态使用CLASSPATH的方式 -cp (比较灵活的 ,可以使用这种方式)

java -cp .;C:\Users\jerry\Desktop\code Hello

Java程序的组织形式

1、以.java作为程序的后缀

2、当类是被public修饰时,类名和文件名要一致(大小写一致)

3、如果该Java源文件中没有被public修饰的类时,则类名可以和文件名不一致

4、一个Java源文件中可以有多个类,在编译的时候会生成多个class文件,但是被public修饰的类只能有一个

//public 是公共的意思【修饰符】 class用于修饰类  hello表示为当前类的类名
//1、类一定要public修饰吗?不一定
//2、但是如果类被public修饰,则类名必须要和文件名一致[大小写都要一致]
//3、运行java程序需要提供main方法,能在一个java源文件中有多个类
//4、被public修饰的类在同一个java源文件中只能有一个,所有类也可以没有public修饰
//如果类不是被public修饰,则类名不需要和文件名一致class hello{//提供Java程序的入口 main方法public static void main(String[] args){//输出语句System.out.println("hello world!!!");}
}class demo{
}
 

初学者容易犯的错误

1、CLASSPATH指的是类的加载路径,而不是Java源文件的路径【建议不加

2、初学者容易忽略后缀名

3、注意在Java中是大小写敏感

4、main方法的格式(固定的),提供main方法


分隔符,标识符,关键字的使用

1.分隔符(语句的结束使用英文的分号)

():包含表达式、方法参数列表  ;   {}:包含类体、方法体、代码块

2.标识符:用于定义变量名、类名、方法名、常量名

1、标识符组成:英文字母、数字、(美元符号)$、(下划线)_

2、不能使用数字作为开头

3、不能使用其他的特殊字符 # ……

4、不能包含空格

5、不能和关键字一样

行业://驼峰式命名:

类名 HelloWorld【首字符大写、每个单词首字母大写

方法名 helloWorld【首字符小写、每个单词首字母大写】

变量名 helloWorld【和方法名一致

常量 HELLO_WORLD【全大写,每个单词使用_分隔】

3.关键字:

有特殊功能的描述符(50个关键字,其中有2两个保留字)【全小写】

注释的使用

注释的作用:提高代码的可读性,被注释的代码不会被编译器所编译

--单行注释:  //

--多行注释:  /* */

--文档注释:生成API帮助文档:  /** */

--生成api文档的命令

格式javadoc -d api  生成的存放目录 Java源文件

注意:如果要生成作者以及版本信息的话,则需要指定author和version

javadoc -d api生成的存放目录 -author -version Java源文件

注意:如果属性或者方法不是public修饰的,则需要在命令中加上-private参数

/**@author cyj@version 1.0.0
*/public class demo{/**这是demo类的test 方法@deprecated @param a 是一个入参的整型值@param b 是一个入参的整型值	@return 返回a+b的值@see <a href="http://www.baidu.com"> baidu</a>*/int test(int a,int b){System.out.println("democcc");return a+b;}/**这个是demo类的test方法@throws Exception 当前方法声明了抛出这个Exception 异常@exception Exception 当前方法抛出这个Exception 异常*///只有public 和protect 才能纳入文档//private的话 多加一个 -private javadoc -d D:\yueqian\JAVA\1.11\doc -author -version -private demo.javaprivate void exTest() throws Exception{System.out.println("异常测试方法");}
}
 

相关文章:

JAVA基础02-Java语言基础以及编译准备工作

什么是JAVA语言 Java是一门面向对象的编程语言&#xff0c;不仅吸收了C语言的各种优点&#xff0c;还摒弃了C里难以理解的多继承、指针等概念&#xff0c;因此Java语言具有功能强大和简单易用的两个特征。 &#xff08;可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式…...

Photoshop 2024 Mac/win---图像处理的新纪元,解锁无限创意

Photoshop 2024是一款功能强大的图像处理软件&#xff0c;以其卓越的性能和广泛的应用领域&#xff0c;赢得了设计师、摄影师、图形艺术家等各类创意工作者的青睐。它提供了丰富的绘画和编辑工具&#xff0c;让用户能够轻松进行图片编辑、合成、校色、抠图等操作&#xff0c;实…...

【MySQL系列】使用 ALTER TABLE 语句修改表结构的方法

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

ElementUI 表格横向滚动条时滚动到指定位置

ElementUI 表格横向滚动条时滚动到指定位置 getColumnOffset(columnProp) {this.$nextTick(() > {const table this.$refs.tableRef.$refs.multipleTable;const columns table.columns;const column columns.find((col) > col.property columnProp);if (column) {// …...

【论文阅读】DETR 论文逐段精读

【论文阅读】DETR 论文逐段精读 文章目录 【论文阅读】DETR 论文逐段精读&#x1f4d6;DETR 论文精读【论文精读】&#x1f310;前言&#x1f4cb;摘要&#x1f4da;引言&#x1f9ec;相关工作&#x1f50d;方法&#x1f4a1;目标函数&#x1f4dc;模型结构⚙️代码 &#x1f4…...

负载均衡:实现高效稳定的网络服务

随着互联网技术的快速发展&#xff0c;网络应用服务的规模和复杂性日益增加。为了满足日益增长的用户需求&#xff0c;确保服务的高可用性和稳定性&#xff0c;负载均衡技术应运而生。本文将详细介绍负载均衡的概念、原理、分类以及应用场景&#xff0c;帮助读者深入了解这一关…...

2024最新软件测试【测试理论+ 抓包与网络协议】面试题(内附答案)

一、测试理论 3.1 你们原来项目的测试流程是怎么样的? 我们的测试流程主要有三个阶段&#xff1a;需求了解分析、测试准备、测试执行。 1、需求了解分析阶段 我们的 SE 会把需求文档给我们自己先去了解一到两天这样&#xff0c;之后我们会有一个需求澄清会议&#xff0c; …...

极简7照训练法,奇趣相机引领儿童AI摄影潮流

近日&#xff0c;奇趣未来推出一款专注于儿童AI摄影市场的微信小程序——奇趣相机&#xff0c;搭载了专为中国儿童精心研发的AIGC大模型&#xff0c;精准捕捉并贴合亚洲儿童人脸特征&#xff0c;让每一个孩子的笑容都能被完美定格。它不仅涵盖了从3岁至12岁各个年龄段的儿童摄影…...

Flink应用

1.免密登录 2.flink StandAlone模式 3.Flink Yarn 模式 (on per 模式,on session 模式) Flink概述 按照Apache官方的介绍&#xff0c;Flink是一个对有界和无界数据流进行状态计算的分布式处理引擎和框架。通俗地讲&#xff0c;Flink就是一个流计算框架&#xff0c;主要用来处…...

C# 委托与事件 终章

C# 委托与事件 浅尝 C# 委托与事件 深入 委托 委托有什么用&#xff1f; 将函数作为函数的参数传递声明事件并用来注册 强类型委托 Action<T1> Func<T1, TResult>事件 希望一个类的某些成员在发生变化时能被外界观测到 CollctionChangedTextChanged 标准.Ne…...

MySQL-linux安装-万能RPM法

一、MySQL的Linux版安装 1、 CentOS7下检查MySQL依赖 1. 检查/tmp临时目录权限&#xff08;必不可少&#xff09; 由于mysql安装过程中&#xff0c;会通过mysql用户在/tmp目录下新建tmp_db文件&#xff0c;所以请给/tmp较大的权限。执行 &#xff1a; chmod -R 777 /tmp2. …...

elment UI el-date-picker 月份组件选定后提交后台页面显示正常,提交后台字段变成时区格式

需求&#xff1a;要实现一个日期的月份选择<el-date-picker :typeformData.dateType :value-formatdateFormat v-modelformData.leaveFactoryDateplaceholder选择月份></el-date-picker>错误示例&#xff1a;将日期显示类型(type)dateType或将日期绑定值的格式(val…...

基于 NGINX 的 ngx_http_geoip2 模块 来禁止国外 IP 访问网站

基于 NGINX 的 ngx_http_geoip2 模块 来禁止国外 IP 访问网站 一、安装 geoip2 扩展依赖 [rootfxkj ~]# yum install libmaxminddb-devel -y二、下载 ngx_http_geoip2_module 模块 [rootfxkj tmp]# git clone https://github.com/leev/ngx_http_geoip2_module.git三、解压模…...

C++经典面试题目(二十)

1、请解释运算符重载的限制。 运算符重载必须至少有一个操作数是用户自定义类型。不能改变运算符的优先级和结合性。不能创建新的运算符。不能重载以下运算符&#xff1a;::, .*, .*, ?:, sizeof, typeid。 2、什么是友元函数&#xff1f;它有什么作用&#xff1f; 友元函数…...

vue3+uniapp 动态渲染组件,兼容h5、app端

1.setup写在js中&#xff0c;使用ref绑定数据&#xff0c;事件和数据都需要return出去。调用数据{数据名}.value。 如果你想要通过接口动态获取组件路径&#xff0c;并据此动态渲染组件&#xff0c;你可以使用异步组件和defineAsyncComponent函数。在Vue 3中&#xff0c;你可以…...

CSS层叠样式表学习(2)

&#xff08;大家好&#xff0c;今天我们将继续来学习CSS&#xff08;2&#xff09;的相关知识&#xff0c;大家可以在评论区进行互动答疑哦~加油&#xff01;&#x1f495;&#xff09; 目录 二、CSS基础选择器 2.1 CSS选择器的作用 2.2 选择器分类 2.3 标签选择器 2.…...

【MySQL】DML的表操作详解:添加数据&修改数据&删除数据(可cv例题语句)

前言 大家好吖&#xff0c;欢迎来到 YY 滴MySQL系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C Linux的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; YY的《C》专栏YY的《C11》专栏YY的…...

Docker命令及部署Java项目

文章目录 简介Docker镜像镜像列表查找镜像拉取镜像删除镜像镜像标签 Docker容器容器启动容器查看容器停止和重启后台模式和进入强制停止容器清理停止的容器容器错误日志容器别名及操作 Docker部署Java项目 简介 Docker是一种容器化技术&#xff0c;可以帮助开发者轻松打包应用…...

深度学习入门:从理论到实践的全面指南

深度学习入门&#xff1a;从理论到实践的全面指南 引言第一部分&#xff1a;深度学习基础第二部分&#xff1a;数学基础第三部分&#xff1a;编程和工具第四部分&#xff1a;构建你的第一个模型第五部分&#xff1a;深入学习结语 引言 大家好&#xff0c;这里是程序猿代码之路。…...

后端前行Vue之路(二):模版语法之插值与指令

1.概述 Vue.js的模板语法是一种将Vue实例的数据绑定到HTML文档的方法。Vue的模板语法是一种基于HTML的扩展&#xff0c;允许开发者将Vue实例中的数据绑定到HTML元素&#xff0c;以及在HTML中使用一些简单的逻辑和指令。Vue.js 基于 HTML 的模板语法允许开发者声明式地将 DOM 绑…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

TDengine 快速体验(Docker 镜像方式)

简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能&#xff0c;本节首先介绍如何通过 Docker 快速体验 TDengine&#xff0c;然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker&#xff0c;请使用 安装包的方式快…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会&#xff0c;其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具&#xff0c;对过去十年 WWDC 主题演讲内容进行了系统化分析&#xff0c;形成了这份…...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06&#xff08;十亿美元&#xff09;。漏洞扫描服务市场行业预计将从 2024 年的 3.48&#xff08;十亿美元&#xff09;增长到 2032 年的 9.54&#xff08;十亿美元&#xff09;。预测期内漏洞扫描服务市场 CAGR&#xff08;增长率&…...

Go 语言接口详解

Go 语言接口详解 核心概念 接口定义 在 Go 语言中&#xff0c;接口是一种抽象类型&#xff0c;它定义了一组方法的集合&#xff1a; // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的&#xff1a; // 矩形结构体…...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat&#xff08;I/O Statistics&#xff09;是Linux系统下用于监视系统输入输出设备和CPU使…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集&#xff0c;包含8种湿地亚类&#xff0c;该数据以0.5X0.5的瓦片存储&#xff0c;我们整理了所有属于中国的瓦片名称与其对应省份&#xff0c;方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开&#xff0c;首…...

push [特殊字符] present

push &#x1f19a; present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中&#xff0c;push 和 present 是两种不同的视图控制器切换方式&#xff0c;它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...

免费数学几何作图web平台

光锐软件免费数学工具&#xff0c;maths,数学制图&#xff0c;数学作图&#xff0c;几何作图&#xff0c;几何&#xff0c;AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...