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

简介: 【4月更文挑战第3天】Java编程中,变量是基本存储单元,由标识符、类型和可选初始值构成,具有特定作用域。变量分为基本类型和引用类型,声明时需先定义类型,如`int num = 10;`。变量可重新赋值,类型转换分为自动(兼容类型)和强制(不兼容类型)。常量用`final`标识,如`public final int NUM = 20;`,常量值不可更改。关键词如`native`, `new`, `null`, `package`等有特殊含义。

变量:

变量是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];

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

相关文章
|
6月前
|
Oracle Java 关系型数据库
Java 简单教程
Java是跨平台、面向对象的编程语言,广泛用于企业开发、Android应用等。本教程涵盖环境搭建、基础语法、流程控制、面向对象、集合与异常处理,助你快速入门并编写简单程序,为进一步深入学习打下坚实基础。
480 0
|
7月前
|
安全 Java
Java之泛型使用教程
Java之泛型使用教程
447 10
|
7月前
|
Java
Java 数组学习笔记
本文整理Java数组常用操作:遍历、求和、查找、最值及二维数组行求和等典型练习,涵盖静态初始化、元素翻倍、去极值求平均等实例,帮助掌握数组基础与应用。
|
8月前
|
存储 缓存 Java
Java数组全解析:一维、多维与内存模型
本文深入解析Java数组的内存布局与操作技巧,涵盖一维及多维数组的声明、初始化、内存模型,以及数组常见陷阱和性能优化。通过图文结合的方式帮助开发者彻底理解数组本质,并提供Arrays工具类的实用方法与面试高频问题解析,助你掌握数组核心知识,避免常见错误。
|
8月前
|
Java 关系型数据库 数据库
Java 项目实战教程从基础到进阶实战案例分析详解
本文介绍了多个Java项目实战案例,涵盖企业级管理系统、电商平台、在线书店及新手小项目,结合Spring Boot、Spring Cloud、MyBatis等主流技术,通过实际应用场景帮助开发者掌握Java项目开发的核心技能,适合从基础到进阶的学习与实践。
1177 5
|
9月前
|
存储 Java 索引
java 数组
在 Java 中,数组是一种数据结构,用于存储多个相同类型的数据元素。数组的大小一旦创建后就不能改变,因此它是固定长度的。Java 数组是一种 对象,即使它存储的值是基本类型(如 int、double 等),它也是一个对象引用。
217 0
|
9月前
|
缓存 安全 Java
Java 并发新特性实战教程之核心特性详解与项目实战
本教程深入解析Java 8至Java 19并发编程新特性,涵盖CompletableFuture异步编程、StampedLock读写锁、Flow API响应式流、VarHandle内存访问及结构化并发等核心技术。结合电商订单处理、缓存系统、实时数据流、高性能计数器与用户资料聚合等实战案例,帮助开发者高效构建高并发、低延迟、易维护的Java应用。适合中高级Java开发者提升并发编程能力。
416 0
|
6月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
320 1
|
6月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
321 1
下一篇
开通oss服务