Java 的初认识(一)

好久不见兄弟们!之前更新完 C 语言的内容之后呢,我是做了一个“ 短暂 ”的休息昂,当然我自己的学习是没有停歇的,只是在更新博客这上面休息了一下,主要还是想让自己先把这部分的知识掌握透彻了之后,再来为大家总结出精华的部分嘛,还望诸君理解。那么接下来,咱们就正式开始更新 Java 语言的部分。好了,话不多说,咱们直接步入正题

一 . Java 语言的概念

1 . 1 什么是 Java ?

Java 是一门面向对象的编程语言,是一门极其优秀的程序设计语言

Java语言具有简单易用、功能强大两个特征,具体功能性体现在面向对象、分布式、健壮性(也叫鲁棒性)、安全性、平台独立与可移植性、多线程、动态性等等特点。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,让程序员以优雅的思维方式进行复杂的编程(这是百度百科说的昂,其实一点也不“ 优雅 ”,经常想的我抓耳挠腮的)

不仅如此,Java 还是一个有一系列计算机软件和规范形成的技术体系,这个技术体系提供了完整的用于软件开发和跨平台部署的支持环境,并广泛应用于嵌入式系统,移动终端,企业服务器,大型机等各个场合

1 . 2 Java 语言的发展史

提到 Java,首先来介绍一下我们的 Java 之父 —— James Gosling(詹姆斯·高斯林 ),也就是上图那个老头昂,老爷子现在依然健在昂,诸位不用瞎猜哈哈哈。他呢,是 Java 语言的共同创始人之一,一般公认他为“ Java 之父 ”

1990 年,James Gosling 领导的,与 Patrick Naughton 和 Mike Sheridan 等人合作“ Green Project(绿色计划)”,该计划的最初目标是为了开发一种能够在各种消费性电子产品上运行的程序架构,例如电视机,收音机,冰箱等等,后来发展了一套语言叫做“ Oak(可以说是我们 Java 语言的前身)”,但是由于这些智能化家电的市场需求并没有达到预期,Sun 公司决定放弃该计划,后来随着互联网的发展,重启该计划,改造了 Oak 。1994 年底,James Gosling 在硅谷召开的“技术、教育和设计大会”上展示 Java 程式。1995 年 5 月,命名为 Java 正式上线,并提出了经典口号:“ Write once,Run anywhere ”(一次编译,到处运行)

老爷子在 2024 年的 7月份,宣布了退休,是退休,再次强调昂。大家可能第一感觉觉得 Java 的发展历史好像离我们很遥远,其实不然,Java 语言跟 C / C++ 相比起来,是一种新兴语言,但其影响力和应用领域不可忽视

二 . Java 语言的特性

(1 . 1)简单性

Java 语法相当于 C++ 语法的一个“ 纯净版本 ”,在 C++ 的基础上做了减法。Java 没有头文件、指针语法、结构、联合、操作符重载、虚基类等等。不仅如此,Java 的开发环境远远超出大多数其他编程语言的开发环境

(1 . 2)面向对象

在Java 的世界中,一切皆为对象,我们的物品:桌子、杯子、手机、电脑,生物:人、猫猫、狗狗等等这些都属于 Java 的对象。而所谓面向对象,就是依靠对象之间的交互来完成事情,例如:人用电脑追剧,用手机购物,狗狗吃狗粮等等 

(1 . 3)分布式(微服务)

Java 有丰富的例程库,用于处理像 HTTP 和 FTP 之类的 TCP / IP 协议。Java 应用程序能够通过URL 打开和访问网络上的对象,其便捷程度好像在访问本地文件一样,

1 . 4)健壮性(鲁棒性)

Java 与 C++ 最大的区别在于,Java 所采用的指针模型可以消除重写内存和损坏数据的可能性,(对于我们之前在学习 C 语言的时候,花费大把时间和精力来排查有关指针的 BUG 这种问题,在 Java 中完全不用担心)。不仅如此,Java 编译器能够检测出许多在其他语言中仅在运行时才能检测出的问题

(1 . 5)安全性

Java 适用于网络 / 分布式环境,为了达到这个目的,在安全性方面投入了大量的精力,使得 Java 可以构建防病毒、篡改的网络系统

(1 . 6)体系结构中立

编译器生成一个体系结构中立的目标文件格式,按照该中规范生成的文件,只要有 Java 运行时的系统,这些编译后的代码就可以在许多处理器上运行。Java 编译器通过生成与特定计算机体系结构无关的字节码指令来实现这一特性。精心设计的字节码不仅可以很容易在任何机器上解释执行,而且还可以动态地翻译成本地机器代码,这就是为什么可以:“ Write once,Run anywhere ”

(1 . 7)可移植性

