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];

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

相关文章
|
2月前
|
存储 Java
# 【Java全栈学习笔记-U1-day02】变量+数据类型+运算符
本篇笔记主要围绕Java全栈学习的第二天内容展开,涵盖了变量、数据类型、运算符以及Scanner类的应用。首先介绍了变量的概念与命名规范,以及如何定义和使用变量;接着详细讲解了Java中的基本数据类型,包括整型、浮点型、字符型、布尔型等,并通过实例演示了数据类型的运用。随后,深入探讨了各类运算符(赋值、算术、关系、逻辑)及其优先级,帮助理解表达式的构成。最后,介绍了如何利用Scanner类实现用户输入功能,并通过多个综合示例(如计算圆面积、购物打折、变量交换及银行利息计算)巩固所学知识。完成相关作业将进一步加深对这些基础概念的理解与实践能力。
45 12
|
2月前
|
Java 开发者
重学Java基础篇—Java类加载顺序深度解析
本文全面解析Java类的生命周期与加载顺序,涵盖从加载到卸载的七个阶段,并深入探讨初始化阶段的执行规则。通过单类、继承体系的实例分析,明确静态与实例初始化的顺序。同时,列举六种触发初始化的场景及特殊场景处理(如接口初始化)。提供类加载完整流程图与记忆口诀,助于理解复杂初始化逻辑。此外,针对空指针异常等问题提出排查方案,并给出最佳实践建议,帮助开发者优化程序设计、定位BUG及理解框架机制。最后扩展讲解类加载器层次与双亲委派机制,为深入研究奠定基础。
95 0
|
3月前
|
JavaScript NoSQL Java
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
258 96
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
|
2月前
|
人工智能 Java
Java 中数组Array和列表List的转换
本文介绍了数组与列表之间的相互转换方法,主要包括三部分:1)使用`Collections.addAll()`方法将数组转为列表,适用于引用类型,效率较高;2)通过`new ArrayList<>()`构造器结合`Arrays.asList()`实现类似功能;3)利用JDK8的`Stream`流式计算,支持基本数据类型数组的转换。此外,还详细讲解了列表转数组的方法,如借助`Stream`实现不同类型数组间的转换,并附带代码示例与执行结果,帮助读者深入理解两种数据结构的互转技巧。
Java 中数组Array和列表List的转换
|
2月前
|
存储 监控 Java
《从头开始学java,一天一个知识点》之:数组入门:一维数组的定义与遍历
**你是否也经历过这些崩溃瞬间?** - 看了三天教程,连`i++`和`++i`的区别都说不清 - 面试时被追问"`a==b`和`equals()`的区别",大脑突然空白 - 写出的代码总是莫名报NPE,却不知道问题出在哪个运算符 这个系列就是为你打造的Java「速效救心丸」!我们承诺:每天1分钟,地铁通勤、午休间隙即可完成学习;直击痛点,只讲高频考点和实际开发中的「坑位」;拒绝臃肿,没有冗长概念堆砌,每篇都有可运行的代码标本。明日预告:《多维数组与常见操作》。 通过实例讲解数组的核心认知、趣味场景应用、企业级开发规范及优化技巧,帮助你快速掌握Java数组的精髓。
78 23
|
2月前
|
设计模式 缓存 Java
重学Java基础篇—Java对象创建的7种核心方式详解
本文全面解析了Java中对象的创建方式,涵盖基础到高级技术。包括`new关键字`直接实例化、反射机制动态创建、克隆与反序列化复用对象,以及工厂方法和建造者模式等设计模式的应用。同时探讨了Spring IOC容器等框架级创建方式,并对比各类方法的适用场景与优缺点。此外,还深入分析了动态代理、Unsafe类等扩展知识及注意事项。最后总结最佳实践,建议根据业务需求选择合适方式,在灵活性与性能间取得平衡。
116 3
|
2月前
|
安全 IDE Java
重学Java基础篇—Java泛型深度使用指南
本内容系统介绍了Java泛型的核心价值、用法及高级技巧。首先阐述了泛型在**类型安全**与**代码复用**中的平衡作用,解决强制类型转换错误等问题。接着详细讲解了泛型类定义、方法实现、类型参数约束(如边界限定和多重边界)、通配符应用(PECS原则)以及类型擦除的应对策略。此外,还展示了泛型在通用DAO接口、事件总线等实际场景的应用,并总结了命名规范、边界控制等最佳实践。最后探讨了扩展知识,如通过反射获取泛型参数类型。合理运用泛型可大幅提升代码健壮性和可维护性,建议结合IDE工具和单元测试优化使用。
48 1
|
2月前
|
安全 IDE Java
重学Java基础篇—Java Object类常用方法深度解析
Java中,Object类作为所有类的超类,提供了多个核心方法以支持对象的基本行为。其中,`toString()`用于对象的字符串表示,重写时应包含关键信息;`equals()`与`hashCode()`需成对重写,确保对象等价判断的一致性;`getClass()`用于运行时类型识别;`clone()`实现对象复制,需区分浅拷贝与深拷贝;`wait()/notify()`支持线程协作。此外,`finalize()`已过时,建议使用更安全的资源管理方式。合理运用这些方法,并遵循最佳实践,可提升代码质量与健壮性。
85 1
|
2月前
|
存储 Java 索引
Java 复制数组
本文介绍了Java中数组的基础知识与常用操作,包括数组的概念、创建、访问元素、遍历、复制、排序和搜索等方法。同时详细讲解了数组的五种赋值方式,并通过代码示例演示了求总和平均值、最大最小值、升序降序排序及Arrays类的常用方法。内容深入浅出,适合初学者学习掌握Java数组的核心功能与应用场景。
|
2月前
|
存储 传感器 缓存
java变量与数据类型:整型、浮点型与字符类型
### Java数据类型全景表简介 本文详细介绍了Java的基本数据类型和引用数据类型,涵盖每种类型的存储空间、默认值、取值范围及使用场景。特别强调了`byte`、`int`、`long`、`float`、`double`等基本类型在不同应用场景中的选择与优化,如文件流处理、金融计算等。引用数据类型部分则解析了`String`、数组、类对象、接口和枚举的内存分配机制。
91 15

热门文章

最新文章