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

Java语言程序设计篇一

Java语言概述

  • Java语言起源
  • 编程语言最新排名
  • 名字起源
  • Java语言发展历程
  • Java语言的特点
    • Java虚拟机
    • 垃圾回收
    • Java语言规范
    • Java技术简介
    • Java程序的结构
      • Java程序注意事项:
      • 注释
      • 编程风格
      • 练习

Java语言起源

  • 1990年Sun公司提出一项绿色计划。
  • 1992年语言开发成功最初取名为Oak(橡树)。
  • Java于1995年5月23日正式发布第一个版本。
  • Java随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
  • Java语言在TIOBE世界编程语言排行榜中一直处于前四位。

编程语言最新排名

在这里插入图片描述

名字起源

Java是印度尼西亚爪哇岛的英文名称,因盛产咖啡而闻名。Java语言中的许多库类名称,多与咖啡有关,如JavaBeans(咖啡豆)、NetBeans(网络豆)以及ObjectBeans (对象豆)等等。SUN和JAVA的标识也正是一杯正冒着热气的咖啡。
在这里插入图片描述

Java语言发展历程

在这里插入图片描述

Java语言的特点

1、简单易学
  Java自身小巧玲珑,对硬件的要求很低。只需要理解一些基本的概念,就可以编写适合于不同情况的应用程序。Java源于C++语言,但在Java中略去了运算符重载、多重继承、指针、联合体和结构体等概念,并实现了垃圾自动收集大大简化了程序设计者的内存管理工作。
2、面向对象(封装、继承、多态)
  Java语言吸取了C++面向对象的概念,将数据封装于类中,是完全面向对象的。除了很少的基本数据类型,所有的数据都作为对象呈现,所有的GUI构建都是对象。与C++不同,Java语言中的所有函数都必须和对象相关(这些函数被称为类方法),即使用于启动应用程序的主函数也不再是孤立的,必须捆绑在类中。
3、平台无关性(跨平台性)
  无论哪种编程语言编写的程序最终都需要操作系统和处理器来完成程序的运行,平台无关性是指软件的运行不因操作系统、处理器的变化导致程序无法运行或出现运行错误。
4、分布式
  Java的分布性包括操作分布和数据分布,其中操作分布是指在多个不同的主机上布置相关操作,而数据分布是将数据分别存放在多个不同的主机上,这些主机是网络中的不同成员。
5、可靠性
Java在编译和运行程序时,都要对可能出现的问题进行检查,以消除错误的产生。它提供自动垃圾收集进行内存管理,防止了内容丢失等动态内存分配导致的问题。Java不支持指针,从而防止了对内存的非法访问。Java提供了完善的异常处理机制,程序员可以把一组可能产生运行异常的代码放在异常处理结构中,简化了异常处理过程,增加了程序的健壮性。
6、安全性
   Java舍弃了C++的指针对存储器地址的直接操作,程序运行时,内存由操作系统分配,这样可以避免病毒通过指针侵入系统,也避免了指针操作中易产生的错误。Java对程序提供了安全管理器,防止程序的非法访问。

7、支持多线程
  多线程技术允许同一个程序中有两个以上的执行线路,即同时做两件以上的事情。Java支持多线程,允许多个线程共存于同一块内存中,且共享资源。
8、支持网络编程
   Java语言通过它所提供的类库可以处理TCP/IP,用户可以通过URL地址在网络上访问其它资源。

9、编译与解释并存
  由编译器将Java源程序编译成字节码文件,然后再由Java运行系统解释执行字节码文件(解释器将字节码再翻译成二进制码运行) 。

Java虚拟机

核心机制——Java虚拟机
JVM是一个虚拟的计算机,具有指令集并使用不同的存储区域。负责执行指令,管理数据、内存、寄存器。

  • JVM用于运行Java应用程序
  • 对于不同的平台,有不同的虚拟机
  • Java虚拟机机制屏蔽了底层运行平台的差别,实现了“一次编译,到处执行”
    在这里插入图片描述

垃圾回收

核心机制——垃圾回收

  • 垃圾回收:将不再使用的内存空间进行回收
  • 在C/C++等语言中,由程序员负责回收无用内存
  • Java不需要程序员负责回收无用的内存:它提供一种系统级线程跟踪存储空间的分配情况。并在JVM空闲时,检查并释放那些可被释放的存储空间。
  • 垃圾回收在Java程序运行过程自动进行,程序员无法精确控制和干预

