您的位置:首页 > 其它

一些小问题技术笔记(二)--思考是进步的本质

2012-09-27 11:42 369 查看
1:虚函数的定义,当从父类中继承的时候,虚函数和被继承的函数具有相同的签名。但是在运行过程中,运行系统将根据对象的型別,自动地选择适当的具体实现运行。由此可以看出Java的普通函数都是虚函数。因为Java是默认动态绑定的。只有方面前面加static和final的才不是虚函数。(参考:http://blog.csdn.net/trojanpizza/article/details/6556604

2:Java序列化的原理就是把对象按照一定的格式以二进制形式放入文件,下次又按照这个格式读取出来生成对象。这篇文章讲的很详细。(http://developer.51cto.com/art/200908/147650.htm

3: 栈的大小,在jdk1.4里头,默认的栈大小是256KB,但是在jdk1.5及以后里头,默认的栈大小为1M每线程,可以通过参数-Xss设置的栈大小。在其他条件恒定的情况下,设置更小的最大堆内存能够支持更多的线程数。连接的文章讲了一个估算最大线程数的方法。(今天腾讯面试刚好被问到了,我答了个大约1m吧,不太确定的说,感觉还是被bs了。因为模糊中有这个影响,但不自信。)。(参考:http://hi.baidu.com/wphvseyvcbfkpxe/item/037488116cefd90a8ebde4b1

4:Java的数据类型里没有无符号类型,不支持,具体原因不详。如果需要某个字节的无符号类型,就需要一个比它宽带字节类型来表示这个无符号类型,如可以用int来表示short。假如一个short类型的-1,它的二进制表示是1111 1111,但是我们其实是想用无符号类型表示,也就是说其实我们想表示无符号的255这个数,而不是-1,那么可以用int来表示,即将要表示的数跟0x000000FF进行与运算(0x000000FF
& (-1))=255,PS:char不是数值类型(http://www.darksleep.com/player/JavaAndUnsignedTypes.html

5:byte b = 011;System.out.println(b)输出什么?都是小问题,但是还真没看过java面试宝典一类的书。答案是9,就一个知识点,0开始的表示八进制。

6:构造函数没有返回类型!!!!!!!!!!!!!!!!!!void也不行,凡是要淡定~,慢慢思考。

7:类型转换的问题,float f = 2.3;是不能定义的,因为2.3是double,不能向下转换为float。但是f=2是可以定义的,因为2是整数,可以向上转换为float。这个很好理解,但是char c = 99;可以编译成功,我就感觉很奇怪,其中99是整数,怎么能向下转型为char呢?因为Java中没有 short, char, byte 类型的字面常量(literal constant),为了省去显示类型转换的麻烦,于是规定当int类型字面常量处于以上三种类型的取值范围中时,可以直接赋值。char的范围是0~65535,声明char
c=65536;就不行了。

8:基本类型的强制转换问题? 有几条规则:1)从较窄的整型转换成较宽的整型时的符号扩展行为:如果最初的数值类型是有符号的,那么就执行符号扩展;如果它是char,那么不管它将要被转换成什么类型,都执行零扩展。 2)宽带类型转换成较窄的类型,如int转byte,如果整数的值超出了byte 型的取值范围,则转型后的的值将会是整数除以byte 得到的余数,如byte b = (byte)257;则b=1;浮点数转整型,把浮点数的小数去掉。(http://tech.ccidnet.com/art/3539/20070705/1135079_1.html)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: