1.1 数组初始化

  1.1.1 java数组是静态的

java数组被初始化之后,该数组所占的内存空间、数组长度都是不可变的。

java程序中的数组必须经过初始化才可使用。

数组的初始化有两种方式:

  1) 静态初始化:初始化时由程序员显示指定每个数组元素的初始值,由系统决定数组长度。

  2) 动态初始化:初始化时程序员只指定数组长度,由系统为数组元素分配初始值。

*不要同时使用静态初始化和动态初始化方式。

java的数组变量是一种引用类型的变量,数组变量并不是数组本身,它只是指向对内存中的数组对象。

/**

javaScript这种动态语言的数组长度是可以动态改变的。

**/

  1.1.2 数组一定要初始化吗

数组对象一定要初始化,但对于数组变量来说,它并不需要进行所谓的初始化,只要让数组变量指向一个有效的数组对象,程序即可正常使用该数组变量。

  1.1.3 基本类型数组的初始化

程序直接先为数组分配内存空间,再将数组元素的值存入对应内存里。

所有局部变量都是放在桟内存里保存的,不管其是基本类型的变量,还是引用类型的变量,都是存储在各自的方法栈内存中的;但引用类型的变量所引用的对象(包括数组、普通的java对象)则总是存储在堆内存中。

引用变量本质上只是一个指针,只要程序通过引用变量访问属性。或者通过引用变量来调用方法。该引用变量就会由它所引用的对象代替。

  1.1.4 引用类型数组的初始化

引用类型数组的数组元素依然是引用类型的,因此数组元素里储存的还是引用,它指向另一块内存,这块内存里存储了该引用变量所引起的对象(包括数组和java对象)

1.2 使用数组

java语言不允许直接访问堆内存中的数据,因此无法直接访问堆内存中的数组对象,只用通过数组引用变量来访问数组。

*java语言避免直接访问堆内存中的数据可以保证程序更加健壮,如果程序直接访问并修改堆内存中的数据,可能会破坏内存中的数据完整性,从而导致程序Crash。

  1.2.1 数组元素就是变量

当一个数组初始化完成后,就相当于定义了多个类型相同的变量。

  1.2.2 没有多维数组

所谓多维数组,其实就是数组元素依然是数组的一位数组。

读书笔记一 Java程序员的基本修养(数组及其内存管理)的更多相关文章

  1. java程序员--小心你代码中的内存泄漏

    当你从c&c++转到一门具有垃圾回收功能的语言时,程序员的工作就会变得更加容易,因为你用完对象,他们会被自动回收,但是,java程序员真的不需要考虑内存泄露吗? 其实不然 1.举个例子-看你能 ...

  2. 远程办公《Remote》读书笔记:中国程序员在家上班月入过六万不是梦

    这不是一本新书,这是一本很值得中国程序员看的老书,所以我不是来做卖新书广告的:) 但它的确是一本好书,这本书在Amazon上3个business categories排第一.作者Jason Fried ...

  3. Java程序员的自我修养

    一.自我修养路线图 如图,这是笔者所走的路.且不论这路走的对不对,这个过程中行业环境会影响到你,大可不必钻牛角尖.附上这张图的目的是为了说,如果你想成为一个优秀的程序员,那么你一定要有规划.当然,别想 ...

  4. 推荐给 Java 程序员的 7 本书

    < Java 编程思想> 适合各个阶段 Java 程序员的必备读物.书中对 Java 进行了详尽的介绍,与其它语言做了对比,解释了 Java 很多特性出现的原因和解决的问题.初学者可以通过 ...

  5. Java程序员必须熟知的十项技术

    1.语法 Java程序员必须比较熟悉语法,在写代码的时候IDE的编辑器对某一行报错应该能够根据报错信息知道是什么样的语法错误并且知道任何修正. 2.命令 必须熟悉JDK带的一些常用命令及其常用选项,命 ...

  6. 【分享】熟练的Java程序员应该掌握哪些技术?

    Java程序员应该掌握哪些能力才能算是脱离菜鸟达到熟练的程度? 1.语法:Java程序员必须比较熟悉语法,在写代码的时候IDE的编辑器对某一行报错应该能够根据报错信息 知道是什么样的语法错误并且知道任 ...

  7. Java程序员必须掌握的知识

    1.语法:Java程序员必须比较熟悉语法,在写代码的时候IDE的编辑器对某一行报错应该能够根据报错信息 知道是什么样的语法错误并且知道任何修正. 2.命令:必须熟悉JDK带的一些常用命令及其常用选项, ...

  8. 《JAVA 程序员面试宝典(第四版)》读书笔记之前言

    工作五年了一直在小的软件公司混,总感觉自己的专业知识没有太大的提升.当然了中间也换了一两家公司,面试的公司就很多家,总感觉正规的软件公司(无论大小)对于基础知识的考核都非常重视,而不管你说你之前服务过 ...

  9. PHP笔记——java程序员看懂PHP程序

    PHP笔记——java程序员看懂PHP程序   php是一种服务器端脚本语言,类型松散的语言. <?php   ?>       xml风格 <script language=”ph ...

随机推荐

  1. c++引擎开发

    MyMap.erase(Itor++); //在windows下也可以Itor = MyMap.erase(Itor),但是在linux下不行. 一个是把指针定为const .就是不能修改指针.也就是 ...

  2. Hacker(四)----查看计算机的IP地址

    计算机接入Internet后,Internet就会给该计算机分配一个IP地址,若要查看该IP地址,可以借助度娘(百度,google)来实现.输入"IP地址查询"关键字,即可查看当前 ...

  3. Hello World 老调重谈

    namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Console.WriteLine( ...

  4. 找出数组中特定和数字下标(JAVA)

    比如: 输入: numbers={2, 7, 11, 15}, target=9 输出: index1=1, index2=2 public class _003TwoSum { public sta ...

  5. iOS数组、字典与json字符串的转换

    /*! * 将字典或者数组转化为JSON串 * * @param theData <#theData description#> * * @return <#return value ...

  6. Javascript DOM编程艺术JS代码

    //com function addLoadEvent (func) { var oldonload = window.onload; if (typeof window.onload != 'fun ...

  7. const参数,const返回值与const函数

    在C++程序中,经常用const 来限制对一个对象的操作,例如,将一个变量定义为const 的: const  int  n=3; 则这个变量的值不能被修改,即不能对变量赋值. const 这个关键字 ...

  8. arm mov 指令

    语法格式: mov {条件} 1目的寄存器,2源操作数 作用: MOV指令可完成从另一个寄存器.被移位的寄存器或立即数赋值到目的寄存器.其中S选项为指令的操作结果是否操作CPSR中的条件标志位,当没有 ...

  9. Java三大特征之继承(二)

    在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句 ...

  10. Js中JSON.stringify()与JSON.parse()与eval()详解及使用案例

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.因为采用独立于语言的文本格式,也使用了类似于C语言家族的习惯,拥有了这些特性使使JSON称为理想的数据交换语 ...