Java基础教程(3)-Java变量和数组

news2024/10/5 13:07:47

变量:

变量是Java程序的一个基本存储单元。变量由一个标识符,类型及一个可选初始值的组合定义。此外,所有的变量都有一个作用域,定义变量的可见性,生存期。

定义一个变量

定义一个整型变量num:

int num = 10;
num是标识符号,也叫变量名称,int是变量类型, 10是初始值可选

变量分为两种:基本类型的变量和引用类型的变量。

在Java中,所有的变量必须先声明再使用。基本的变量声明方法如下:

type identifier [ = value][,identifier [= value] …] ;

type是Java的基本类型之一,或类及接口类型的名字。标识符(identifier)是变量的名字,指定一个等号和一个值来初始化变量。
请记住初始化表达式必须产生与指定的变量类型一样(或兼容)的变量。声明指定类型的多个变量时,使用逗号将各变量分开;

变量名必须是一个合法的字符,不能以数字开头,而且不能使用java的保留字;

变量类型转换

变量的一个重要特点是可以重新赋值。不仅可以重新赋值同类型的,还可以赋值不同类型的,在赋值不同类型时,需要进行类型转换;

如果这2种类型是兼容的,那么Java将自动地进行转换。例如,把int类型的值赋给long类型的变量,这种类型转换都是可以隐式实现的。
不兼容的类型之间的转换必须使用一个强制类型转换,完成两个不兼容的类型之间的显式变换。

  • 自动类型转换(automatic type conversion)
    需要满足以下两个条件
    • 这2种类型是兼容的。
    • 目的类型数的范围比来源类型的大

数字类型,包括整数(integer)和浮点(floating-point)类型都是彼此兼容的,但是,数字类型和字符类型(char)或布尔类型(bollean)是不兼容的。字符类型(char)和布尔类型(bollean)也是互相不兼容的;

  • 不兼容类型的强制转换

所谓强制类型转换只不过是一种显式的类型变换。它的通用格式如下:
(target-type)value
其中,目标类型(target-type)指定了要将指定值转换成的类型。例如,将int型强制转换成byte型。如果整数的值超出了byte型的取值范围,它的值将会因为对byte型值域取模(整数除以byte得到的余数)而减少。

当把浮点值赋给整数类型时一种不同的类型转换发生了:截断(truncation)。你知道
整数没有小数部分。这样,当把浮点值赋给整数类型时,它的小数部分会被舍去。例如,
如果将值1.23赋给一个整数,其结果值只是1,0.23被丢弃了。当然,如果浮点值太大而不
能适合目标整数类型,那么它的值将会因为对目标类型值域取模而减少。

常量

有点变量只能被赋值一次,一旦被赋值之后就不能再次更改了;这种变量称为常量;

在Java中,使用关键字final标识常量;
例如:

public final int NUM = 20;

常量一般习惯为全部大写;通常定义在类中,可以在多个方法中使用;通常称为类常量;

关键字

在Java中,有一部分保留字是不能设置为类,变量或者方法的名称得;这部分称为Java保留字符;也叫Java关键字;

JAVA中的关键字有以下几种:

在这里插入图片描述
在这里插入图片描述

关键字含义
native由宿主系统实现的一个方法
new分配一个新对象或数组
null一个空引用
package包含类的一个包

在这里插入图片描述

transient

是被 transient 修饰的成员变量,在序列化的时候其值会被忽略,在被反序列化后, transient 变量的值被设为初始值, 如 int 型的是 0,对象型的是 null。

synchronized

synchronized 是 Java 提供的一个并发控制的关键字。主要有两种用法,分别是同步方法和同步代码块。也就是说,synchronized 既可以修饰方法也可以修饰代码块。被 synchronized 修饰的代码块及方法,在同一时间,只能被单个线程访问。

volatile

和 synchronized 不同,volatile 是一个变量修饰符,只能用来修饰变量。无
法修饰方法及代码块等。volatile 的用法比较简单,只需要在声明一个可能被多线程同时访问的变量时,使用volatile 修饰就可以了

static

static 表示“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态 static代码块
用 static 表示变量的级别,一个类中的静态变量,不属于类的对象或者实例。因
为静态变量与所有的对象实例共享,因此他们不具线程安全性。
与静态变量一样,静态方法是属于类而不是实例。一个静态方法只能使用静态变量和调用静态方法。通常静态方法通常用于想给其他的类使用而不需要创建实例。
Java 的静态块是一组指令在类装载的时候在内存中由 Java ClassLoader 执行。静态块常用于初始化类的静态变量。大多时候还用于在类装载时候创建静态资源。Java 不允许在静态块中使用非静态变量。一个类中可以有多个静态块;
Java 可以嵌套使用静态类,但是静态类不能用于嵌套的顶层。静态嵌套类的使用与其他顶层类一样,嵌套只是为了便于项目打包。

数组

