读书笔记一 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 ...
随机推荐
- 理解java设计模式之观察者模式
在生活实际中,我们经常会遇到关注一个事物数据变化的情况,例如生活中的温度记录仪,当温度变化时,我们观察它温度变化的曲线,温度记录日志等.对于这一类问题,很接近java设计模式里面的“观察者模式”,它适 ...
- Reflux 使用教程
Reflux是根据React的flux创建的单向数据流类库.Reflux的单向数据流模式主要由actions和stores组成.例如,当组件list新增item时,会调用actions的某个方法(如a ...
- VLC源码分析知识总结
1. 关于#和## 1.1).在C语言的宏中,#的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量通过替换后在其左右各加上一个双引号. 比如在早 ...
- CSS学习笔记——盒模型,块级元素和行内元素的区别和特性
今天本来打算根据自己的计划进行前端自动化的学习的,无奈早上接到一个任务需求需要新增一个页面.自从因为工作需要转前端之后,自己的主要注意力几 乎都放在JavaScript上面了,对CSS和HTML这方面 ...
- html标签之meta标签
1 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> ...
- hadoop python and Twitter
http://www.wubiaoblog.com/archives/1159 http://blog.csdn.net/anbo724 http://f.dataguru.cn/forum.php? ...
- django学习笔记二:一个项目多个App项目搭建
django充许在一个项目中存在多个app,如一个大门户网站中可以包含论坛,新闻等内容,其中每一个模块称之为一个App,也可以理解为一个个独立的小型项目最终集成在一个门户网站中最终呈现给用户 本次测试 ...
- Xcode5 配置 github
首先,要在github上,进行如下的操作: 1. github 官网 https://github.com 注册github账号. 2. 创建一个repository,命名为项目的名称,如 Gith ...
- js 数组排除重复值(string)
前提:数组中的元素类型为:string 在网上看了许多高大尚的文章,还是解决不了我的string arry 的问题,只能怪自己脑残了,上代码: <!DOCTYPE html> <ht ...
- 自定义View 一 (继承VIew重写onDraw方法)
项目:具有圆形效果的自定义View 一.继承View并重写onDraw方法 public class CircleView extends View{ private static final int ...