离弦之Ray

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

Java类型相关

类型名

大小

取值范围

byte

8 bits

-128127

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位就是除以2n次方

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

Java内存

1Java内存分为两种:

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

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

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

Java面向对象

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

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

     对于数组有Array.equals方法

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

3System.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 StringStringBuffer

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

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

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

Feedback

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


只有注册用户登录后才能发表评论。


网站导航: