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是一门面向对象的编程语言,不仅吸收了C语言的各种优点,还摒弃了C里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用的两个特征。 (可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式…...
Photoshop 2024 Mac/win---图像处理的新纪元,解锁无限创意
Photoshop 2024是一款功能强大的图像处理软件,以其卓越的性能和广泛的应用领域,赢得了设计师、摄影师、图形艺术家等各类创意工作者的青睐。它提供了丰富的绘画和编辑工具,让用户能够轻松进行图片编辑、合成、校色、抠图等操作,实…...
【MySQL系列】使用 ALTER TABLE 语句修改表结构的方法
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐: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 论文逐段精读📖DETR 论文精读【论文精读】🌐前言📋摘要📚引言🧬相关工作🔍方法💡目标函数📜模型结构⚙️代码 Ǵ…...
负载均衡:实现高效稳定的网络服务
随着互联网技术的快速发展,网络应用服务的规模和复杂性日益增加。为了满足日益增长的用户需求,确保服务的高可用性和稳定性,负载均衡技术应运而生。本文将详细介绍负载均衡的概念、原理、分类以及应用场景,帮助读者深入了解这一关…...
2024最新软件测试【测试理论+ 抓包与网络协议】面试题(内附答案)
一、测试理论 3.1 你们原来项目的测试流程是怎么样的? 我们的测试流程主要有三个阶段:需求了解分析、测试准备、测试执行。 1、需求了解分析阶段 我们的 SE 会把需求文档给我们自己先去了解一到两天这样,之后我们会有一个需求澄清会议, …...
极简7照训练法,奇趣相机引领儿童AI摄影潮流
近日,奇趣未来推出一款专注于儿童AI摄影市场的微信小程序——奇趣相机,搭载了专为中国儿童精心研发的AIGC大模型,精准捕捉并贴合亚洲儿童人脸特征,让每一个孩子的笑容都能被完美定格。它不仅涵盖了从3岁至12岁各个年龄段的儿童摄影…...
Flink应用
1.免密登录 2.flink StandAlone模式 3.Flink Yarn 模式 (on per 模式,on session 模式) Flink概述 按照Apache官方的介绍,Flink是一个对有界和无界数据流进行状态计算的分布式处理引擎和框架。通俗地讲,Flink就是一个流计算框架,主要用来处…...
C# 委托与事件 终章
C# 委托与事件 浅尝 C# 委托与事件 深入 委托 委托有什么用? 将函数作为函数的参数传递声明事件并用来注册 强类型委托 Action<T1> Func<T1, TResult>事件 希望一个类的某些成员在发生变化时能被外界观测到 CollctionChangedTextChanged 标准.Ne…...
MySQL-linux安装-万能RPM法
一、MySQL的Linux版安装 1、 CentOS7下检查MySQL依赖 1. 检查/tmp临时目录权限(必不可少) 由于mysql安装过程中,会通过mysql用户在/tmp目录下新建tmp_db文件,所以请给/tmp较大的权限。执行 : chmod -R 777 /tmp2. …...
elment UI el-date-picker 月份组件选定后提交后台页面显示正常,提交后台字段变成时区格式
需求:要实现一个日期的月份选择<el-date-picker :typeformData.dateType :value-formatdateFormat v-modelformData.leaveFactoryDateplaceholder选择月份></el-date-picker>错误示例:将日期显示类型(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、请解释运算符重载的限制。 运算符重载必须至少有一个操作数是用户自定义类型。不能改变运算符的优先级和结合性。不能创建新的运算符。不能重载以下运算符:::, .*, .*, ?:, sizeof, typeid。 2、什么是友元函数?它有什么作用? 友元函数…...
vue3+uniapp 动态渲染组件,兼容h5、app端
1.setup写在js中,使用ref绑定数据,事件和数据都需要return出去。调用数据{数据名}.value。 如果你想要通过接口动态获取组件路径,并据此动态渲染组件,你可以使用异步组件和defineAsyncComponent函数。在Vue 3中,你可以…...
CSS层叠样式表学习(2)
(大家好,今天我们将继续来学习CSS(2)的相关知识,大家可以在评论区进行互动答疑哦~加油!💕) 目录 二、CSS基础选择器 2.1 CSS选择器的作用 2.2 选择器分类 2.3 标签选择器 2.…...
【MySQL】DML的表操作详解:添加数据&修改数据&删除数据(可cv例题语句)
前言 大家好吖,欢迎来到 YY 滴MySQL系列 ,热烈欢迎! 本章主要内容面向接触过C Linux的老铁 主要内容含: 欢迎订阅 YY滴C专栏!更多干货持续更新!以下是传送门! YY的《C》专栏YY的《C11》专栏YY的…...
Docker命令及部署Java项目
文章目录 简介Docker镜像镜像列表查找镜像拉取镜像删除镜像镜像标签 Docker容器容器启动容器查看容器停止和重启后台模式和进入强制停止容器清理停止的容器容器错误日志容器别名及操作 Docker部署Java项目 简介 Docker是一种容器化技术,可以帮助开发者轻松打包应用…...
深度学习入门:从理论到实践的全面指南
深度学习入门:从理论到实践的全面指南 引言第一部分:深度学习基础第二部分:数学基础第三部分:编程和工具第四部分:构建你的第一个模型第五部分:深入学习结语 引言 大家好,这里是程序猿代码之路。…...
后端前行Vue之路(二):模版语法之插值与指令
1.概述 Vue.js的模板语法是一种将Vue实例的数据绑定到HTML文档的方法。Vue的模板语法是一种基于HTML的扩展,允许开发者将Vue实例中的数据绑定到HTML元素,以及在HTML中使用一些简单的逻辑和指令。Vue.js 基于 HTML 的模板语法允许开发者声明式地将 DOM 绑…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...
论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...
今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存
文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...
现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?
现有的 Redis 分布式锁库(如 Redisson)相比于开发者自己基于 Redis 命令(如 SETNX, EXPIRE, DEL)手动实现分布式锁,提供了巨大的便利性和健壮性。主要体现在以下几个方面: 原子性保证 (Atomicity)ÿ…...
C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)
名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...
Webpack性能优化:构建速度与体积优化策略
一、构建速度优化 1、升级Webpack和Node.js 优化效果:Webpack 4比Webpack 3构建时间降低60%-98%。原因: V8引擎优化(for of替代forEach、Map/Set替代Object)。默认使用更快的md4哈希算法。AST直接从Loa…...
