JAVA学习之面试题2
来源:互联网 发布:java h5微信支付接口 编辑:程序博客网 时间:2024/05/18 07:56
1、short s1 = 1; s1 = s1 +1;有什么错?short s1 = 1; s1 += 1;有什么错?
答:对于short s1 = 1; s1 = s1 + 1;由于s1 + 1运算时会自动提升表达式的类型,所以结果是int型,再赋值给short类型s1时,编译器将报告需要强制转换类型的错误。
对于short s1 = 1;s1 += 1;由于+=是java语言规定的运算符,java编译器会对它进行特殊处理,因此可以正确编译。
2、char型变量中能不能存储一个中文汉字?为什么?
答:char型变量是用来存储Unicode编码的字符的,Unicode编码字符集中包含了汉字,所以char型变量可以存储汉字。不过,如果某个特殊的汉字没有被包含在unicode编码集中,这个char型变量中就不能存储这个特殊汉字。另外,unicode编码占用两个字节,所以,char类型的变量也是占用两个字节。
3、用最有效率的方法算出2乘以8等于几?
答:2<<3
因为将一个数左移n位,就相当于乘以了2的n次方,那么,一个数乘以8只要将其左移3位即可,而位运算cpu直接支持的,效率最高,所以,2乘以8等于几的最效率方法是:2<<3;
4、请设计一个一百亿的计算器
答:方案一:使用long类型,因为int的范围大致是-21~21,一百亿完全超出int的范围
方案二:自己设计一个类,大概功能如下:
(1)这个类内部有两个成员变量,一个表示符号,另一个用字节数组表示数值的二进制数
(2)有一个构造方法,把一个包含多位数值的字符串转换到内部的符号和字节数组中
(3)提供加减乘除的功能
public class BigInteger{
private int sign;
private byte[] val;
public BigInteger add(BigInteger other) {
sign = ;
val = ;
}
public BigInteger subtract(BiInteger other) {
}
public BigInteger multiply(BigInteger other) {
}
public BigInteger divide(BigInteger other) {
}
}
5、使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?
答: 使用final关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是可以改变的。例如,对于如下语句:
final StringBuilder s = new StringBuilder("I love java");
执行如下语句时将报告编译错误:
s = new StringBuilder("");
但是,执行如下语句则可以通过编译:
s.append(", good!");
值得一提的是,有人定义方法参数时,可能想采用如下方式来阻止方法内部修改传进来的参数对象:
public void method(final StringBuilder param) {
}
实际上,这是办不到的,在该方法内部仍然可以增加如下代码来修改参数对象:
param.append("abcd");
- JAVA学习之面试题2
- Java学习之java面试题集
- java学习之面试题3
- java学习之面试题4
- java学习之面试题5
- 记录自已学习之面试题2
- Java学习之——JAVA面试题集
- 线程学习之面试题
- Java学习笔-----------面试题
- JAVA面试题之集合
- JAVA面试题之线程
- 面试题之java基础
- Java面试题之二
- Java面试题之三
- Java面试题之四
- Java面试题之五
- Java面试题之六
- Java面试题之七
- 零至二岁宝宝故事(一)
- iphone QQ音乐锁屏歌词实现思路
- xmltype.extractValue
- strcpy、wcscpy与_tcscpy关系 strcpy_s与strcpy比较
- Android 一个apk多个ICON执行入口
- JAVA学习之面试题2
- Struts2类型转换
- 在win7系统硬盘安装Fedora20
- 悲剧的root
- Calf Flac
- Image uImage与zImage的区别【转】
- java Structs 介绍
- HDU 2296 Ring(AC自动机+DP)
- 3.1 python中的数据类型 [python入门教程]