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 ...
随机推荐
- storm单机环境部署
前面说过storm集群的部署,这篇主要介绍storm单机环境部署,其实他们之间很类似,就是将之前配置文件中所有的集群条目改成本机的地址即可,部署之前应该按前面solr和zookeeper单机环境部署那 ...
- perl 引用(一)
1. 普通变量引用 variable reference 引用就好比C语言的指针,引用变量存储被引用变量的地址.赋值时注意要在变量前加上 \;使用时要多加一个 $ . 当然,引用也可以成为简单变量,可 ...
- 1. javacript高级程序设计-JavaScript简介
JavaScript诞生于1995年,由Netscape公司布兰登·艾奇开发,JavaScript主要包括三个部分: (1). ECMAScript,由ECMA-262定义,提高核心语言功能 (2). ...
- 如何:使用PicturBox实现类似淘宝网站图片的局部放大功能
转载至http://xuzhihong1987.blog.163.com/blog/static/267315872011822113131823/ 概要: 本文将讲述如何使用PictureBox控件 ...
- 【XLL API 函数】xlGetBinaryName
用于返回由 xlDefineBinaryName 函数定义的名称数据句柄.定义的名称和工作簿一起保存,我们可以在任意时间访问这个名称. 原型 Excel12(xlGetBinaryName, LPXL ...
- java课后作业
课后作业之字串加密: 设计思想: 1.输入要加密的英文子串str 2.定义num=str的字符串长度 3.将字符串转化为单个字符 4.每个字符+3,向后移3个 5.定义str1,将新得到的每个字符加到 ...
- 使用连发互联空间+SQLyog 设置我们的数据库链接
在我使用SQLyog(小海豚)管理我的数据库的时候,主机空间为连发互联的(自己做着玩,这个便宜),遇到一些坑,自己写一下记录一下,省的下次忘记了又浪费时间. 首先你要有连发互联的空间,可以淘宝购买,连 ...
- stdafx.h的作用
// stdafx.h : include file for standard system include files,// or project specific include files th ...
- IDT5V49EE904资料学习
一.特性: 1.4个内部PLL 2.内部非易失EEPROM. 3.最快400k的I2C串行接口. 4.输入时钟范围:1M—200M. 5.输出时钟范围:4.9k—200M 6.输入晶振参数带有在线可编 ...
- mysql 源码安装
yum install -y gcc gcc-c++ autoconf libjpeg libjpeg-devel perl perl-CPAN libpng libpng-devel freetyp ...