Java语言规范

  • Java语言规范(Java Language Specification, JLS)Java语言的语法和语义技术性定义。
  • 应用程序接口(Application Program Interface, API)Java预定义类和接口。
  • Java开发工具包(Java Development Kit, JDK)包含软件库、编译器、解释器以及其它工具。
  • 集成开发环境(Integrated Development Environment, IDE)在一个图形界面中,完成编辑、编译、调试和在线帮助等功能。

Java技术简介

在这里插入图片描述

  • Java SE(Java Flatform, Standard Edition)
    以前称为 J2SE。它允许开发和部署在桌面环境中使用的 Java 应用程序。
  • Java EE(Java Flatform, Enterprise Edition)
    以前称为 J2EE。它帮助开发和部署可移植、健壮、可伸缩且安全的服务器端 Java 应用程序。Java EE 是在 Java SE 的基础上构建的,它提供 Web 服务、组件模型、管理和通信 API。
  • Java ME(Java Flatform, Micro Edition)
    以前称为 J2ME。它为在移动设备和嵌入式设备(比如手机、PDA、电视机顶盒和打印机)上运行的应用程序提供一个健壮且灵活的环境。

    Java程序的结构

一个复杂的程序可以由一个或多个Java源程序文件构成,每个文件中可以有多个类定义。
一般的Java源程序文件由以下三部分组成:
package语句(0句或1句);
import语句(0句或多句);
类定义(1个或多个类定义)。

Java程序注意事项:

  • Java是严格区分大小写的语言。
  • 一个程序中可以有多个类,但只能有一个类是主类。在Java应用程序中,这个主类是指包含main()方法的类。Java应用程序的主类必须有一个定义为 public static void main(String[] args) 的主方法,这个是Java应用程序执行的入口点。
  • 同一个Java程序中定义的若干类之间没有严格的逻辑关系要求,但它们通常是在一起协同工作的,每一个类都可能需要使用其他类中定义的属性或方法。

注释

  • Java程序包含三种注释
    1、多行注释:用于某行的一部分、单行或多行注释
    /* 注释内容
    注释内容
    */
    2、单行注释:用于单行或不到一行的注释
    // 注释内容
    3、文档注释:可以使用javadoc提取注释,形成文档
    /**注释内容
    注释内容
    */

编程风格

  • 良好的编程风格有利于减少错误,产生容易阅读、易于理解的代码。
  • 注释
    ——类和方法前使用文档注释
    ——方法步骤前使用行注释。
  • 命名
    -变量和方法名使用小写,如果有多个单词,第一个单词首字母小写,其它单词首字母大写。
    -类名的每个单词的首字母大写。
    -常量使用大写,单词间以下划线分隔。

练习

package shujia_test1;//This program prints Welcome to Java! 
public class Welcome {public static void main(String[] args) {System.out.println("Welcome to Java!");}
}

运行结果:
在这里插入图片描述
博主用心写,读者点关注;互动传真情,知识不迷路

相关文章:

Java语言程序设计篇一

Java语言概述 Java语言起源编程语言最新排名名字起源Java语言发展历程Java语言的特点Java虚拟机垃圾回收Java语言规范Java技术简介Java程序的结构Java程序注意事项:注释编程风格练习 Java语言起源 1990年Sun公司提出一项绿色计划。1992年语言开发成功最初取名为Oak…...

Calicoctl工具学习 —— 筑梦之路

官方文档: Calico Documentation | Calico Documentation 插件方式安装 calicoctl 工具 curl -o kubectl-calico -O -L "https://github.com/projectcalico/calicoctl/releases/download/v3.20.0/calicoctl"cp kubectl-calico /usr/bin/kubectl-calic…...

Wormhole Filters: Caching Your Hash on Persistent Memory——泛读笔记

EuroSys 2024 Paper 论文阅读笔记整理 问题 近似成员关系查询(AMQ)数据结构可以高效地近似确定元素是否在集合中,例如Bloom滤波器[10]、cuckoo滤波器[23]、quotient滤波器[8]及其变体。但AMQ数据结构的内存消耗随着数据规模的增长而快速增长…...

PyTorch学习之torch.transpose函数