与 C / C++ 不同,Java 规范中没有“ 依赖具体实现的地方 ”。基本数据类型的大小以及有关运算都做了明确的说明。例如:Java 中的 int  永远是 32 位整数,而在 C / C++ 中,int 可能是 16 / 32 位整数,也可能是编译器提供商指定的其他大小。在 Java 中,数据类型都有固定的大小,这消除了代码在移植时令人头疼的主要问题

 (1 . 8)解释性

Java 为了实现与平台无关,自己维护了一套基于栈架构的指令集,Java 源代码经过编译之后,字节码文件中的指令就是按照自己的指令集来组织的,但是在具体硬件环境中运行时,系统并不能识别,因为 Java 的程序在执行时,Java 解释器会逐条的将字节码文件中的指令翻译成 CPU 的指令集

 (1 . 9)高能性

边解释边执行。最开始 Java 的运行效率偏低,近年来 JVM 也在不断地优化,例如:JIT(即时编译器),热点代码探测,让 Java 程序的执行效率大幅提升,在有些场合不亚于 C / C++

 (1 . 10)多线程

Java 在当时很超前,它是第一个支持并发程序设计的主流语言,多线程可以带来更好的交互响应和实时行为

 (1 . 11)动态性

Java 与 C / C++ 相比更具有动态性,他能够适应不断发展的环境,库中可以自由添加新方法和实例变量,而对客户端没有任何影响

Java 不仅仅只是一门编程语言,也是一个由一些计算机软件和规范组成的技术体系

OKK,今天这一小节主要是介绍了 Java 的一些发展历史以及基本概念,大家只需浏览一下,做一个简单的了解就好了,由于后面的部分篇幅过长,也分不开,咱们就留到下一期再来正式开始讲解有关 Java 语言的语法部分。咱们下期再见,与诸君共勉!!!

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024年美赛C题评委文章及O奖论文解读 | AI工具如何影响数学建模?从评委和O奖论文出发-O奖论文做对了什么?

模型假设仅仅是简单陈述吗?允许AI的使用是否降低了比赛难度?还在依赖机器学习的模型吗?处理题目的方法有哪些?O奖论文的优点在哪里? 本文调研了当年赛题的评委文章和O奖论文,这些问题都会在文章中一一解答…

C语言练习(17)

两个乒乓球队进行比赛&#xff0c;各出3人。甲队为A、B、C 3人&#xff0c;乙队为X、Y、Z 3人&#xff0c;并抽签决定比赛名单。有人向队员打听比赛的名单&#xff0c;A说他不和X比&#xff0c;C说他不和X、Z比&#xff0c;请编程序找出3对选手的对阵名单。 #include <stdi…

【回忆迷宫——处理方法+DFS】

题目 代码 #include <bits/stdc.h> using namespace std; const int N 250; int g[N][N]; bool vis[N][N]; int dx[4] {0, 0, -1, 1}; int dy[4] {-1, 1, 0, 0}; int nx 999, ny 999, mx, my; int x 101, y 101; //0墙 (1空地 2远方) bool jud(int x, int y) {if…

Flowable 审核功能封装

文章目录 引言I 查询当前用户需要审核的数据列表整体逻辑根据组获取任务数据根据审核人获取任务数据II 进行审核整体逻辑III 审核历史查询IV 流程图查看流程进度思路根据任务 ID 获取任务进度流程图引言 流程引擎功能封装 : 审核列表数据查询进行审核的整体逻辑:获取任务 Id,…

Java-数据结构-二叉树习题(2)

第一题、平衡二叉树 ① 暴力求解法 &#x1f4da; 思路提示&#xff1a; 该题要求我们判断给定的二叉树是否为"平衡二叉树"。 平衡二叉树指&#xff1a;该树所有节点的左右子树的高度相差不超过 1。 也就是说需要我们会求二叉树的高&#xff0c;并且要对节点内所…

github汉化

本文主要讲述了github如何汉化的方法。 目录 问题描述汉化步骤1.打开github&#xff0c;搜索github-chinese2.打开项目&#xff0c;打开README.md3.下载安装脚本管理器3.1 在README.md中往下滑动&#xff0c;找到浏览器与脚本管理器3.2 选择浏览器对应的脚本管理器3.2.1 点击去…

学习ASP.NET Core的身份认证(基于JwtBearer的身份认证8)

为进一步测试通过请求头传递token进行身份验证&#xff0c;在main.htm中增加layui的数据表格组件&#xff0c;并调用后台服务分页显示数据&#xff0c;后台分页查询数据接口如下所示&#xff08;测试时&#xff0c;直接将数据写死到代码中&#xff0c;没有查询数据库&#xff0…

Linux系统 C/C++编程基础——使用make工具和Makefile实现自动编译

ℹ️大家好&#xff0c;我是练小杰&#xff0c;今天周二了&#xff0c;距离除夕只有&#xff16;天了&#xff0c;新的一年就快到了&#x1f606; 本文是有关Linux C/C编程的make和Makefile实现自动编译相关知识点&#xff0c;后续会不断添加相关内容 ~~ 回顾:【Emacs编辑器、G…

