读书笔记一 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 ...
随机推荐
- UVa 836 - Largest Submatrix
题目:给你一个n*n的01矩阵,求里面最大的1组成的矩形的米娜及. 分析:dp.单调队列.UVa 1330同题,仅仅是输入格式变了. 我们将问题分解成最大矩形.即求解以k行为底边的图形中的最大矩形.然 ...
- nginx默认虚拟主机
server { listen 80 default_server; server_name localhost; index index.html index.htm index.php; root ...
- JAX-RS开发 hello world
1.建立maven webapp工程aty-rest. 2. 在pom文件增加spring框架.jax-rs接口.CXF实现 <dependency> <groupId>jav ...
- SQL Server 2008 忘记sa密码的解决办法
由于某些原因,sa和windows验证都不能登录 sql server,可以用独占模式,修改sa密码先在服务管理器停止Sql Server服务,然后打开命令行,进入 SQL Server安装目录,进入 ...
- jQuery中两种阻止事件冒泡的区别
方式一:event.stopPropagation(); 方式二:return false; 但是这两种方式是有区别的.return false 不仅阻止了事件往上冒泡,而且阻止了事件本身.event ...
- js获取昨天日期
刚刚js做项目,遇到需要获取昨天日期的问题,网上找了下答案,感觉网上的答案都不太严谨,自己写了个,凑合能用吧,忘大神们抛砖指教. <script type="text/javascri ...
- select count(distinct a)
我想对一个表里面字段a的个数进行进行统计,因为字段a有重复的记录,我想排除重复的记录,该sql语句为: select count(distinct a) 链接:http://www.w3school. ...
- mvc 笔记
@{ ViewBag.Title = "主页"; } <div> 这里就是渲染Body啦.~~不需要写神马<asp:Content />,其实因为Rende ...
- mysql学习(补充)
修改表名 rename table olderName to newerName; \c 结束不执行 设置字符集 set names gbk; mysql类型 数值型 属性修饰符 zerofill u ...
- ZendStudio10 代码格式化 xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <profi ...