PyTorch学习之torch.transpose函数 一、简介 torch.transpose 函数我们用于交换张量的维度。 二、语法 torch.transpose 函数用于交换给定张量的两个维度,其语法如下: torch.transpose(input, dim0, dim1)三、参数 input:待交换维度的张…...

Git仓库介绍

1. Github GitHub 本身是一个基于云端的代码托管平台,它提供的是远程服务,而不是一个可以安装在本地局域网的应用程序。因此,GitHub 不可以直接在本地局域网进行安装。 简介:GitHub是最流行的代码托管平台,提供了大量…...

人工智能笔记分享

文章目录 人工智能图灵测试分类分类与聚类的区别(重点)分类 (Classification)聚类 (Clustering) 特征提取 分类器(重点)特征提取为什么要进行特征提取?(重点)分类器 训练集、测试集大小&#x…...

秋招提前批面试经验分享(上)

⭐️感谢点开文章👋,欢迎来到我的微信公众号!我是恒心😊 一位热爱技术分享的博主。如果觉得本文能帮到您,劳烦点个赞、在看支持一下哈👍! ⭐️我叫恒心,一名喜欢书写博客的研究生在读…...

[AIGC] ClickHouse的表引擎介绍

ClickHouse是一种高性能的列式数据库管理系统,支持各种不同的表引擎。表引擎是数据库系统中的核心组件,它定义了数据的存储方式和访问方式。本文将介绍ClickHouse中常见的表引擎及其特点。 文章目录 一、MergeTree引擎二、ReplacingMergeTree引擎三、Sum…...

关于新装Centos7无法使用yum下载的解决办法

起因 之前也写了一篇类似的文章,但感觉有漏洞,这次想直接把漏洞补齐。 问题描述 在我们新装的Centos7中,如果想要用C编程,那就必须要用到yum下载,但是,很多新手,包括我使用yum下载就会遇到一…...

OpenEarthMap:全球高分辨率土地覆盖制图的基准数据集(开源来下载!!!)

OpenEarthMap由220万段5000张航拍和卫星图像组成,覆盖6大洲44个国家97个地区,在0.25-0.5m的地面采样距离上人工标注8类土地覆盖标签。我们提供8类标注:裸地、牧场、已开发空间、道路、树木、水、农业用地和建筑。类选择与现有的具有亚米GSD的产品和基准数…...

工作助手VB开发笔记(1)

1.思路 1.1 样式 样式为常驻前台的一个小窗口,小窗口上有三到四个按钮,为一级功能,是当前工作内容的常用功能窗口,有十个二级窗口,为选中窗口时的扩展选项,有若干后台功能,可选中至前台 可最…...

WAWA鱼曲折的大学四年回忆录

声明:本文内容纯属个人主观臆断,如与事实不符,请参考事实 前言: 早想写一下大学四年的总结了,但总是感觉无从下手,不知道从哪里开始写,通过这篇文章主要想做一个记录,并从现在的认…...

Go 依赖注入设计模式

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

使用React复刻ThreeJS官网示例——keyframes动画

最近在看three.js相关的东西,想着学习一下threejs给的examples。源码是用html结合js写的,恰好最近也在学习react,就用react框架学习一下。 本文参考的是threeJs给的第一个示例 three.js examples (threejs.org) 一、下载threeJS源码 通常我们…...

嵌入式linux面试1

1. linux 1.1. Window系统和Linux系统的区别 linux区分大小写windows在dos(磁盘操作系统)界面命令下不区分大小写; 1.2. 文件格式区分 windows用扩展名区分文件;如.exe代表执行文件,.txt代表文本文件,.…...

智能交通(3)——Learning Phase Competition for Traffic Signal Control

论文分享 https://dl.acm.org/doi/pdf/10.1145/3357384.3357900https://dl.acm.org/doi/pdf/10.1145/3357384.3357900 论文代码 https://github.com/gjzheng93/frap-pubhttps://github.com/gjzheng93/frap-pub 摘要 越来越多可用的城市数据和先进的学习技术使人们能够提…...

【扩散模型】LCM LoRA:一个通用的Stable Diffusion加速模块

