JAVA琐碎笔记

来源:互联网 发布:orange软件官方下载 编辑:程序博客网 时间:2024/05/21 22:29
java获取内存使用情况
Runtime.getRuntime().totalMemory()
Runtime.getRuntime().freeMemory()

Random rand=new Random(47);//47指种子,相同的种子产生相同的随机序列,默认种子为当前时间
int i=random.nextInt(100);//100指随机数上限,下限默认为0
Integer.toBinaryString(int i);//把i以二进制形式输出

通过BigDecimal的divide方法进行除法出现无限循环小数时,就会抛异常java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result. 例如:1000/12=83.3333... 
解决之道:就是给divide设置精确的小数点divide(xxxxx,2, BigDecimal.ROUND_HALF_EVEN)

计算机语言中,e->exponential:指数。e=10来自FORTRAN语言。自然科学中e=2.17

C语言中不支持方法的重载。面向对象语言支持很大原因是构造函数需要重载。

一个java源文件只能有一个public类。
abstract类可以有函数体作为默认实现;有abstract方法的类必须是abstract类。

StringBuffer,Vector,HashTable是线程安全的,而StringBuilder(jdk1.5),ArrayList,HashMap是线程非安全的

sleep是线程类(Thread)的方法,到时后会自动恢复。调用sleep不会释放对象锁。wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,只有针对此对象发出notify方法后才可运行
从前Java允许在一个线程之外把线程挂起,即调用 suspend方法,这样的操作是极不安全的。根据面向对象的思想每个对象必须对自己的行为负责,而对自己的权力进行封装。如果任何外步对象都能使线程被 挂起而阻塞的话,程序往往会出现混乱导致崩溃,所以这样的方法自然是被毙掉了啦。

java中不支持二进制的字面写法,没有0b0110101之类;

+ << ^        3<<2+2相当于3<<(2+2)=48;2^6<<2=2^(6<<2)

C和C++不能返回数组,只能返回指向数组的指针

Arrays.fill( ,)产生测试数据

obj.getClass().isArray()判断一个无名对象是否是数组,Array.getLength(obj)获取一个无名数组的长度
java无析构函数,C#支持析构函数,但一般没意义,由系统调用,程序员不能直接调用

java继承初始化顺序:
1. 父类--静态变量
2. 父类--静态初始化块
3. 子类--静态变量
4. 子类--静态初始化块
5. 父类--变量
6. 父类--初始化块
7. 父类--构造器
8. 子类--变量
9. 子类--初始化块
10. 子类--构造器

java中无名包只能被无名包中的类引用,不能被其他包中的类引用。
0 0
原创粉丝点击