Java入门指南:Java语言优势及其特点
目录
1. Java语言简介及发展概述
2. Java语言的优势
2.1 可移植性
2.2 面向对象
2.3 安全性
2.4 大量类库
3. Java语言与C/C++的区别
4. 初识Java程序入口之main方法
5. 注释、标识符、关键字
5.1 注释
5.2 标识符
5.3 关键字
1. Java语言简介及发展概述
Java是一种面向对象的编程语言,由Sun Microsystems(现为Oracle)于1995年推出。Java语言的设计目标是提供一种可移植、高性能、面向对象的编程语言,适用于分布式环境中的Internet应用。
Java语言是一种通用的、高级的、面向对象的编程语言,它具有以下特点:
- 简单性:Java语言的语法相对简单,易于学习和理解。
- 面向对象:Java语言是一种纯面向对象的编程语言,支持封装、继承和多态等面向对象的概念。
- 可移植性:Java语言的编译器可以将源代码编译成字节码,而字节码可以在任何支持Java虚拟机(JVM)的平台上运行,从而实现了跨平台的应用程序。
- 安全性:Java语言在语言层面上提供了安全机制,如类加载器、访问控制和异常处理等,可以有效地防止恶意代码。
- 高性能:Java语言使用JIT编译器将字节码转换为本地机器代码,从而实现了比解释执行更快的执行速度。
- 大量类库:Java语言有丰富的类库和工具,可以用于开发各种类型的应用程序,如Swing、JDBC、Servlet等。
Java语言的发展经历了三个主要阶段:
1.1 JDK 1.x
JDK 1.x是Java语言的最初版本,包含基本的语言特性和类库。在这个阶段,Java语言还处于起步阶段,很多特性和类库还没有完善,但是已经具备了跨平台、面向对象等基本特性。
1.2 JDK 1.2 ~ JDK 1.4
JDK 1.2 ~ JDK 1.4是Java语言迅速发展的阶段,引入了许多新特性和类库,如Swing、JDBC、JNDI等。在这个阶段,Java语言已经成为了一种非常流行的编程语言,被广泛应用于Web开发、企业应用等领域。
1.3 JDK 5及以上
JDK 5及以上是Java语言的现代版本,引入了泛型、枚举、注解、自动装箱拆箱等重要特性。在这个阶段,Java语言的性能和安全性得到了极大的提升,成为了一种更加成熟、更加稳定的编程语言。
2. Java语言的优势
Java语言具有以下优势:
2.1 可移植性
Java语言的编译器可以将源代码编译成字节码,而字节码可以在任何支持Java虚拟机(JVM)的平台上运行,从而实现了跨平台的应用程序。这个特性是Java语言最重要的特性之一,也是Java语言的最大优势之一。
例如,在Windows操作系统上编写的Java程序,可以在Linux、Mac OS X等其他操作系统上运行,而不需要进行任何修改。
2.2 面向对象
Java语言是一种纯面向对象的编程语言,支持封装、继承和多态等面向对象的概念。这使得Java语言能够更好地支持复杂的应用程序开发,同时也使得代码更加容易维护和扩展。
例如,通过封装数据和方法,Java程序可以更好地保护数据的安全性和完整性,同时也能够更好地隐藏对象的实现细节,提高代码的安全性和可维护性。
2.3 安全性
Java语言在语言层面上提供了安全机制,如类加载器、访问控制和异常处理等,可以有效地防止恶意代码。Java语言的安全性使得它成为了一种非常适合用于开发Web应用程序和移动应用程序的编程语言。
例如,在Java Web应用程序中,Java语言的安全机制可以帮助开发人员防止SQL注入、XSS攻击等常见的Web安全问题,从而保护用户的隐私和数据安全。
2.4 大量类库
Java语言有丰富的类库和工具,可以用于开发各种类型的应用程序,如Swing、JDBC、Servlet等。这些类库和工具可以帮助开发人员快速地构建应用程序,同时也可以提高代码的可重用性和可维护性。
例如,在Java Web应用程序中,Servlet API可以帮助开发人员快速地构建Web应用程序的后端逻辑,而JDBC API可以帮助开发人员轻松地与数据库进行交互,从而实现数据的存储和检索。
3. Java语言与C/C++的区别
Java语言与C/C++语言相比,具有以下不同之处:
3.1 内存管理
Java语言具有自动内存管理的特性,可以自动进行垃圾回收,从而减少了程序员的内存管理负担。而C/C++语言需要程序员手动管理内存,容易发生内存泄漏和内存溢出等问题,增加了程序的复杂度和难度。
3.2 可移植性
Java语言具有跨平台的特性,可以在不同的操作系统和硬件平台上运行。而C/C++语言需要进行不同平台的编译和链接,增加了开发和维护的难度。
3.3 安全性
Java语言在语言层面上提供了安全机制,可以有效地防止恶意代码和安全漏洞。而C/C++语言容易发生缓冲区溢出等安全问题,需要程序员进行额外的安全措施。
4. 初识Java程序入口之main方法
Java程序的入口是main方法,它是Java程序的主函数,也是程序的启动点。在Java程序启动时,JVM会自动搜索并执行包含main方法的类。
main方法的定义如下:
public static void main(String[] args) {System.out.println("Hello,Java");}
main方法是public、static、void类型的,其中方法的表示如下表格:
public | 该方法是公共的,可以被其他类访问; |
static | 示该方法是静态的,可以直接通过类名调用; |
void | 表示该方法没有返回值。 |
程序将输出:
5. 注释、标识符、关键字
5.1 注释
Java注释是用于解释和说明代码的文本。Java提供了三种类型的注释,如下表格:
单行注释 | 以“//”开头的注释,注释内容直到行末。 |
多行注释 | 以“/*”开头,以“*/”结尾的注释,注释内容可以跨越多行。 |
文档注释 | “/**”开头,以“*/”结尾的注释,可以用于生成API文档。 |
例如:
// 这是一个单行注释
/*
这是一个多行注释
这是注释的第二行
*/
/**
* 这是一个文档注释
* 用于生成API文档
*/
注释可以提高代码的可读性和可维护性,建议在编写代码时加入注释。
5.2 标识符
Java标识符是用于标识变量、方法、类、接口等元素的名称。Java标识符必须满足以下规则:
- 必须以字母、下划线或美元符号开头。
- 可以包含字母、数字、下划线或美元符号。
- 区分大小写。
- 不能是Java关键字。
例如:
int count;
String userName;
double totalPrice;
在编写代码时,请尽量使用有意义的标识符,以提高代码的可读性和可维护性。
5.3 关键字
Java关键字是Java语言中具有特殊含义的单词,不能作为标识符使用。Java关键字有以下几个方面的作用:
- 定义语言结构和语法。
- 指定访问权限和作用域。
- 标识特定的操作和关系。
Java关键字不能作为标识符使用,例如:
public class Test {int public; // 错误,不能使用关键字作为标识符
}
在编写代码时,请避免使用Java关键字作为标识符,以免引起编译错误。
关键字 | 说明 |
abstract | 抽象类或抽象方法 |
assert | 断言 |
boolean | 布尔类型 |
break | 跳出循环 |
byte | 字节类型 |
case | switch语句中的分支 |
catch | 捕获异常 |
char | 字符类型 |
class | 类 |
const | 常量,已经废弃,不再使用 |
continue | 跳过循环体中的某次循环 |
default | switch语句中的默认分支 |
do-while | 循环 |
double | 双精度浮点类型 |
else | if语句中的分支 |
enum | 枚举类型 |
extends | 类的继承 |
final | 不可变的,或者被声明为常量 |
finally | 异常处理的最后一个语句块 |
float | 单精度浮点类型 |
for | for循环 |
goto | 已经废弃,不再使用 |
if | if语句 |
implements | 实现接口 |
import | 导入类 |
instanceof | 判断对象是否是某个类的实例 |
int | 整数类型 |
interface | 接口 |
long | 长整数类型 |
native | 声明本地方法 |
new | 创建对象 |
package | 包 |
private | 私有的 |
protected | 受保护的 |
public | 公共的 |
return | 返回值 |
short | 短整数类型 |
static | 静态的 |
strictfp | 浮点数精度和处理的规范化 |
super | 调用父类的构造方法或方法 |
switch | 选择语句 |
synchronized | 同步方法或同步块 |
this | 当前对象 |
throw | 抛出异常 |
throws | 方法声明可能抛出的异常 |
transient | 瞬态变量,不需要序列化 |
volatile | 可变的,用于多线程编程 |
void | 空类型 |
while | while循环 |
创作不易,希望能帮助大家,如有错误请在评论区指出,如果可以,也希望能三连支持一下!
相关文章:

