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

Java笔记 2 java概述和基础知识

  • 第2章 Java概述与基础知识
    • Java 历史
    • Java技术体系平台
    • Java 重要特点
      • Java 虚拟机[JVM]
    • JDK,JRE
      • JDK 基本介绍
      • JRE 基本介绍
      • JDK、JRE 和JVM 的包含关系
    • Java 快速入门
    • 注意细节
    • Java 转义字符
      • Java 常用的转义字符
    • 注释(comment)
      • Java 中的注释类型
      • 关于文档注释
        • javadoc 常见标签
    • Java 代码规范
    • DOS 命令
      • DOS 介绍
      • 常用的dos 命令
    • 环境变量path配置及其作用

第2章 Java概述与基础知识

Java 历史

  • 1990 sun公司启动绿色计划
  • 1992创建oak(橡树)语言->java
  • 1994 gosling参加硅谷大会演示java功能震惊世界。1995 sun 正式发布java第1个版本。
  • 2009年,甲骨文公司宣布收购Sun 。
  • 2011,发布java7

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 重要特点

  1. Java 语言是面向对象的(oop)
  1. Java 语言是健壮的。Java 的强类型机制、异常处理、垃圾的自动收集等是Java 程序健壮性的重要保证
  1. Java 语言是跨平台性的。[编译好的.class 文件可以在多个系统下运行,这种特性称为跨平台]
  1. Java 语言是解释型的解释性语言:javascript,PHP, java 编译性语言: c / c++
    区别是:解释性语言,编译后的代码,不能直接被机器执行,需要解释器来执行, 编译性语言, 编译后的代码, 可以直接被机器执行。

Java 虚拟机[JVM]

  1. JVM 是一个虚拟的计算机,具有指令集并使用不同的存储区域。负责执行指令,管理数据、内存、寄存器,包含在JDK 中。
  1. 对于不同的平台,有不同的虚拟机。
  1. Java 虚拟机机制屏蔽了底层运行平台的差别,实现了“一次编译,到处运行”。

JDK,JRE

JDK 基本介绍

  1. JDK 的全称(Java Development Kit Java 开发工具包)
    JDK = JRE + java 的开发工具[java, javac,javadoc,javap 等]
  1. JDK 是提供给Java 开发人员使用的,其中包含了java 的开发工具,也包括了JRE。

JRE 基本介绍

  1. JRE(Java Runtime Environment Java 运行环境)
    JRE = JVM + Java 的核心类库[类]
  1. 包括Java 虚拟机(JVM Java Virtual Machine)和Java 程序所需的核心类库等,如果想要运行一个开发好的Java 程序,计算机中只需要安装JRE 即可。

JDK、JRE 和JVM 的包含关系

  1. JDK = JRE + 开发工具集(例如Javac,java 编译工具等)
  1. JRE = JVM + Java SE 标准类库(java 核心类库)
  1. 如果只想运行开发好的.class 文件只需要JRE

Java 快速入门

开发步骤

  1. 将Java 代码编写到扩展名为Hello.java 的文件中。
  1. 通过javac 命令对该java 文件进行编译,生成.class 文件。
  1. 通过java 命令对生成的class 文件进行运行。

注意细节

Java源文件以.java 为扩展名。源文件的基本组成部分是类(class),如本类中的Hello类。

