重新认识变量和数组
2020-01-13 16:06:09来源:博客园 阅读 ()
重新认识变量和数组
重新认识基本类型的变量
- 变量的基本逻辑——有定才有变。在人看来,固定的是名字,变化的是名字对应的值。对计算机来说,固定的是地址,变化的是它的值。
- 理解计算机如何使用内存来完成变量的功能的:
- 内存就像一堆白纸,只能通过页码编号进行访问,也就是所谓的内存地址。
- 变量就是使用一个固定地址加上这个地址对应的内存。计算机通过地址读写地址对应的内存的值,完成变量的赋值和访问值的功能。就好像根据页码编号,在指定的白纸上写字或者擦掉重写。
- 变量的名就是地址,变量的实就是地址的内存上保留的值。
理解数组的名与实
- 数组的“实”是一块地址连续的内存,就像是编号连续的一沓白纸。
- 数组的名,就是这块连续内存的地址。
- 数组的变量和基本变量一样,本身就是一个地址。但是与基本变量不一样的是,这个地址的值,是数组的“名”,也就是数组的第一个地址。
数组 = 数组变量 + 数组实体
- 数组变量[索引] 就是在数组原有地址的基础上,加上索引,获得想要的元素。
- 因此索引值从0开始,这是因为数组变量的地址就是数组第一个元素的地址。
- 另外,实际上0代表对原来位置的0个偏移量,因此也就不难理解为什么数组下标从0开始了。
数组的长度
- 数组变量.length 可以获取到数组的长度
- 数组创建后,长度不可以改变
public class WhatIsArray { public static void main(String[] args) { int[] book = new int[10]; System.out.println(book[0]); // 访问数组的第一位 System.out.println(book[1]); // 访问数组的第二位 System.out.println("数组的长度是:" + book.length); // 查询数组的长度 } }
数组索引越界和初始值
- 访问数组越界会出错,这种错误叫做 IndexOutOfBoundException
- 如果没有把握数组是否会越界,可以把索引和数组长度做比较。注意索引是从0开始的。
- 数组内每个元素都有初始值,初始值与数组的类型有关系。对于数字类型,初始值为0,对于boolean类型初始值为false。
public class IndexOutOfBoundExample { public static void main(String[] args) { int[] array = new int[5]; System.out.println(array[array.length-1]); System.out.println(array[array.length]); // array[5] 这样就会越界 } }
让变量指向新的数组
- 数组变量可以指向新的数组实体。这时候,数值变量的值就是新的数组实体的地址了。这种数组变量的赋值操作, 叫做让变量指向新的数组。
- 如果没有别的数组变量指向原来的数组实体,那么原来的数组实体就再也不可访问了,好像“消失”了一样。
public class AssignArray { public static void main(String[] args) { int[] book = new int[3]; book[0] = 9; System.out.println("book长度为" + book.length + "。book[0] = " + book[0]); book = new int[32]; System.out.println("book长度为" + book.length + "。book[0] = " + book[0]); } }
原文链接:https://www.cnblogs.com/buildnewhomeland/p/12189812.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:dubbo配置文件加载顺序
下一篇:dubbo的超时处理和配置覆盖
- Java笔记:数组,异常,泛型 2020-06-08
- 数组小Demo 2020-05-25
- 从零开始的数组,这么设计么是为什呢? 2020-05-24
- 路径变量@PathVariable/请求参数@RequestParam的绑定以及@Re 2020-05-24
- LeetCode 面试题53 - I. 在排序数组中查找数字 I 2020-05-22
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash