当前位置: 首页 > 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 绑…...

Kotlin 中的类和构造方法

Kotlin 中的类与接口和 Java 中的类与接口还是有区别的。例如&#xff0c;Koltin 中的接口可以包含属性声明&#xff0c;与 Java 不同的是。Kotlin 的声明默认是 final 和 public 的。此外&#xff0c;嵌套的类默认并不是内部类&#xff1a;它们并没有包含对其它外部类的隐式引…...

【2024最新】vue3的基本使用(超详细)

一、Vue 3 概述 1. 为什么要学习Vue 3 Vue 3是Vue.js的最新主要版本&#xff0c;它带来了许多改进和新特性&#xff0c;包括但不限于&#xff1a; 性能提升&#xff1a;Vue 3提供了更快的渲染速度和更低的内存使用率。Composition API&#xff1a;引入了一个新的API&#xf…...

【xinference】(8):在autodl上,使用xinference部署qwen1.5大模型,速度特别快,同时还支持函数调用,测试成功!

1&#xff0c;关于xinference Xorbits Inference (Xinference) 是一个开源平台&#xff0c;用于简化各种 AI 模型的运行和集成。借助 Xinference&#xff0c;您可以使用任何开源 LLM、嵌入模型和多模态模型在云端或本地环境中运行推理&#xff0c;并创建强大的 AI 应用。 Xor…...

YARN集群 和 MapReduce 原理及应用

YARN集群模式 本文内容需要基于 Hadoop 集群搭建完成的基础上来实现 如果没有搭建&#xff0c;请先按上一篇: <Linux 系统 CentOS7 上搭建 Hadoop HDFS集群详细步骤> 搭建&#xff1a;https://mp.weixin.qq.com/s/zPYsUexHKsdFax2XeyRdnA 配置hadoop安装目录下的 etc…...

C++算法——滑动窗口

一、长度最小的子数组 1.链接 209. 长度最小的子数组 - 力扣&#xff08;LeetCode&#xff09; 2.描述 3.思路 本题从暴力求解的方式去切入&#xff0c;逐步优化成“滑动窗口”&#xff0c;首先&#xff0c;暴力枚举出各种组合的话&#xff0c;我们先让一个指针指向第一个&…...

Rust---有关介绍

目录 Rust---有关介绍变量的操作Rust 数值库&#xff1a;num某些基础数据类型序列(Range)字符类型单元类型 发散函数表达式&#xff08;&#xff01; 语句&#xff09; Rust—有关介绍 得益于各种零开销抽象、深入到底层的优化潜力、优质的标准库和第三方库实现&#xff0c;Ru…...

vue项目双击from表单限制重复提交 添加全局注册自定义函数

第一步: 找到utils文件夹添加directive.js文件 import Vue from vue //全局防抖函数 // 在vue上挂载一个指量 preventReClick const preventReClick Vue.directive(preventReClick, {inserted: function (el, binding) {console.log(el.disabled)el.addEventListener(click,…...

WebPack的使用及属性配、打包资源

WebPack(静态模块打包工具)(webpack默认只识别js和json内容) WebPack的作用 把静态模块内容压缩、整合、转译等&#xff08;前端工程化&#xff09; 1️⃣把less/sass转成css代码 2️⃣把ES6降级成ES5 3️⃣支持多种模块文件类型&#xff0c;多种模块标准语法 export、export…...

机器学习实战17-高斯朴素贝叶斯(GaussianNB)模型的实际应用,结合生活中的生动例子帮助大家理解

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下机器学习实战17-高斯朴素贝叶斯(GaussianNB)模型的实际应用&#xff0c;结合生活中的生动例子帮助大家理解。GaussianNB&#xff0c;即高斯朴素贝叶斯模型&#xff0c;是一种基于概率论的分类算法&#xff0c;广泛应…...

数据处理库Pandas数据结构DataFrame

Dataframe是一种二维数据结构&#xff0c;数据以表格形式&#xff08;与Excel类似&#xff09;存储&#xff0c;有对应的行和列&#xff0c;如图3-3所示。它的每列可以是不同的值类型&#xff08;不像 ndarray 只能有一个 dtype&#xff09;。基本上可以把 DataFrame 看成是共享…...

嘉兴市建设教育网站/企业官网怎么做

1. 仅更新单个库 只想更新某个特定的库&#xff0c;不想更新它的所有依赖&#xff0c;很简单&#xff1a; composer update foo/bar 此外&#xff0c;这个技巧还可以用来解决“警告信息问题”。你一定见过这样的警告信息&#xff1a; Warning: The lock file is not up to date…...

芜湖酒店网站建设/枸橼酸西地那非片的作用及功效

1. 先给手机刷root权限&#xff0c;执行命令&#xff1a;adb root adb remountok后&#xff1a;把tcpdump放到c盘根目录下&#xff1a;C:\2. 执行命令&#xff1a;adb push c:/tcpdump /data/local/tcpdump&#xff08;这个命令是把tcpdump拷到手机中去 &#xff09;3. adb sh…...

怎么做网站开发/常州网络推广seo

通过使用数据库服务器端的sqlnet.ora文件可以实现禁止指定IP主机访问数据库的功能&#xff0c;这对于提升数据库的安全性有很大的帮助&#xff0c;与此同时&#xff0c;这个技术为我们管理和约束数据库访问控制提供了有效的手段。下面是实现这个目的的具体步骤仅供参考&#xf…...

自己做网站都要什么软件/优化模型数学建模

本文转自&#xff1a;http://www.cnblogs.com/shuang121/archive/2012/07/09/2582654.html 1.将Image图像文件存入到数据库中我们知道数据库里的Image类型的数据是"二进制数据",因此必须将图像文件转换成字节数组才能存入数据库中.复制代码//将本地图片转换成二进制保…...

做网站论坛 前置许可/长沙疫情最新数据消息

场景一&#xff1a;类似于微博&#xff0c;实现关注和被关注功能。 思路&#xff1a; 对每个用户使用两个集合类型键&#xff0c;用来存储关注别人的用户和被该用户关注的用户。当用户A关注用户B的时候&#xff0c;执行两步操作&#xff1a; sadd user:A B sadd user:B A 问题1…...

免费建站网站一级大录像不卡/百度一下百度主页官网

背景當我再搭建WSUS的時候&#xff0c;搭建Vcenter的時候&#xff0c;等等&#xff0c;如果提示你80端口被佔用&#xff0c;或者報端口佔用的error的時候。如何去查找哪個程序佔用了這個端口呢&#xff1f;命令&#xff1a;netstat -ano : 查看所有連接的PID 及端口號 1、netst…...