Java入门指南:Java语言优势及其特点
目录 1. Java语言简介及发展概述 2. Java语言的优势 2.1 可移植性 2.2 面向对象 2.3 安全性 2.4 大量类库 3. Java语言与C/C的区别 4. 初识Java程序入口之main方法 5. 注释、标识符、关键字 5.1 注释 5.2 标识符 5.3 关键字 1. Java语言简介及发展概述 Java是一种面…...

Jenkins 节点该如何管理?
Jenkins 拥有分布式构建(在 Jenkins 的配置中叫做节点),分布式构建能够让同一套代码在不同的环境(如:Windows 和 Linux 系统)中编译、测试等 Jenkins 的任务可以分布在不同的节点上运行 节点上需要配置 Java 运行时环境,JDK 版本大于 1.5 节…...

hugging face下载数据集
开始直接执行这个,下载下来的图片打不开 git clone https://huggingface.co/datasets/diffusers/dog-example 解决办法: 安装git lfs 1. curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash 2. sudo apt…...
解决Django报错 : No module named ‘MySQLdb‘
Django的版本是2.0,Python的版本号是3.6.4 在models.py创建好了模型类之后使用命令:python manage.py makemigrations 进行迁移,但是突然报错:ImportError:No module named MySQLdb 查询了相关资料发现python2.x版本是支持mysql…...

