读书笔记一 Java程序员的基本修养(数组及其内存管理)
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程序员的基本修养(数组及其内存管理)的更多相关文章
- java程序员--小心你代码中的内存泄漏
当你从c&c++转到一门具有垃圾回收功能的语言时,程序员的工作就会变得更加容易,因为你用完对象,他们会被自动回收,但是,java程序员真的不需要考虑内存泄露吗? 其实不然 1.举个例子-看你能 ...
- 远程办公《Remote》读书笔记:中国程序员在家上班月入过六万不是梦
这不是一本新书,这是一本很值得中国程序员看的老书,所以我不是来做卖新书广告的:) 但它的确是一本好书,这本书在Amazon上3个business categories排第一.作者Jason Fried ...
- Java程序员的自我修养
一.自我修养路线图 如图,这是笔者所走的路.且不论这路走的对不对,这个过程中行业环境会影响到你,大可不必钻牛角尖.附上这张图的目的是为了说,如果你想成为一个优秀的程序员,那么你一定要有规划.当然,别想 ...
- 推荐给 Java 程序员的 7 本书
< Java 编程思想> 适合各个阶段 Java 程序员的必备读物.书中对 Java 进行了详尽的介绍,与其它语言做了对比,解释了 Java 很多特性出现的原因和解决的问题.初学者可以通过 ...
- Java程序员必须熟知的十项技术
1.语法 Java程序员必须比较熟悉语法,在写代码的时候IDE的编辑器对某一行报错应该能够根据报错信息知道是什么样的语法错误并且知道任何修正. 2.命令 必须熟悉JDK带的一些常用命令及其常用选项,命 ...
- 【分享】熟练的Java程序员应该掌握哪些技术?
Java程序员应该掌握哪些能力才能算是脱离菜鸟达到熟练的程度? 1.语法:Java程序员必须比较熟悉语法,在写代码的时候IDE的编辑器对某一行报错应该能够根据报错信息 知道是什么样的语法错误并且知道任 ...
- Java程序员必须掌握的知识
1.语法:Java程序员必须比较熟悉语法,在写代码的时候IDE的编辑器对某一行报错应该能够根据报错信息 知道是什么样的语法错误并且知道任何修正. 2.命令:必须熟悉JDK带的一些常用命令及其常用选项, ...
- 《JAVA 程序员面试宝典(第四版)》读书笔记之前言
工作五年了一直在小的软件公司混,总感觉自己的专业知识没有太大的提升.当然了中间也换了一两家公司,面试的公司就很多家,总感觉正规的软件公司(无论大小)对于基础知识的考核都非常重视,而不管你说你之前服务过 ...
- PHP笔记——java程序员看懂PHP程序
PHP笔记——java程序员看懂PHP程序 php是一种服务器端脚本语言,类型松散的语言. <?php ?> xml风格 <script language=”ph ...
随机推荐
- ubuntu python PyCharm virtualenv
1.安装virtualenv 参照:http://docs.jinkan.org/docs/flask/installation.html 2.PyCharm结合virtualenv开发应用 PyCh ...
- A - Next_permutation
首先介绍一下next_permutation函数的用途! 按照STL文档的描述,next_permutation函数将按字母表顺序生成给定序列的下一个较大的排列,直到整个序列为降序为止. prev_p ...
- 创建文件夹并解决解决unicode和ASCII码转换的问题
# -*- coding: UTF-8 -*-import sysimport timeimport os #解决unicode和ASCII码转换的问题reload(sys) #解决unicode和A ...
- Android的消息机制
一.简介 ①.我们不能在子线程中去访问UI空控件,这是时候只能通过Handler将更新UI的操作放到主线程中去执行 ②.Handler的组成:messageQueue和Looper的支持 ③.Mess ...
- 修改jquery的remote让前段显示服务器错误信息
remote: function (value, element, param) { //param 是你的rules中规定的参数,在这里肯定是remote中的参数了 //value是你输入的值 // ...
- Cable master--hdu1551(二分法)
Cable master Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tota ...
- 1207: C.LU的困惑
题目描述 Master LU 非常喜欢数学,现在有个问题:在二维空间上一共有n个点,LU每连接两个点,就会确定一条直线,对应有一个斜率.现在LU把平面内所有点中任意两点连线,得到的斜率放入一个集合中( ...
- python学习之day13
目录 JavaScript Dom jQuery JavaScript JavaScript 是世界上最流行的编程语言. 这门语言可用于 HTML 和 web,更可广泛用于服务器.PC.笔记本电脑 ...
- 服务端无法获取到Ajax发送post请求的参数
js类似于这样: function send() { var xhr = new XMLHttpRequest(); xhr.open("post", "AjaxTest ...
- Ubuntu10.4 Install DB2V9.5
1. Download the DB2V9.5 Software from URL: http://www14.software.ibm.com/webapp/download/search.jsp ...