java面试题总结之JavaSE基础

来源:互联网 发布:软件领cf点 编辑:程序博客网 时间:2024/06/05 02:53

== 与 equils的区别


对于基本数据类型来说

  1. ==比较的是两个变量的值是否相同。
  2. 基本数据类型无法使用equils方法,必须使用其包装类才能使用equils方法。对于基本数据类型的包装类来说,equils比较的也是值是否相等。
int i = 10;int j = 10;Integer integer1 = 10;Integer integer2 = 10;System.out.println(i == j);System.out.println(integer1.equals(integer2));

输出结果:

true
true

对于普通对象变量来说

  1. == 比较的是地址
  2. 对于equils来说,系统类一般已经覆盖了equals(),比较的是内容。
  3. 用户自定义类如果没有覆盖equals(),将调用父类的equals(比如是Object),而Object的equals的比较是地址(return (this == obj);)

示例:

String s1 = "hello";String s2 = "hello";String s3 = s1 + s2;String s4 = "hellohello";System.out.println(s1 == s2);System.out.println(s3 == s4);System.out.println(s3.equals(s4));

结果:

true
false
true

注: Object的==和equals比较的都是地址,作用相同。
字符串比较是否相等推荐使用equils。

throws 和 throw的区别


从作用,使用位置,抛出内容三个方面进行分析。
1. 作用不同:throw用于程序员自行产生并抛出异常;throws用于声明在该方法内抛出了异常
2. 使用的位置不同:throw位于方法体内部,可以作为单独语句使用;throws必须跟在方法参数列表的后面,不能单独使用。
3. 内容不同:throw抛出一个异常对象,且只能是一个;throws后面跟异常类,而且可以有多个。

使用递归算法计算 n!


程序代码:

public static int evaluate(int i){        if (i == 1 || i == 0) {            return i;        }else {            return i * evaluate(i-1);        }    }

关于递归:
(1) 递归就是在过程或函数里调用自身。
(2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。
(3) 递归算法解题通常显得很简洁,但运行效率较低。所以一般不提倡用递归算法设计程序。
(4) 在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等。所以一般不提倡用递归算法设计程序。

0 0
原创粉丝点击