【Docker】Docker的优势、与虚拟机技术的区别、三个重要概念和架构及工作原理详细讲解
前言 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。 作者简介: 辭七七…...

【论文笔记】RCM-Fusion: Radar-Camera Multi-Level Fusion for 3D Object Detection
原文链接:https://arxiv.org/abs/2307.10249 1. 引言 目前的一些雷达-相机融合3D目标检测方法进行实例级的融合,从相机图像生成3D提案,并与雷达点云相关联以修正提案。但这种方法没有在最初阶段使用雷达,依赖于相机3D检测器&…...
STM32-风速传感器(ADC)
目录 0 说明 1 传感器介绍 2 代码说明 2.1 ADC.c 2.2 adc.h 2.3 main.c 0 说明 本篇文章主要是说明怎么使用STM32单片机读取风速传感器采集到的数据,读取方式是ADC,并且附带着STM32所需要的全部代码,所使用的风速传感器如下图所示。 附&am…...

【conda】配置国内镜像源
【conda】配置国内镜像源 1、官方2、国内常用镜像3、配置查看当前conda配置设置搜索是显示通道地址 4、清除缓存5、恢复默认全部删除指定删除 1、官方 https://docs.conda.io/projects/conda/en/latest/configuration.html 2、国内常用镜像 https://developer.aliyun.com/mi…...

python森林生物量(蓄积量)数据处理到随机森林估算全流程
python森林生物量(蓄积量)估算全流程 一.哨兵2号获取/处理/提取数据1.1 影像处理与下载采用云概率影像去云采用6S模型对1C级产品进行大气校正geemap下载数据到本地NDVI 1.2 各种参数计算(生物物理变量、植被指数等)LAI:…...

使用Freemarker模版导出xls文件使用excel打开提示文件损坏
本文是通过一步步的还原事件的发生并解决的一个过程记录,如果想知道如何解决的可以直接跳转文章末尾结论部分 提示一下,关注一下 Table 标签中的 ss:ExpandedRowCount 属性 解决的问题 在项目中使用freemarker的xml模板导出xls格式的Excel文件时…...

初识Linux
今天简单了解了关于操作系统的发展史,学习了在Linux中如何远程连接云服务器的指令,以及在Linux中创建多个用户的指令。 1. ssh root 服务器远程地址 作用是用来连接XShell与云服务器,输入该指令后会自动生成输入密码的窗口,如…...

python——案例六:清空列表用clear()方法实现
案例六:清空列表用clear()方法实现LIST[0,1,2,3,4,5] print(清空前:,LIST) LIST.clear() print(清空后:,LIST)...

测试|Selenium之WebDriver常见API使用
测试|Selenium之WebDriver常见API使用 文章目录 测试|Selenium之WebDriver常见API使用1.定位对象(findElement)css定位xpath定位css选择器语法:xpath语法:校验结果 2.操作对象鼠标点击对象在对象上模拟按键输入clear清除对象输入的文本内容su…...

手把手教你uniapp和小程序分包
分包目的在于提高小程序的体积,多一个包就多2M,最多20M 常规的分包: 小程序一打开首先加载主包,然后再加载分包 分包可以用主包内的资源,主包不可以使用分包的资源 分包A不可以使用分包B里面的内容 分包可以使用a…...

