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

news2024/11/24 22:45:32

什么是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.java
	
	private void exTest() throws Exception{
		System.out.println("异常测试方法");
		
	}
}
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1563817.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

洛谷P1000超级玛丽游戏题解[Python, Rust, Go]

题目 打印超级玛丽字符图像 小技巧 直接复制题目的超级玛丽符号首行会有空格问题&#xff0c;一直AC不过&#xff0c;一行一行地复制就OK了&#x1f44c;。 Rust 题解 fn main() {println!(" ********************####....#.#..###.....##....###...…

什么是 Nginx?(一)

前段时间在网上看到一个有意思的话题&#xff1a;只知道 Nginx 牛逼&#xff0c;却不知道它怎么支持百万并发&#xff1f; 无论是运维、开发、测试&#xff0c;Nginx 技术栈的学习总是必不可少的&#xff0c;只是不同的岗位掌握的深度与广度不同而已。 Nginx 是开源、高性能、…

MATLAB科研绘图与学术图表绘制从入门到精通

&#x1f482; 个人网站:【 摸鱼游戏】【神级代码资源网站】【工具大全】&#x1f91f; 一站式轻松构建小程序、Web网站、移动应用&#xff1a;&#x1f449;注册地址&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交…

算法学习——LeetCode力扣图论篇1(797. 所有可能的路径、200. 岛屿数量、695. 岛屿的最大面积)

算法学习——LeetCode力扣图论篇1 797. 所有可能的路径 797. 所有可能的路径 - 力扣&#xff08;LeetCode&#xff09; 描述 给你一个有 n 个节点的 有向无环图&#xff08;DAG&#xff09;&#xff0c;请你找出所有从节点 0 到节点 n-1 的路径并输出&#xff08;不要求按特…

golang语言系列:Web框架+路由 之 Gin

云原生学习路线导航页&#xff08;持续更新中&#xff09; 本文是golang语言学习系列&#xff0c;本篇对Gin框架的基本使用方法进行学习 1.Gin框架是什么 Gin 是一个 Go (Golang) 编写的轻量级 http web 框架&#xff0c;运行速度非常快&#xff0c;如果你是性能和高效的追求者…

java项目基于Springboot和Vue的高校心理教育辅导系统的设计与实现

今天要和大家聊的是基于Springboot和Vue的高校心理教育辅导系统的设计与实现 &#xff01;&#xff01;&#xff01; 有需要的小伙伴可以通过文章末尾名片咨询我哦&#xff01;&#xff01;&#xff01; &#x1f495;&#x1f495;作者&#xff1a;李同学 &#x1f495;&…

C++完美转发(适合小白)

我们知道&#xff0c;C中有左值引用和右值引用&#xff0c;首先我们要知道什么是左值什么是右值。 左值&#xff1a;表达式结束后依然存在的持久对象。左值可以出现在赋值语句的左边或右边。例如&#xff0c;变量和函数返回的引用都是左值。左值通常有持久的地址&#xff0c;可…

Python深度学习034:cuda的环境如何配置

文章目录 1.安装nvidia cuda驱动CMD中看一下cuda版本:下载并安装cuda驱动2.创建虚拟环境并安装pytorch的torch_cuda3.测试附录1.安装nvidia cuda驱动 CMD中看一下cuda版本: 注意: 红框的cuda版本,是你的显卡能装的最高的cuda版本,所以可以选择低于它的版本。比如我的是11…

Go项目结构整洁实现|GitHub 3.5k

一、前言 hi&#xff0c;大家好&#xff0c;这里是白泽。今天给大家分享一个GitHub &#x1f31f; 3.5k 的 Go项目&#xff1a;go-backend-clean-arch https://github.com/amitshekhariitbhu/go-backend-clean-architecture 这个项目是一位老外写的&#xff0c;通过一个 HTT…

HTML基本元素

文章目录 如何制作标题如何制作文字如何做粗体字检查我们程序码给输出文字添加属性 HTML 一个HTML标签包含着&#xff1a; 起始标签&#xff1a;它包含了元素的名字&#xff0c;夹在一对 <、>&#xff08;尖括号&#xff09;之间。它指明元素从何处开始生效。结束标签&am…

《Git版本控制管理》笔记

第三章 git --version查看版本号git --help查看帮助文档裸双破折号分离参数 git diff -w master origin – tools/Makefile将当前目录或任何目录转化为Git版本库 git init 初始化之后项目目录中&#xff0c;有名为.git的文件git status 查看git状态git commit 提供日志消息和作…

整型之韵,数之舞:大小端与浮点数的内存之旅

✨✨欢迎&#x1f44d;&#x1f44d;点赞☕️☕️收藏✍✍评论 个人主页&#xff1a;秋邱’博客 所属栏目&#xff1a;人工智能 &#xff08;感谢您的光临&#xff0c;您的光临蓬荜生辉&#xff09; 1.0 整形提升 我们先来看看代码。 int main() {char a 3;char b 127;char …

Java基础核心Map

在Java中&#xff0c;Map是一种用于存储键值对&#xff08;key-value pairs&#xff09;的集合类型。它提供了一种将键映射到值的方式&#xff0c;其中每个键在Map中都是唯一的。Map接口是java.util包中的一部分。 常用实现类&#xff1a; HashMap: 基于哈希表实现的Map&#…

java中split(“.“)失效问题

来源&#xff1a;比较版本号_牛客题霸_牛客网 在写到这道算法题的时候&#xff0c;发现一个问题&#xff0c; String[] leftversion1.split("."); 返回结果为空&#xff0c;经过查阅得知&#xff0c;是split中的正则表达式里的问题&#xff0c;这个 . 代表的意思是…

KIMI官方精选提示词,好牛的感觉啊啊啊!

晚上好&#xff0c;我是云桃桃。一个希望帮助更多朋友快速入门 WEB 前端的程序媛。 云桃桃 1枚程序媛&#xff0c;大专生&#xff0c;2年时间从1800到月入过万&#xff0c;工作5年买房。 分享成长心得。 255篇原创内容-公众号 后台回复“前端工具”可获取开发工具&#xff0…

图论- 最小生成树

一、最小生成树-prim算法 1.1 最小生成树概念 一幅图可以有很多不同的生成树&#xff0c;比如下面这幅图&#xff0c;红色的边就组成了两棵不同的生成树&#xff1a; 对于加权图&#xff0c;每条边都有权重&#xff08;用最小生成树算法的现实场景中&#xff0c;图的边权重…

使用Vue实现CSS过渡和动画

01-初识动画和过渡 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>使用vue实现css过渡和动画&l…

Ethernet修改网卡名称

如何修改Ethernet网卡名称 kernel/common/net/core/dev.c ---------------------------------------------------------------------- 8849/** 8850 * register_netdev - register a network device 8851 * @dev: device to register 8852 * 8853 * Take a completed network d…

github本地仓库push到远程仓库

1.从远程仓库clone到本地 2.生成SSH秘钥&#xff0c;为push做准备 在Ubuntu命令行输入一下内容 [rootlocalhost ~]# ssh-keygen -t rsa < 建立密钥对&#xff0c;-t代表类型&#xff0c;有RSA和DSA两种 Generating public/private rsa key pair. Enter file in whi…

什么是数据库的下一站?

SU7 能突出重围&#xff1f; 3 月 28 日&#xff0c;小米发布 SU7。罗永浩在社交平台发文谈小米SU7&#xff0c;“各种补贴拿完了差不多20万吧&#xff0c;足以把这个价位段的大部分油车、杂牌电车、不够智能的电车都淘汰掉了。小米很可能继平价手机市场之后&#xff0c;在大众…