Practical Java (一)关于reference
Practice 1, 4, 7, 8
1.
参数传递:by value or by reference
变量型别:reference 和 primitive
Java中的变量分为两种:reference type和primitive type(built-in type)
只有少数最常用的变量是primitive type,这些primitive type又会有对应的外覆类(wrapper class)
| primitive types | wrapper class |
| boolean | Boolean |
| char | Character |
| byte | Byte |
| short | Short |
| int | Integer |
| long | Long |
| float | Float |
| double | Double |
我们平时看到的class变量,本身存储的都是指针(地址)
所以在函数调用传递参数的时候,如果遇到reference type传递的都是指针
如果遇到的是primitive type,传递的就是实际的值
2.
array 和 Vector
2.1 array
新建array
int[] a = new int[N];
对比C++中的动态数组,array有额外功能。一旦index超出数组范围就会在运行期产生ArrayIndexOutOfBoundsException异常。
array之内不同型别的元素的缺省值
| type | default |
| boolean | false |
| char | '\u0000' |
| byte | 0 |
| short | 0 |
| int | 0 |
| long | 0 |
| float | 0.0 |
| double | 0.0 |
| object reference | null |
对比array,当更多元素被加入vector并且超出容量时,其体积会动态增长;在某个元素被删除之后,后面的元素会依次前移。
vector运用了[以java.lang.Object为元素型别]的array作为其底部结构,所以vector只能容纳object references,不能容纳primitive type
3.
释放内存
Java垃圾回收机制(garbage collection)负责回收不再被使用的内存。程序员不需要显式释放内存。但是可以将不再使用的reference设为null,以协助垃圾回收器取回内存。
需要时也可以显示调用垃圾回收器,system.gc();
最后是自己想的一部分
关于wrapper class和别的类是不太一样的
它具有一些primitive type的属性
比如传参的时候,Integer x = 10,传入x,然后修改 x = 0; 函数调用完后,输出x还是10;
即使修改时用x = new Integer(0);调用后的输出还是不变,为10
其他还有一些特殊性,见http://blog.csdn.net/apei830/article/details/4533828
Practical Java (一)关于reference的更多相关文章
- 《practical Java》读书笔记
题记: 花了一周把Peter Haggar的<practical Java>看了遍,有所感悟,年纪大了, 写下笔记,方便日后查看.也希望有缘之人可以看看,做个渺小的指路人. 不足之处还望指 ...
- Java引用机制——reference
所谓引用传递就是指将堆内存空间的使用权交给多个栈内存空间. 例子<1> public class Aliasing { int temp = 30; public static void ...
- Practical Java
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- java中的Reference
这两天又重新学习了一下Reference,根据网上的资源做了汇总. Java中的引用主要有4种: 强引用 StrongReference: Object obj = new Object(); obj ...
- java.lang.ref.Reference<T>
//看之前先要知道java里面的四种引用.package com.zby.ref; import sun.misc.Cleaner; /** * 引用对象的抽象基础类.这个类定义了所有引用对象的公共操 ...
- Java中的Reference类使用
Java 2 平台引入了 java.lang.ref 包,这个包下面包含了几个Reference相关的类,Reference相关类将Java中的引用也映射成一个对象,这些类还提供了与垃圾收集器(gar ...
- Practical JAVA(三)关于final
Practice 2,3 final 作用于by value变量时,一旦赋值不可更改 作用于by reference变量时,一旦不能指向第二个对象,但是可以改变对象的内容.比如不可以第二次=new x ...
- Does Java pass by reference or pass by value?(Java是值传递还是引用传递) - 总结
这个话题一直是Java程序员的一个热议话题,争论不断,但是不论是你百度搜也好还是去看官方的文档中所标明的也好,得到的都只有一个结论:Java只有值传递. 在这里就不贴代码细致解释了,让我们来看看一些论 ...
- 你不可不知的Java引用类型之——Reference源码解析
定义 Reference是所有引用类型的父类,定义了引用的公共行为和操作. reference指代引用对象本身,referent指代reference引用的对象,下文介绍会以reference,ref ...
随机推荐
- ACM/ICPC 之 DP-浅谈“排列计数” (POJ1037)
这一题是最近在看Coursera的<算法与设计>的公开课时看到的一道较难的DP例题,之所以写下来,一方面是因为DP的状态我想了很久才想明白,所以借此记录,另一方面是看到这一题有运用到 排列 ...
- MAC OS X 常用通用快捷键
注:由于使用的是Windows键盘,习惯了Ctrl + c/v复制粘贴,所以修改了修饰键,Command(⌘)键和Control(^)键互换,以下的Ctrl键均为Command键,对应键盘上的实际左C ...
- html 中绑定事件 this的指向
var m=function(){ alert(2); } var obj={ A:function(){ }, m:function(){ ...
- bat批处理设置Java JDK系统环境变量文件
自己修改第3行的Java安装目录就可以设置JAVA_HOME, classPath,追加到PATH的最前面 JAVA_HOME=C:\Program Files\Java\jdk1.6.0_10 cl ...
- JavaScript高级程序设计学习笔记--变量、作用域和内存问题
传递参数 function setName(obj){ obj.name="Nicholas"; obj=new object(); obj.name="Greg&quo ...
- nohup后台运行jar
nohup 用途:LINUX命令用法,不挂断地运行命令. 语法:nohup Command [ Arg ... ] [ & ] 描述:nohup 命令运行由 Command 参数和任何相关 ...
- 让ar执行queryall和queryrow方法返回数组
让ar执行queryall和queryrow方法返回数组 <?phpnamespace common\components;use \CActiveRecord;use \Yii;use \CD ...
- 项目之solr全文搜索工具的安装
1. Solr简介 Solr是一个基于Lucene的Java搜索引擎服务器.Solr 提供了层面搜索.命中醒目显示并且支持多种输出格式(包括 XML/XSLT 和 JSON 格式).它易于安装和配置, ...
- python异步爬虫
本文主要包括以下内容 线程池实现并发爬虫 回调方法实现异步爬虫 协程技术的介绍 一个基于协程的异步编程模型 协程实现异步爬虫 线程池.回调.协程 我们希望通过并发执行来加快爬虫抓取页面的速度.一般的实 ...
- PHP之MVC学习
代码架构进货过程 one,混编 嵌入式脚本语言PHP html与php混编的编码方式 two,显示和逻辑相分离 最后,需要将显示和逻辑的结果放在一起! 需要在 php页面,将html代码 载入才可以! ...