Java应用程序的执行入口是main(方法。它有固定的书写格式:
public static void main(String[] args)

Java语言严格区分大小写。

一个源文件中最多只能有一个public类。其它类的个数不限。每个类对应一个class。

如果源文件包含一个public类,则文件名必须按该类名命名!

一个源文件中最多只能有一个public类。其它类的个数不限,也可以将main方法写在非public类中,然后指定运行非public类,这样入口方法就是非public 的main方法。

//这是java的快速入门, 演示java的开发步骤
//对代码的相关说明
//1. public class Hello 表示Hello是一个类,是一个public公有的类
//2. Hello{ } 表示一个类的开始和结束
//3. public static void main(String[] args) 表示一个主方法,即我们程序的入口
//4. main() {} 表示方法的开始和结束
//5. System.out.println("hello,world~"); 表示输出"hello,world~"到屏幕
//6. ;表示语句结束
public class Hello {//编写一个main方法public static void main(String[] args) {System.out.println("timerring hello");}}//一个源文件中最多只能有一个public类。其它类的个数不限。[演示]
//Dog 是一个类
//编译后,每一个类,都对于一个.class
class Dog {//一个源文件中最多只能有一个public类。其它类的个数不限,也可以将main方法写在非public类中,//然后指定运行非public 类,这样入口方法就是非public 的main方法public static void main(String[] args) {System.out.println("hello, 狗狗");}
}class Tiger {public static void main(String[] args) {System.out.println("hello, 老虎");}}

Java 转义字符

Java 常用的转义字符

在控制台,输入tab 键,可以实现命令补全
\t :一个制表位,实现对齐的功能
\n :换行符
\ :一个
" :一个"
' :一个'
\r :一个回车System.out.println("timerring\r 北京"); 注意:回车不换行。

注释(comment)

Java 中的注释类型

  1. 单行注释//
  1. 多行注释/* */ (多行注释里面不允许有多行注释嵌套)
  1. 文档注释/** */

关于文档注释

/*** @author  timerring* @version  1.0*/// 其中author  version  是javadoc的标签
public class Comment02 { //编写一个main方法public static void main(String[] args) {}
}

注释内容可以被JDK提供的工具javadoc所解析,生成一套以网页文件形式体现的该程序的说明文档,一般写在类

javadoc -d 生成的doc所存的文件夹名 -author -version Comment02.java

javadoc 常见标签

标签

描述

示例

@author

标识一个类的作者

@author description

@deprecated

指名一个过期的类或成员

@deprecated description

{@docRoot}

指明当前文档根目录的路径

Directory Path

@exception

标志一个类抛出的异常

@exception exception-name explanation

{@inheritDoc}

从直接父类继承的注释

Inherits a comment from the immediate surperclass.

{@link}

插入一个到另一个主题的链接

{@link name text}

{@linkplain}

插入一个到另一个主题的链接,但是该链接显示纯文本字体

Inserts an in-line link to another topic.

@param

说明一个方法的参数

@param parameter-name explanation

@return

说明返回值类型

@return explanation

@see

指定一个到另一个主题的链接

@see anchor

@serial

说明一个序列化属性

@serial description

@serialData

说明通过writeObject( ) 和 writeExternal( )方法写的数据

@serialData description

@serialField

说明一个ObjectStreamField组件

@serialField name type description

@since

标记当引入一个特定的变化时

@since release

@throws

和 @exception标签一样.

The @throws tag has the same meaning as the @exception tag.

{@value}

显示常量的值,该常量必须是static属性。

Displays the value of a constant, which must be a static field.

@version

指定类的版本

@version info

Java 代码规范

  1. 类、方法的注释,要以javadoc的方式来写。
  1. 非Java Doc的注释,往往是给代码的维护者看的,着重告述读者为什么这样写,如何修改,注意什么问题等
  1. 使用tab操作,实现缩进,默认整体向右边移动,时候用shift+tab整体向左移
  1. 运算符和=两边习惯性各加一个空格。
  1. 源文件使用utf-8编码
  1. 行宽度不要超过80字符
  1. 代码编写次行风格和行尾风格(!) 推荐行尾风格。

DOS 命令

DOS 介绍

Dos:Disk Operating System 磁盘操作系统, 简单说一下windows 的目录结构。

常用的dos 命令

  1. 查看当前目录是有什么内容 dir
    dir d:\abc2\test200
  1. 切换到其他盘下:盘符号cd : change directory
  1. 切换到当前盘的其他目录下(使用相对路径和绝对路径演示), ..\表示上一级目录
  1. 切换到上一级:
    案例演示: cd ..
  1. 切换到根目录:cd
    案例演示:cd \
  1. 查看指定的目录下所有的子级目录tree
  1. 清屏cls
  1. 退出DOS exit
  1. (md[创建目录],rd[删除目录],copy[拷贝文件],del[删除文件],echo[输入内容到文件],type,move[剪切])echo ok > pic.txt

环境变量path配置及其作用

  1. 环境变量的作用是为了在dos的任意目录,可以去使用java 和 javac命令
  1. 先配置 JAVA_HOME = 指向jdk安装的主目录
  1. 编辑path环境变量,增加 %JAVA_HOME%\bin

Java 历史

  • 1990年:Sun Microsystems启动了一个代号为“绿色项目”的研究计划,旨在开发一种新的编程语言和平台,用于家用电器等设备。
  • 1991年:James Gosling领导的团队开始设计一种新的语言,最初命名为Oak(橡树)。
  • 1993年:随着互联网的兴起,Oak被重新命名为Java,并且团队开始将其作为网络应用开发的语言。
  • 1994年:Gosling在硅谷的一个会议上展示了Java的功能,引起了极大的关注。
  • 1995年:Sun Microsystems正式发布了Java的第一个版本Java 1.0。
  • 2000年:Sun发布了Java 2平台,分为三个版本:Java SE, Java EE, Java ME。
  • 2009年:Oracle Corporation宣布收购Sun Microsystems,随后接管了Java的开发和维护工作。
  • 2011年:Oracle发布了Java 7,引入了一些新的特性和改进。

Java 技术体系平台

  • Java SE (Java Standard Edition):标准版,适用于桌面应用程序开发。
  • Java EE (Java Enterprise Edition):企业版,专注于服务器端应用开发,如Web应用、企业级应用。
  • Java ME (Java Micro Edition):小型版,适用于资源受限的设备,如智能手机、嵌入式系统。

Java 重要特点

  • 面向对象:Java完全支持面向对象编程(OOP)的所有概念,如封装、继承、多态等。
  • 健壮性:Java通过严格的错误检查和异常处理机制来增强程序的稳定性。
  • 跨平台性:Java程序编译成字节码(.class文件),由Java虚拟机(JVM)解释执行,这使得Java程序可以在任何安装了JVM的操作系统上运行。
  • 解释型与编译型:Java是一种半编译半解释型语言,首先编译成字节码,然后由JVM解释执行。

Java 虚拟机[JVM]

  • 架构:JVM是一个软件层,它为Java程序提供了一种独立于硬件的抽象计算模型。
  • 执行引擎:JVM包括解释器和即时编译器(JIT Compiler),能够将字节码转换为机器码并高效执行。
  • 内存管理:JVM管理堆内存和栈内存,自动处理垃圾回收。

JDK, JRE

  • JDK (Java Development Kit)
    • 包含了JRE以及开发工具,如编译器javac、调试器jdb等。
    • 主要面向开发者,用于编写和测试Java程序。
  • JRE (Java Runtime Environment)
    • 包含了JVM和运行Java程序所需的类库。
    • 主要面向最终用户,用于运行已开发完成的Java程序。
  • 包含关系
    • JDK包含了JRE,而JRE又包含了JVM和核心类库。

Java 快速入门

  • 步骤
    1. 创建源文件Hello.java
    2. 使用javac Hello.java编译源文件,生成Hello.class
    3. 使用java Hello命令运行编译后的程序。
  • 注意点
    • Java程序通常以.java扩展名保存。
    • public class定义了一个公共类,且文件名必须与公共类名一致。
    • public static void main(String[] args)是程序的入口点。

Java 转义字符

  • 常用转义字符
    • \t:水平制表符。
    • \n:新行。
    • \":双引号。
    • \':单引号。
    • \\:反斜杠。
    • \r:回车(光标回到行首但不换行)。

注释

  • 类型
    • 单行注释://
    • 多行注释:/* ... */
    • 文档注释:/** ... */
  • 文档注释
    • 可以被javadoc工具解析,用于生成HTML格式的文档。
    • 常见标签:
      • @author:作者信息。
      • @version:版本信息。
      • @param:方法参数描述。
      • @return:返回值描述。
      • @throws:可能抛出的异常。

Java 代码规范

  • 编码风格
    • 使用Javadoc注释公共接口和重要方法。
    • 使用清晰的缩进和空格。
    • 保持合理的代码行长度。
    • 维持一致的编码风格。

DOS 命令

  • 基本命令
    • dir:列出当前目录的内容。
    • cd:改变当前目录。
    • tree:显示目录结构。
    • cls:清屏。
    • exit:退出命令提示符。
    • md:创建目录。
    • rd:删除目录。
    • copy:复制文件。
    • del:删除文件。
    • echo:打印文本或向文件写入文本。
    • type:显示文件内容。
    • move:移动文件。

环境变量path配置及其作用

  • 配置
    • 设置JAVA_HOME环境变量指向JDK安装目录。
    • PATH环境变量中添加%JAVA_HOME%\bin,使用户能够在任何位置调用Java相关命令。
  • 作用
    • 通过设置这些环境变量,用户可以在命令行中无需指定完整路径即可执行Java编译器(javac)和Java运行时(java)命令。

相关文章:

Java笔记 2 java概述和基础知识

第2章 Java概述与基础知识 Java 历史 Java技术体系平台 Java 重要特点 Java 虚拟机[JVM] JDK,JRE JDK 基本介绍 JRE 基本介绍 JDK、JRE 和JVM 的包含关系 Java 快速入门 注意细节 Java 转义字符 Java 常用的转义字符 注释(comment) Java 中的注释类型 关于文档注释 …...

在使用ST-Link下载程序时出现“Error: Flash Download failed - Cortex-”

使用ST-Llink下载程序出现这种错误的本质是下载地址不正确 下面是一个STM32 F103C6T6A芯片的Memory map,注意RAM和flash的起始地址 解决办法:把keil中的debug设置成和自己芯片一直的下载起始地址...

长沙自闭症青少年学校:实现孩子的全面成长

在长沙自闭症青少年学校的选择中,星贝育园以其独特的教育理念、专业的师资力量和全面的康复服务脱颖而出,为自闭症青少年及其家庭提供了重要的支持和帮助。以下是对星贝育园的一些详细评价: 教育理念与承诺 星贝育园秉承“实现孩子的全面成…...

系统 IO

"裸奔"层次:不带操作系统的编程 APP(应用程序) -------------------------------- Hardware(硬件) 特点:简单,应用程序直接操作硬件(寄存器) 缺点: 1. 搞应用开发的必须要了解硬件的实现细节,能够看懂原理图…...

Mysql InnoDB 存储引擎简介

InnoDB 存储引擎是 Mysql 的默认存储引擎,它是由 Innobase Oy 公司开发的 Mysql 为什么默认使用 InnoDB 存储引擎 InnoDB 是一款兼顾高可靠性和高性能的通用存储引擎 在 Mysql 5.5 版本之前,默认是使用 MyISAM 存储引擎,在 5.5 及其之后版…...

驾校预约学习系统的设计与实现

摘 要 伴随着信息技术与互联网技术的不断发展,人们进到了一个新的信息化时代,传统管理技术性没法高效率、容易地管理信息内容。为了实现时代的发展必须,提升管理高效率,各种各样管理管理体系应时而生,各个领域陆续进到…...

Python--读取文件时出现的报错

在使用 Python 读取文件时,尤其是涉及到文件编码的场景,常常会遇到编码解码问题。常见的编码问题主要发生在尝试解码不同编码格式的文件时,比如将使用 GBK 编码的文件按 UTF-8 解码,或者相反。 常见编码错误及其原因:…...

基于http请求的一种安全校验认证方案记录

目录 需求简述 设计方案 参考代码 可优化点 需求简述 日常的开发对接过程中,经常会遇到需要给其他合作伙伴或者其他系统通过接口的方式提供数据,或者有些接口是需要提供通用能力出去的。 从安全的角度考虑,我们往往需要给接口加一些安全校…...

链动321模式开发系统解析源码

链动321模式是一种结合了区块链技术、动态激励机制与“321”运营模式的新型电商架构。该模式通过激励用户分享和推广,实现用户、企业和平台的共赢,具有独特的商业逻辑和高效的运营机制。以下是对链动321模式的详细解析: 系统特点 裂变迅速&am…...

TypeScript 快速上⼿ (3:装饰器)

目录 一、简介 二、类装饰器 基本语法 应用举例 关于返回值 关于构造类型 替换被装饰的类 三、装饰器工厂 四、装饰器组合 五、属性装饰器 基本语法 关于属性遮蔽 应用举例 六、方法装饰器 基本语法 应用举例 七、访问器装饰器 基本语法 应用举例 八、参数装…...

el-input设置后缀显示单位并阻止滚轮微调

项目中收集form表单信息时,有时会需要在el-input后面显示单位,效果如图: 当然,我们可以直接在输入框后面加上单位,但直接给输入框上加单位不管是视图上还是用户体验上看起来都要好一点 element-plus / element-ui给我…...

Redis Key的过期策略

Redis 的过期策略主要是指管理和删除那些设定了过期时间的键,以确保内存的有效使用和数据的及时清理。 具体来说,Redis 有三种主要的过期策略:定期删除(Scheduled Deletion)、惰性删除(Lazy Deletion&#…...

数据结构:时间复杂度与空间复杂度

目录 算法效率时间复杂度大O渐进表示法时间复杂度计算案例 空间复杂度空间复杂度案例 复杂度算法题 算法效率 算法在编写成可执行程序后,运⾏时需要耗费时间资源和空间(内存)资源 。因此衡量⼀个算法的好坏,⼀般是从时间和空间两个维度来衡量的&#xf…...

C语言实现贪吃蛇小游戏

✅博客主页:爆打维c-CSDN博客​​​​​​ 🐾 🔹分享c语言知识及代码 🐾 目录 游戏展示视频 一、项目准备工作 二、功能实现分析 1.游戏开始 a.设置本地化、创建窗口、标题 b.隐藏光标,封装定位光标的函数 c.打印欢迎界面及提示信息 …...

深入解析包裹信息管理系统:关系型数据库逻辑数据模型设计、超类实体与派生属性探讨

目录 案例 【题目】 【问题 1】(14分) 【问题 2】(6分) 【问题 3】(5分) 【答案】 【问题 1】解析 【问题 2】解析 【问题 3】解析 案例 阅读下列说明,回答问题 1 至问题 3。 【题目】 某企业委托软件公司开发包裹信息管理系统,以便于对该企业…...

Cyber Weekly #24

赛博新闻 1、OpenAI发布最强模型o1 本周四(9月12日),OpenAI宣布推出OpenAIo1系列模型,标志着AI推理能力的新高度。o1系列包括性能强大的o1以及经济高效的o1-mini,适用于不同复杂度的推理任务。新模型在科学、编码、数…...

Java多线程面试精讲:源于技术书籍的深度解读

写在前面 ⭐️在无数次的复习巩固中,我逐渐意识到一个问题:面对同样的面试题目,不同的资料来源往往给出了五花八门的解释,这不仅增加了学习的难度,还容易导致概念上的混淆。特别是当这些信息来自不同博主的文章或是视…...

【Elasticsearch系列七】索引 crud

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

快速生成服务器响应json-server的安装和使用

json-server介绍地址:https://www.geeksforgeeks.org/json-server-setup-and-introduction/ 1.json-server是什么? 基于自定义的json文件,快速生成服务端响应,可用于前端调试接口 2.安装和卸载json-server 2.1 安装: 使用npm命令: npm install -g json-server 2.2 卸载 npm …...

增强LinkedList实现瑞士轮赛制编排

前言 LinkedList底层虽然是基于链表实现,但是由于其对底层节点进行了封装,导致无法操作底层Node对象。这也为使用上带来了很多不便,比如我之前遇到的一个需求:将n个队伍按照瑞士轮进行编排,组成n/2个队伍,…...

XML Group端口详解

在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...

golang循环变量捕获问题​​

在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - ​​循环变量捕获问题​​。让我详细解释一下: 问题背景 看这个代码片段: fo…...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

基础测试工具使用经验

背景 vtune&#xff0c;perf, nsight system等基础测试工具&#xff0c;都是用过的&#xff0c;但是没有记录&#xff0c;都逐渐忘了。所以写这篇博客总结记录一下&#xff0c;只要以后发现新的用法&#xff0c;就记得来编辑补充一下 perf 比较基础的用法&#xff1a; 先改这…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

06 Deep learning神经网络编程基础 激活函数 --吴恩达

深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...

蓝桥杯3498 01串的熵

问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798&#xff0c; 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...

【C++进阶篇】智能指针

C内存管理终极指南&#xff1a;智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...

STM32HAL库USART源代码解析及应用

STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...