java 数组的创建 与 赋值
1.2.2 数组类型
基本类型的数组有3种赋值形式,如下所示:
第1种和第2种都是预先知道数组的内容,而第3种是先分配长度, 然后再给每个元素赋值。第3种形式中,即使没有给每个元素赋值,每个元素也都有一个默认值,这个默认值跟数组类型有关,数值类型的值 为0,boolean为false,char为空字符。
数组长度可以动态确定,如下所示:
数组长度虽然可以动态确定,但定了之后就不可以变。数组有一个 length属性,但只能读,不能改。还有一个小细节,不能在给定初始值 的同时给定长度,即如下格式是不允许的:
可以这么理解,因为初始值已经决定了长度,再给个长度,如果还 不一致,计算机将无所适从。
数组类型和基本类型是有明显不同的,一个基本类型变量,内存中 只会有一块对应的内存空间。但数组有两块:一块用于存储数组内容本身,另一块用于存储内容的位置。用一个例子来说明,有一个int变量 a,以及一个int数组变量arr,其代码、变量对应的内存地址和内存内容 如表1-3所示。
基本类型a的内存地址是1000,这个位置存储的就是它的值100。数组类型arr的内存地址是2000,这个位置存储的值是一个位置3000,3000 开始的位置存储的才是实际的数据“1,2,3”。
为什么数组要用两块空间? 不能只用一块空间吗?我们来看下面 这段代码:
这段代码中,arrA初始的长度是3,arrB的长度是4,后来将arrB的 值赋给了arrA。如果arrA对应的内存空间是直接存储的数组内容,那么 它将没有足够的空间去容纳arrB的所有元素。
用两块空间存储就简单得多,arrA存储的值就变成了和arrB的一 样,存储的都是数组内容{4,5,6,7}的地址,此后访问arrA就和arrB 是一样的了,而arrA{1,2,3}的内存空间由于不再被引用会进行垃圾回收,如下所示:
由上也可以看出,给数组变量赋值和给数组中元素赋值是两回事, 给数组中元素赋值是改变数组内容,而给数组变量赋值则会让变量指向 一个不同的位置。
上面我们说数组的长度是不可以变的,不可变指的是数组的内容空间,一经分配,长度就不能再变了,但可以改变数组变量的值,让它指向一个长度不同的空间,就像上例中arrA后来指向了arrB一样。
给变量赋值就是将变量对应的内存空间设置为一个明确的值,有了 值之后,变量可以被加载到CPU,CPU可以对这些值进行各种运算,运 算后的结果又可以被赋值给变量,保存到内存中。数据可以进行哪些运 算?如何进行运算呢?我们下节介绍。
参考目录
绝大多数内容来自于:Java编程的逻辑 作者: 马俊昌(1.2 赋值)
Java官方文档
https://docs.oracle.com/javase/specs/index.html
java 数组的创建 与 赋值相关推荐
- Java数组 (一) 创建数组及数组的简单使用
引言: 我们之前创建两个整型变量可以用 int a = 10;int b = 20; 创建4个整型变量,也可以一行行定义变量, 假设我现在要一次性创建 1w 个整型变量,这种时候我们就需要用到数组这个 ...
- JAVA数组的3种赋值方式
基本数据类型数组的3种赋值方式 第一种赋值方式 int[] arr = {1,2,3}; 第二种赋值方式 int[] arr2 = new int[]{1,2,3}; 第三种赋值方式 int[] ar ...
- java数组练习题---创建元素不重复的数组
题目:创建一个8元素的数组并输出,元素在1-10之间随机生成,且不相同: 题目表面上看似简单,实际却有一个最大的难点-----如何保证元素不重复: 因为元素是随机生成的且逐一赋值的,所以就可以在这一阶 ...
- Java 数组、List初始化赋值
1 数组初始化赋值 //第一种初始化赋值方式 String[] strs1={"1","2"};//第二种初始化赋值方式 String[] strs2=new ...
- java创建数组并赋值_「java 数组」Java创建数组的方法 - seo实验室
java 数组 最近学java,一点小心得,希望和大家分享一下,第一次写文章,写的不好希望大家谅解,当然我也会尽力写好这篇文章! Java创建数组的方法大致有三种 说明:这里以int为数据类型以arr ...
- java 数组赋值_自学JAVA每日记录(10)-欢迎指点欢迎共勉
接上一篇 编程练习:编写一个JAVA程序,创建指定长度的 int 型数组,并生成 100 以内随机数为数组中的每个元素赋值,然后输出数组 要求: 1. 要求通过定义带参带返回值的方法来实现 2. 通过 ...
- Java数组及二维数组初始化与赋值方法总结
一维数组初始化 1.定义数组直接赋值 int a[]= {1,2,3,4,5}; 2.用new在数组中创建元素 int a[]=new int[]{1,2,3}; 注意:后面的[]不要忘了 3.创建指 ...
- java 数组总结(赋值,反转,添加,查找)
数组初始化 import java.util.Scanner;public class ArrayTest1{public static void main(String[] args) {//数组定 ...
- Java数组:一维数组的定义和赋值
当数组中每个元素都只带有一个下标时,这种数组就是"一维数组".一维数组(one-dimensional array)实质上是一组相同类型数据的线性集合,是数组中最简单的一种数组. ...
最新文章
- 【美国】谷歌重返机器人背后有何深意?
- 3gpp协议_【5G学习笔记】3GPP 5G协议分类清单大全
- 第四周课程总结实验报告(二)
- 13、Power Query-逆透视列的解析(上)
- 腾讯产品课观后感之定位2018-08-22
- 查找数组B中不在数组A中的元素
- java 子进程id,Java程序如何获得自己的进程ID?
- 编程使用资源文件实现多语言页面(In Action)
- mysql q4m_Mysql Q4M 队列操作封装(二)
- Educational Codeforces Round 51: F. The Shortest Statement(最短路+LCA)
- 北京图王软件开发有限公司产品介绍
- [翻译]ChipMunk 2D 游戏重力引擎
- HDFS- 架构图详细解析
- 伪分布式Hbase安装和配置
- 吴恩达 深度学习 2021版 笔记
- 计算方法实验(二):龙贝格积分法
- 天若OCR文字识别本地版
- Android 汇率换算对比小工具
- [513]linux设置开机自启动
- layer.open打不开弹窗的问题