潜在一致性模型:[2310.04378] Latent Consistency Models: Synthesizing High-Resolution Images with Few-Step Inference (arxiv.org) 原文:Paper page - Latent Consistency Models: Synthesizing High-Resolution Images with Few-Step Inference (…...

【PYG】pytorch中size和shape有什么不同

一般使用tensor.shape打印维度信息,因为简单直接 在 PyTorch 中,size 和 shape 都用于获取张量的维度信息,但它们之间有细微的区别。下面是它们的定义和用法: size: size 是一个方法(size())和…...

备份服务器出错怎么办?

在企业的日常运营中,备份服务器扮演着至关重要的角色,它确保了数据的安全和业务的连续性。然而,备份服务器也可能遇到各种问题,如备份失败、数据损坏或备份系统故障等。这些问题可能导致数据丢失或业务中断,给企业带来…...

数据库(表)

要求如下: 一:数据库 1,登录数据库 mysql -uroot -p123123 2,创建数据库zoo create database zoo; Query OK, 1 row affected (0.01 sec) 3,修改字符集 mysql> use zoo;---先进入数据库zoo Database changed …...

Feign-未完成

Feign Java中如何实现接口调用?即如何发起http请求 前三种方式比较麻烦,在发起请求前,需要将Java对象进行序列化转为json格式的数据,才能发送,然后进行响应时,还需要把json数据进行反序列化成java对象。 …...

# [0705] Task06 DDPG 算法、PPO 算法、SAC 算法【理论 only】

easy-rl PDF版本 笔记整理 P5、P10 - P12 joyrl 比对 补充 P11 - P13 OpenAI 文档整理 ⭐ https://spinningup.openai.com/en/latest/index.html 最新版PDF下载 地址:https://github.com/datawhalechina/easy-rl/releases 国内地址(推荐国内读者使用): 链…...

Open3D 点云CPD算法配准(粗配准)

目录 一、概述 二、代码实现 2.1关键函数 2.2完整代码 三、实现效果 3.1原始点云 3.2配准后点云 一、概述 在Open3D中,CPD(Coherent Point Drift,一致性点漂移)算法是一种经典的点云配准方法,适用于无序点云的非…...

04-ArcGIS For JavaScript的可视域分析功能

文章目录 综述代码实现代码解析结果 综述 在数字孪生或者实景三维的项目中,视频融合和可视域分析,一直都是热点问题。Cesium中,支持对阴影的后处理操作,通过重新编写GLSL代码就能实现视域和视频融合的功能。ArcGIS之前支持的可视…...

Nestjs基础

一、创建项目 1、创建 安装 Nest CLI(只需要安装一次) npm i -g nestjs/cli 进入要创建项目的目录,使用 Nest CLI 创建项目 nest new 项目名 运行项目 npm run start 开发环境下运行,自动刷新服务 npm run start:dev 2、…...

DDL:针对于数据库、数据表、数据字段的操作

数据库的操作 # 查询所有数据 SHOW DATABASE; #创建数据库 CREATE DATABASE 2404javaee; #删除数据库 DROP DATABASE 2404javaee; 数据表的操作 #创建表 CREATE TABLE s_student( name VARCHAR(64), s_sex VARCHAR(32), age INT(3), salary FLOAT(8,2), c_course VARC…...

昇思学习打卡-5-基于Mindspore实现BERT对话情绪识别

本章节学习一个基本实践–基于Mindspore实现BERT对话情绪识别 自然语言处理任务的应用很广泛,如预训练语言模型例如问答、自然语言推理、命名实体识别与文本分类、搜索引擎优化、机器翻译、语音识别与合成、情感分析、聊天机器人与虚拟助手、文本摘要与生成、信息抽…...

Java中 普通for循环, 增强for循环( foreach) List中增删改查的注意事项

文章目录 俩种循环遍历增加删除1 根据index删除2 根据对象删除 修改 俩种循环 Java中 普通for循环, 增强for循环( foreach) 俩种List的遍历方式有何异同,性能差异? 普通for循环(使用索引遍历): for (int…...

昇思25天学习打卡营第19天|LSTM+CRF序列标注

概述 序列标注指给定输入序列,给序列中每个Token进行标注标签的过程。序列标注问题通常用于从文本中进行信息抽取,包括分词(Word Segmentation)、词性标注(Position Tagging)、命名实体识别(Named Entity Recognition, NER)等。 条件随机场&#xff08…...

微服务: 初识 Spring Cloud

什么是微服务? 微服务就像把一个大公司拆成很多小部门,每个部门各自负责一块业务。这样一来,每个部门都可以独立工作,即使一个部门出了问题,也不会影响整个公司运作。 什么是Spring Cloud? Spring Cloud 是一套工具包&#x…...