数组是一种数据类型;是相同类型变量的集合,可以使用共同的名字引用它。数组可被定义为任何类型,可以是一维或多维。数组中的一个特别要素是通过下标来访问它。

定义一个数组类型的变量,使用数组类型“类型[]”,例如, int[] 。和单个基本类型变量不同,数组变量初始化必须使用;
也可以在定义数组时直接指定初始化的元素,这样就不必写出数组大小,而是由编译器自动推算数组大小。

Java的数组有几个特点:

数组所有元素初始化为默认值,整型都是 0 ,浮点型是 0.0 ,布尔型是 false ;
数组一旦创建后,大小就不可改变;

数组又可以分为一维数组和多维数组

一维数组:

一维数组(one-dimensional array)实质上是相同类型变量列表。要创建一个数组,你必须首先定义数组变量所需的类型。通用的一维数组的声明格式是:

type var-name[ ];

其中,type定义了数组的基本类型。基本类型决定了组成数组的每一个基本元素的数
据类型。这样,数组的基本类型决定了数组存储的数据类型。

运算符new被应用到一维数组时,它的一般形式如下:

array-var = new type[size];

其中,type指定被分配的数据类型,size指定数组中变量的个数,array-var 是被链接到
数组的数组变量。也就是,使用运算符new来分配数组,你必须指定数组元素的类型和数
组元素的个数。用运算符new分配数组后,数组中的元素将会被自动初始化为零。

多维数组:

在Java中,多维数组(multidimensional arrays)实际上是数组的数组。
定义多维数组变量要将每个维数放在它们各自的方括号中。
当你给多维数组分配内存时,你只需指定第一个(最左边)维数的内存即可。你可以
单独地给余下的维数分配内存。

另一种数组声明语法
声明数组还有第二种格式:

type[ ] var-name;

这里,方括号紧跟在类型标识符type的后面,而不是跟在数组变量名的后面。例如,
下面的两个定义是等价的:

int al[] = new int[3]; 
int[] a2 = new int[3];

这种数组声明格式主要是为了方便。

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

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

相关文章

解决“ImportError: DLL load failed while importing _rust: 找不到指定的程序的问题

运行 scrapy startproject wikiSpider 报错:ImportError: DLL load failed while importing _rust: 找不到指定的程序。 经过尝试 可以更换Python解释器版本来解决 1、点击crtlalts打开设置 点击项目>解释器 选择3.11解释器 (我原来报错用的3.9的解…

AI大模型日报#0421:「个性化」图像Gen4Gen框架、吴恩达亲授智能体设计模式、国内14大LLM最新评测报告

导读: 欢迎阅读《AI大模型日报》,内容基于Python爬虫和LLM自动生成。目前采用“文心一言”生成了每条资讯的摘要。 标题: 小冰徐元春:AIGC已经让普通人开始赚钱 | 中国AIGC产业峰会 摘要: 要点提炼: 在中国AIGC产业峰会上&…

冷却塔的选型方法介绍

冷却塔形式冷却塔形式冷却塔形式 冷却塔有开式冷却塔、闭式冷却塔 闭式冷却塔与开式冷却塔的区别 1)开式冷却塔的冷却原理就是,通过将循环水以喷雾方式,喷淋到玻璃纤维的填料上,通过水与空气的接触,达到换热,再有风机…

【001_音频开发-基础篇-专业术语】

001_音频开发-基础篇-专业术语 文章目录 001_音频开发-基础篇-专业术语创作背景术语表常见音源HDMI相关声音系统立体声2.1 声音系统5.1 环绕声系统5.1.2 环绕声系统7.1 环绕声系统7.1.4 环绕声系统9.1.4 环绕声系统 音质等级定义QQ音乐网易云音乐 创作背景 学历代表过去、能力…

【论文笔记】RS-Mamba for Large Remote Sensing Image Dense Prediction(附Code)

论文作者提出了RS-Mamba(RSM)用于高分辨率遥感图像遥感的密集预测任务。RSM设计用于模拟具有线性复杂性的遥感图像的全局特征,使其能够有效地处理大型VHR图像。它采用全向选择性扫描模块,从多个方向对图像进行全局建模,从多个方向捕捉大的空间…

PyTorch深度学习入门到精通指南AI写作一键生成

首先,这篇文章是基于笔尖AI写作进行文章创作的,喜欢的宝子,也可以去体验下,解放双手,上班直接摸鱼~ 按照惯例,先介绍下这款笔尖AI写作,宝子也可以直接下滑跳过看正文~ 笔尖Ai写作:…

虚拟机VMware安装与Ubuntu

1.虚拟机安装 链接:百度网盘 请输入提取码 提取码:2fr6 CG54H-D8D0H-H8DHY-C6X7X-N2KG6 2.Ubuntu下载 Download Ubuntu Desktop | Ubuntu 3.设置 如后续要下一些软件越大越好

关于Jetson空间不足的解决问题(sd卡挂载和conda更改环境安装路径)

文章目录 问题描述挂载sd卡到指定目录查看conda路径更改环境路径指定路径安装conda虚拟环境 问题描述 因为在做毕设的时候,用到了Jetson,发现这个空间太小了,如果下conda的包根本不够用,所以就想挂载sd卡,然后把环境安…

cesium sampleHeightMostDetailed 取高度

//通过经纬度异步拾取模型的高度,当模型还没下载,并不在屏幕范围内时,先下载模型,再拾取高度let c3 Cesium.Cartesian3.fromDegrees(120.134766, 30.188376, 0);let position Cesium.Cartographic.fromCartesian(c3);let promis…

spring版本介绍

Spring Framework 是一个广泛使用的 Java 平台,用于构建企业级应用程序。它提供了一个全面的编程和配置模型,支持现代 Java 应用程序的最佳实践,如依赖注入、面向切面编程以及基于注解的编程模型。自从 Spring 1.0 发布以来,已经经…

构建代理IP池并自动测试可用性的爬虫实现

目录 前言 一、认识代理IP 1. 隐藏真实IP地址 2. 提高爬虫效率 二、爬取代理IP 三、测试代理IP可用性 1. 发起HTTP请求 2. 超时检测 3. 循环请求 四、构建代理IP池 五、总结 前言 随着互联网的发展,网络爬虫在数据采集、搜索引擎、信息监控等领域发挥着…

Electron+Vue3整合-开发时整合-全部ts开发 + 一条命令启动vue3和electron两个服务

说明 本文介绍一下 Electron Vue3 的整合的中级操作。实现的效果是 : 1、一个正常的Vue3项目; 2、整合加入 Electron 框架 :开发时只执行一条命令,启动 vue 项目 后 再启动 electron;electron 的开发使用 typescript…

经典机器学习算法——决策树

优质博文:IT-BLOG-CN 树模型是机器学习中最常用的一类模型,包括随机森林、AdaBoost、GBDT(XGBoost和Lightgbm)等,基本原理都是通过集成弱学习器的即式来进一步提升准确度。这里的弱学习器包括线性模型和决策树模型&…

DC30V36V60V100V转9V、12V/1.5A方案 车灯驱动芯片IC H5028L ,高性价比,皮实耐抗

DC24V、30V、36V、60V、100V转9V、12V/1.5A方案,以及车灯驱动芯片IC,这通常涉及到电源转换和驱动电路的设计。这些方案的目标是将一个较高的直流电压(如24V、30V、36V、60V或100V)转换为较低但稳定的直流电压(如9V或12…

EigenLayer生态全解析:再质押与AVS崛起的序章

基于以太坊网络的再质押协议EigenLayer提出了利用为以太坊网络验证而质押的ETH来与其他协议共享安全性和资本效率,同时为协议参与者提供额外利息。在AVS、再质押、积分系统等概念的推动下,逐渐形成一个庞大的生态系统,从2024年初到现在EigenL…

[前端]NVM管理器安装、nodejs、npm、yarn配置

NVM管理器安装、nodejs、npm、yarn配置 NVM管理器安装 nvm(Node.js version manager) 是一个命令行应用,可以协助您快速地 更新、安装、使用、卸载 本机的全局 node.js 版本。 nvm下载地址:https://github.com/coreybutler/nvm-windows/releases 1.全部…

分类预测 | Matlab实现CNN-LSTM-SAM-Attention卷积长短期记忆神经网络融合空间注意力机制的数据分类预测

分类预测 | Matlab实现CNN-LSTM-SAM-Attention卷积长短期记忆神经网络融合空间注意力机制的数据分类预测 目录 分类预测 | Matlab实现CNN-LSTM-SAM-Attention卷积长短期记忆神经网络融合空间注意力机制的数据分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Mat…

模电期末复习(四)功率放大电路

功率放大电路 4.1 功率放大电路的主要特点4.1.1 对放大电路的要求4.1.2 放大电路中三极管的工作状态4.1.3 放大电路的分析方法 4.2 互补对称式功率放大电路4.2.1 电路的组成和工作原理4.2.2 互补对称电路主要参数的估算 4.3 采用复合管的互补对称式放大电路4.3.1 复合管的接法及…

【计算机毕业设计】理发店管理系统产品功能说明——后附源码

🎉**欢迎来到我的技术世界!**🎉 📘 博主小档案: 一名来自世界500强的资深程序媛,毕业于国内知名985高校。 🔧 技术专长: 在深度学习任务中展现出卓越的能力,包括但不限于…

绝地求生:PUBG巅峰在线人数再次突破70W:荣都、杜卡迪功不可没!

根据黑盒游戏人数显示,进入2024年后,PUBG在线人数稳定在60W左右。 绝地求生自去年世界赛结束以来,一直处于不愠不火的状态,外挂横行加上没有新游戏元素加入,日活人数仅剩余30~40W。 荣都、杜卡迪上线 而20…