Java中的代理模式
Java中的代理模式 1. 静态代理2. JDK动态代理3. CGLib动态代理 1. 静态代理 接口 public interface ICeo {void meeting(String name) throws InterruptedException; }目标类 public class Ceo implements ICeo{public void meeting(String name) throws InterruptedExcepti…...

LeetCode每日一题——1331.数组序号转换
题目传送门 题目描述 给你一个整数数组 arr ,请你将数组中的每个元素替换为它们排序后的序号。 序号代表了一个元素有多大。序号编号的规则如下: 序号从 1 开始编号。一个元素越大,那么序号越大。如果两个元素相等,那么它们的…...

2、Tomcat介绍(下)
组件分类 在Apache Tomcat中,有几个顶级组件,它们是Tomcat的核心组件,负责整个服务器的运行和管理。这些顶级组件包括: Server(服务器):Tomcat的server.xml配置文件中的<Server>元素代表整个Tomcat服务器实例。每…...

JAVA 正则表达式(heima)
JAVA 正则表达式(heima) public class RegexDemo01 {/** 正则表达式介绍:本质来说就是一个字符串,字符串中可以指定规则,来对其他字符串进行校验。* public boolean matches(String regex):根据传入的正则表达式&#…...

布瑞特单圈绝对值旋转编码器串口数据读取
布瑞特单圈绝对值旋转编码器串口数据读取 数据手册:http://briter.net/col.jsp?id109 (2.1版本RS485说明书通信协议 单圈.pdf) 绝对式编码器为布瑞特BRT38-ROM16384-RT1,采用RS485通信。 该绝对式编码器共有5根线:红、黄、黑、绿、白 由…...

Linux第六章之vim与gcc使用
一、Linux编辑器-vim使用 vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也…...

【Golang】Golang进阶系列教程--为什么说 Go 语言字符串是不可变的?
文章目录 前言推荐阅读 前言 最近有读者留言说,平时在写代码的过程中,是会对字符串进行修改的,但网上都说 Go 语言字符串是不可变的,这是为什么呢? 这个问题本身并不困难,但对于新手来说确实容易产生困惑…...

ES开启身份认证
文章目录 X-Pack简介之前的安全方案ES开启认证ES服务升级https协议开启集群节点之间的证书认证 X-Pack简介 X-Pack是Elastic Stack扩展功能,提供安全性,警报,监视,报告,机器学习和许多其他功能。 X-Pack的发展演变&am…...

Docker安装es以及ik分词器
1、拉取镜像 docker pull elasticsearch:7.10.12、下载对应版本的ik分词、并将它们解压到ik文件夹下,如图 https://github.com/medcl/elasticsearch-analysis-ik/releases 3、在服务器上创建文件夹 mkdir /usr/elklog/elk/es mkdir /usr/elklog/elk/es/data mkdi…...

中断、进程调度、进程切换、系统调用,模式切换的那些事情
提示:风萧声动,玉壶光转,一夜鱼龙舞 文章目录 前言中断进程调度进程切换线程切换模式切换所以他们有什么关系? 前言 本文内容主要参考以下几个博文中学得 进程与线程(中)的2.2.7 进程切换VS模式切换&#…...

使用web-view实现网页端和uni-app端是数据传输
要实现这个功能 第一步:要在vue的public文件夹下面引入 <script type"text/javascript" src"https://js.cdn.aliyun.dcloud.net.cn/dev/uni-app/uni.webview.1.5.2.js"></script> 第二步:建立一个新的空的uni-app项目…...

Ajax快速入门
Ajax Ajax就是前端访问服务器端数据的一个技术 还有主要就是异步交互 就是在不刷新整页面的情况下,和服务器交换部分我也数据 比如搜索的联想技术 同步和异步的概念 一个是客户端需要等待服务器完成处理,才能进行别的事 一个是客户端不需要等待服务器处…...

Google OAuth 2 authorization - Error: redirect_uri_mismatch 400
出现这个问题,一般是因为google授权origin地址和重定向redirect_uri地址没有匹配上。 请仔细检查重定向地址的url中origin部分和授权origin部分是否能够匹配:...

Qt 中操作xml文件和JSON字符串
文章目录 1、概述1.1、xml介绍1.2、json介绍 2、xml文件增删改查2.1、写xml文件内容2.2、读xml文件内容2.3、删除xml文件内容2.4、修改xml文件内容 3、构建JSON字符串3.1、JSON字符串排版4、剪切板操作 1、概述 1.1、xml介绍 XML 指可扩展标记语言(EXtensible Mark…...

React 基础篇(二)
💻 React 基础篇(二)🏠专栏:React 👀个人主页:繁星学编程🍁 🧑个人简介:一个不断提高自我的平凡人🚀 🔊分享方向:目前主攻…...

springboot + shiro 下载文件时浏览器提示“无法下载-没有权限”或“无法下载-没有文件”问题
springboot shiro 下载文件时浏览器提示“无法下载-没有权限”或“无法下载-没有文件”问题 1. 预期效果2. 问题描述3. 问题排查4. 解决方案5. 总结 1. 预期效果 后端编写文件下载接口,前端通过浏览器的下载将文件保存到本地。 2. 问题描述 前后端代码在不同主机…...