68,[8] BUUCTF WEB [RoarCTF 2019]Simple Upload(未写完)

<?php // 声明命名空间&#xff0c;遵循 PSR-4 自动加载规范&#xff0c;命名空间为 Home\Controller namespace Home\Controller;// 导入 Think\Controller 类&#xff0c;以便扩展该类 use Think\Controller;// 定义 IndexController 类&#xff0c;继承自 Think\Control…

可以自己部署的微博 Mastodon

Mastodon&#xff08;又称乳齿象、长毛象或万象&#xff09;是一个自由开源的去中心化的分布式微博客社交网络。它的用户界面和操作方式跟推特&#xff08;Twitter&#xff09;类似&#xff0c;但整个网路并非由单一机构运作&#xff0c;而是以多个由不同营运者独立运作的伺服器…

机器学习-核函数(Kernel Function)

核函数&#xff08;Kernel Function&#xff09;是一种数学函数&#xff0c;主要用于将数据映射到一个更高维的特征空间&#xff0c;以便于在这个新特征空间中更容易找到数据的结构或模式。核函数的主要作用是在不需要显式计算高维特征空间的情况下&#xff0c;通过内积操作来实…

AQS公平锁与非公平锁之源码解析

AQS加锁逻辑 ReentrantLock.lock public void lock() {sync.acquire(1);}AbstractQueuedSynchronizer#acquire public final void acquire(int arg) {if (!tryAcquire(arg) &&acquireQueued(addWaiter(Node.EXCLUSIVE), arg))selfInterrupt();}addWaiter就是将节点加入…

软件授权产品介绍

CodeMeter技术可提供高达40亿个授权模块&#xff0c;其中6000个可存放于硬件加密狗CmDongle中&#xff0c;其他可存放于软授权CmActLicense中按需激活&#xff0c;CodeMeter云授权CmCloud也可以无任何限制的为“云中软件”提供灵活的授权控制。 CodeMeter安全时钟模块采用了独…

Excel 技巧17 - 如何计算倒计时,并添加该倒计时的数据条(★)

本文讲如何计算倒计时&#xff0c;并添加该倒计时的数据条。 1&#xff0c;如何计算倒计时 这里也要用公式 D3 - TODAY() 显示为下面这个样子的 然后右键该单元格&#xff0c;选 设置单元格格式 然后点 常规 这样就能显示出还书倒计时的日数了。 下拉适用到其他单元格。 2&a…

Vue3初学之Element Plus Dialog对话框,Message组件,MessageBox组件

Dialog的使用&#xff1a; 控制弹窗的显示和隐藏 <template><div><el-button click"dialogVisible true">打开弹窗</el-button><el-dialogv-model"dialogVisible"title"提示"width"30%":before-close&qu…

C++ 类与对象(上)

在C中&#xff0c;在原来C语言基础上引入了类的概念。与C语言最大的不同就是&#xff1a;C可以在类中定义函数。由类声明的变量&#xff0c;称为对象。 1.类的定义 1.1类定义的格式 class为定义类的关键字&#xff0c;Stack为类的名字&#xff0c;{}中为类的主体&#xff0c;…

什么样的问题适合用递归

递归是一种通过函数调用自身来解决问题的方法。递归适用于那些可以被分解为相似子问题的问题&#xff0c;即原问题可以通过解决一个或多个更小规模的同类问题来解决。递归通常需要满足以下两个条件&#xff1a; 递归基&#xff08;Base Case&#xff09;&#xff1a;问题的最简…

Qt基础项目篇——Qt版Word字处理软件

一、核心功能 本软件为多文档型程序&#xff0c;界面是标准的 Windows 主从窗口 拥有&#xff1a;主菜单、工具栏、文档显示区 和 状态栏。 所要实现的东西&#xff0c;均在下图了。 开发该软件&#xff0c;主要分为下面三个阶段 1&#xff09;界面设计开发 多窗口 MDI 程序…

【物联网】keil仿真环境设置 keilV5可以适用ARM7

文章目录 一、ARM指令模拟器环境搭建1. keil软件2. Legacy Support 二、Keil仿真环境设置1. 创建一个项目2. 编译器介绍(1)arm-none-eabi-gcc(2)arm-none-linux-gnueabi-gcc(3)arm-eabi-gcc(4)grmcc(5)aarch64-linux-gnu-gcc 3. 安装编译器(1)设置调试 一、ARM指令模拟器环境搭…

StackOrQueueOJ3:用栈实现队列

目录 题目描述思路分析开辟队列入队列出队列 代码展示 题目描述 原题&#xff1a;232. 用栈实现队列 思路分析 有了前面的用队列实现栈的基础我们不难想到这题的基本思路&#xff0c;也就是用两个栈来实现队列&#xff0c;&#xff08;栈的实现具体参考&#xff1a;栈及其接口…