Practical Java (一)

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

时间: 2024-08-11 18:33:09

Practical Java (一)的相关文章

《practical Java》读书笔记

题记: 花了一周把Peter Haggar的<practical Java>看了遍,有所感悟,年纪大了, 写下笔记,方便日后查看.也希望有缘之人可以看看,做个渺小的指路人. 不足之处还望指正. 概述: 全书分为六个部分,包括一般技术.对象与相等性.异常处理.性能.多线程.对象. 一般技术:举例了几个java常见错误用法的说明和解释,诸如array和vector的选择,多态与instanceof等等 对象和相等性则:针对equals的详细说明,是迄今本人见过对equals理解最深的一本书了,其中

Practical Java

声明:原创作品,转载时请注明文章来自SAP师太博客,并以超链接形式标明文章原始出处,否则将追究法律责任! 实践1.    参数是以by value方式而非by reference方式传递 一个普通存在的误解是:java中的参数是以 by value 方式传递.其实不是这样的,参数是以 by value 方式传递的.请看示例: class PassByValue { public static void modifyPoint(Point pt, int j) { pt.setLocation(5

Java 中 Vector、ArrayList、List 使用深入剖析

线性表,链表,哈希表是常用的数据结构,在进行Java开发时,JDK已经为我们提供了一系列相应的类来实现基本的数据结构.这些类均在java.util包中.本文试图通过简单的描述,向读者阐述各个类的作用以及如何正确使用这些类. Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack └Set Map ├Hashtable ├HashMap └WeakHashMap Collection接口 Collection是最基本的集合接口,一个C

java基本数据类型复习

1.基本取值范围及对应封装器(参考:http://www.cnblogs.com/Free-Thinker/p/4573068.html): 简单类型 boolean byte char short Int long float double void 二进制位数 1 8 16 16 32 64 32 64 -- 封装器类 Boolean Byte Character Short Integer Long Float Double Void 基本类型byte 二进制位数:Byte.SIZE最小值

java字节码理解-入门

前记:作为一名JAVA Developer,每次打开Eclipse,查找一个没有源码的类时,都会看到一个这样的画面: 大意是:这个jar文件,没有附带源码.紧接着后面的就看不懂了,很好奇下面的一部分是什么东东. 原来是大名鼎鼎的java bytecode,那么如何读懂这些天书一样的代码呢?在IBM的网站上有一篇好文章,特地抄了下来. http://www.ibm.com/developerworks/library/it-haggar_bytecode/index.html Java bytec

Java集合类详解

集合类说明及区别Collection├List│├LinkedList│├ArrayList│└Vector│ └Stack└SetMap├Hashtable├HashMap└WeakHashMap Collection接口 Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements).一些 Collection允许相同的元素而另一些不行.一些能排序而另一些不行.Java SDK不提供直接继承自Collection的类,J

java集合类说明及区别

Collection├List│├LinkedList│├ArrayList│└Vector│ └Stack└SetMap├Hashtable├HashMap└WeakHashMap Collection接口 Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements).一些 Collection允许相同的元素而另一些不行.一些能排序而另一些不行.Java SDK不提供直接继承自Collection的类,Java SDK提

Java ArrayList、Vector和LinkedList等的差别与用法(转)

Java ArrayList.Vector和LinkedList等的差别与用法(转) ArrayList 和Vector是采取数组体式格式存储数据,此数组元素数大于实际存储的数据以便增长和插入元素,都容许直接序号索引元素,然则插入数据要设计到数组元素移动等内存操纵,所以索引数据快插入数据慢,Vector因为应用了synchronized办法(线程安然)所以机能上比ArrayList要差,LinkedList应用双向链表实现存储,按序号索引数据须要进行向前或向后遍历,然则插入数据时只须要记录本项的

java中的各个数据结构区别

ArrayList 和Vector是采用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,都允许直接序号索引元素,但是插入数据要设计到数组元素移动等内存操作,所以索引数据快插入数据慢,Vector由于使用了synchronized方法(线程安全)所以性能上比ArrayList要差,LinkedList使用双向链表实现存储,按序号索引数据需要进行向前或向后遍历,但是插入数据时只需要记录本项的前后项即可,所以插入数度较快! 线性表,链表,哈希表是常用的数据结构,在进行Java开发时