离弦之Ray

  语源科技BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  55 Posts :: 0 Stories :: 33 Comments :: 0 Trackbacks
 

Java类型相关

类型名

大小

取值范围

byte

8 bits

-128~127

short

16 bits

-32768~32767

int

32 bits

long

64 bits

float

32 bits

double

64 bits

Java常量

①十进制不能以0打头(数字0除外)

②十六进制必须以0x或者0X打头

③八进制必须以0打头

④长整型必须以L结尾

⑤小数常量默认为double型,如果要将小数赋值给float变量,数字后面要加f

final关键字

final 标记的类不能被继承

final 变量是常量,不能改变

final 方法不能被子类重写

Java变量

(1)当发生隐式类型转换时,目标类型取值范围要大于源类型取值范围

(2)字符串可以使用加号同其它的数据类型相连而形成一个新的字符串

Example:

System.out.println(‘a’+1);    输出的是98

System.out.println(“”+’a’+1); 输出的是”a1”

(3)局部变量一定要进行初始化

        编译的时候可能只是警告,但在使用时就会报错

Java运算

(1)       整数之间做除法时,只保留整数部分而舍弃小数部分。

(2)       养成这样的习惯:把x==3 写成 3==x

(3)       &和&&的区别

&&称为短路表达式,意思就是&不管两边是true或者false都会算一下,而&&如果算到前面的是false,它后面就不算了,反正综合起来表达式肯定是false。

(4)       位运算

<< 左移

>> 右移

   如果最高位是0,左边移空的高位就填0,如果最高位是1,左边移空的高位就填入1

>>> 无符号右移

   不管最高位是什么,移空的高位一律填入0

右移n位就是除以2的n次方

左移n位就是乘以2的n次方

Java内存

(1)Java内存分为两种:

①栈内存:用于存放基本类型变量和对象的引用变量

②堆内存:new创建的对象和数组

(2)当堆内存中的对象没有引用指向它时,它就变成了垃圾,会被垃圾回收器回收。

Java面向对象

(1)= =常用来比较引用是否指向同一个地址

     equals()用来比较对象的内容是否一样

     对于数组有Array.equals方法

(2)finalize()方法,它相当于C++中的析构函数,但又和析构函数不一样。因为Java里面已经有垃圾回收器了,所以finalize方法不是特别重要。另外,finalize是在对象被当成垃圾从内存中释放前调用,而不是在对象变成垃圾前调用,垃圾回收器什么时候清理垃圾是不定时的,所以不要指望用finalize做什么必要的收尾工作,因为你根本无法确定它会赶在垃圾回收器之前执行。

(3)System.gc()这个语句可以显式地调用垃圾回收器回收垃圾。

Java参数传递

(1)       基本类型的变量作为实参传递,并不能改变这个变量的值

举个例子,就是main函数里面定义的一个变量,传给一个方法,改下值,其实并没有改变main函数里面那个变量而是改了那个方法自己内部的那个副本。

(2)       那如果传递的是某个对象的引用呢?

道理一样,传递的是值,这个“值”就是引用的“值”,也就是对象的内存地址,方法通过这个地址对变量进行的修改,当然就是对main函数中定义的这个变量本身的修改了。

Java内部类

A类里面定义了B类,那么B就叫做内部类,A就叫做外部类。

B可以直接访问A类的所有变量和方法,反之不成立。

B类保存了A类的this引用。

内部类可以是static的

如果内部类被声明为static,那么它可以包含static的变量,但不再能访问外部类的非static变量。

方法内定义的内部类,只能访问方法中的final变量,而不能访问临时变量,但可以访问外部类的变量。

Java异常

(1)       一个方法被覆盖时,覆盖它的方法必须抛出相同的异常或异常的子类

(2)       如果父类抛出多个异常,那么覆盖方法必须抛出那些异常的一个子集,也就是说,不能抛出新的异常。

Java线程

两种实现多线程方式

(1)       直接继承Thread

MyThread extends Thread

然后

MyThread t = new MyTread();

t.start();

t.start();

值得注意的是,无论调用start多少遍只能启动一个线程。

要实现多个线程,只能生成多个对象,分别启动线程,一个对象只能启动一个线程

(2)       实现Runnable接口

MyThread implements Runnalbe

然后

new Thread(t).start();

new Thread(t).start();

这种方法就能实现多个线程。

但这两种方法启动的多个线程又有不一样的地方:

第一种因为是生成了多个对象,所以类中声明的一些资源,比如变量等等都是各不相关的。

第二种对类中声明的资源是多个线程共享的。

所以要按需选择。

Java String和StringBuffer

String 对象不能轻易被改变,经常用的“+”其实是新生成了一个String对象,平常感觉不大,但是真的在大型应用中,对效率影响非常严重。

StringBuffer对象可以改动,一旦生成了不再变化的内容,就可以调用它的toString方法,把它转化为String对象。

posted on 2007-10-10 10:51 离弦之ray的技术天空 阅读(641) 评论(1)  编辑  收藏 所属分类: Java

Feedback

# re: Java 的一些小细节,你知道吗?(《Java就业培训教程》读书笔记) 2007-10-10 23:05 彭俊
《Java就业培训教程》 勾起我回忆无限啊!
这是我读的第一本java教程,相当的不错。
记得就这一本书我读了将近6个月,每章至少读过3遍。
赫赫,看到这个名字,我都有点唏嘘不已了   回复  更多评论