编程语言

img javafish

看"java编程思想"笔记

发表于2004/11/2 18:58:00  976人阅读

分类: java基础

这几天因为工作需要将"java编程思想"(三)再看了一遍,在看的过程中间将以前一些没有注意的细节做了下笔记,里面所写的很多是我自己归纳总结的,如果有不对,敬请指正.现在将其作为我的第一篇文章发表出来,后面的我会陆续发表出来,谢谢捧场.

第二章

1.        java之间都是引用(reference),通过new关键字创建对象

2.        原始类型(primitive boolean(false), char(‘/u0000’), byte(0), short(0), int(0), long(0L), float(0.0F), double(0.0d),void

3.        java中间参数的作用域在{}之间。不能有变量覆盖{int x; {int x}}java中非法,在java语言中的任何地方都可以定义变量。

4.        当原始类型的变量为类的成员时,有默认的值。但是非类成员变量没有默认值,否则出现编译时错误

5.        java中,方法是类的一部份,因此,你需要通过对象来调用方法,如果对象错了,就会出现编译错误,在调用方法时,传递对象的时候,实际上是传递引用。

6.        方法如果没有返回值,必须void类型

7.         java中两者注释方式。/*  多行注释  */   //单行注释,注释文档 /**   */Javadoc只会处理publicprotect的成员和注释文档。

第三章

1.        java中给primitive变量赋值比较简单。但是给对象赋值这里是reference的拷贝,在方法调用调用的时候也是传递的reference

2.        ==和!=比较的是对象的引用,不是对象的值,要比较两个对象的值。需要使用equals

3.        java中,逻辑运算符只能应用于逻辑值上,不能用在非逻辑值上。

4.        位运算符:&,^,| ,~.前面几个可以和=运算符结合使用,<<,>>,java中有>>>(无符号右移),这个是cc++中没有的,如果对charbyteshort进行位移,他们先变成int类型,结果也是int类型,Long型不变。移位符号可以和=结合使用,例如<<=,>>=,>>>=

5.        如果表达式以string开始,那么后面的变量比较是string”a+b+c”+10+20+30

6.        对原始类型可以转换。但是对boolean不能转换

7.        java中间,十六进制的数字使用0x开始,后面接数字或a-f的大小写字母。八进制使用0开始,在数字后面跟lL表示long类型的数据,加fF表示float类型的数据。加d或者D表示double类型的数据 (整数例如12默认是int类型,带小数点的(12.34)默认是double类型)

8.        如果数据类型比int小的数据(bytecharshort)在进行算术运算和位运算时。会提升为int类型,所以将一个结果给小类型时,需要转换

9.        java中没有sizeof(),因为在java中,各个类型的数据大小固定

10.    Math中的random()方法产生的double数小于1 ,大于等于0

11.    gotojava中的保留字。但是并没有使用起来,我们可以使用breakcontinue来完成一部份goto 的功能。这个并不是跳转,而是跳出循环的一种方法。他们的相同之处就是他们都使用了标签(label

12.    floatdouble类型的数据变为int类型时,是去掉他们的小数部分,例如int(36.7)=36

第四章

1.        构造函数是一种特殊的方法,它没有返回值,这一点和void的方法有本质上的区别,void方法什么都不返回,这个是由你决定的,你也可以在其中返回值。但是构造函数则什么都不返回,你别无选择(new表达式确实返回这个新创建对象的引用,但是构造函数本身并不返回值)

2.        每一个经过重载的方法必须有一个唯一的参数类型的列表。

3.        如果参数是原始类型,在它找不到对应的类型的时候,会进行类型的提升。但是不能自动变为类型比它小的类型

4.        如果我们没有定义构造函数(不管有没有参数的),编译器将为我们创建一个默认的无参数的构造函数。但是只要我们自己定义了一个构造函数(不管有没有参数),编译器就不会在提供默认的构造函数

5.        this只能用在方法内部,你可以把this对象的reference当作任何对象的reference,但是在构造函数中,this表示调用匹配参数的构造函数。

6.        java中,对象不一定被垃圾回收器回收,垃圾回收不是析构。Finalize方法存在的原因是因为java可以调用本地方法。在本地方法中可能来分配内存。

7.        变量的初始化次序:类变量的初始化优于任何方法,甚至在构造方法的前面。对于static变量,也是一样的,如果变量是原始类型,那么它得到一个标准的原始类型的初始值,如果是一个对象的引用,除非你创建了一个新的对象给这个引用,否则就是nullStatic变量只有在需要的时候才会进行初始化,并且在这个类的构造函数和所有其他普通变量之前调用,static之后就不再进行初始化了。就是先初始化static变量,再初始化非static变量

8.        java中定义数组时,不允许指定数组的大小,int a[];  int [] a;  int a[]={1,2,3,4,5},数组可以直接赋值,int a[],int b[],  a=b;是正确的。对数组我们可以使用计算长度的函数。Length。如果在写程序的时候不知道有多少个元素,可以在程序运行时通过new来直接创建数组中的元素,int a[] a=new int[10];当然,数组定义和数组的初始化可以合并在一起:int a[]=new int[10];如果你创建的数组不是原始类型,而是对象数组,那么必须使用newInteger b[]={new Integer(1), new Integer(2), new Integer(3)};第二种方式:Integer b[]=new Integer{new Integer(1), new Integer(2), new Integer(3)}

9.        多维数组的处理。可以先确定一维,再确定其他的 Integer a[][]=new Integer[3][];并且各个向量可以是任意长度,例如上面的数组可以 a[0]=new Integer[4],a[1]=new Integer[5]

阅读全文
0 0

相关文章推荐

img
取 消
img