-
2乘以8等於几的最效率的方法?
将一个数左移n位,就相当于乘以了2的n次方。
那么,一个数乘以8只要将其左移3位即可,而位运算是cpu直接支持的,效率最高。
所以,2乘以8等於几的最效率的方法是2<<3
- Break、continue和return的使用方法?
-
break :
(1).结束当前整个循环,执行当前循环下边的语句。忽略循环体中任何其它语句和循环条件测试。
(2).只能跳出一层循环,如果你的循环是嵌套循环,那么你需要按照你嵌套的层次,逐步使用break来跳出。[逐层判断,逐步跳出]
(3).break在循环体内,强行结束循环的执行,也就是结束整个循环过程,不在判断执行循环的条件是否成立,直接转向循环语句下面的语句。
(4).当break出现在循环体中的switch语句体内时,其作用只是跳出该switch语句体。 总的来说:就近原则,结束当前的整个循环。
-
return:
(1).return 从当前的方法中退出,返回到该调用的方法的语句处,继续执行。
(2).return 返回一个值给调用该方法的语句,返回值的数据类型必须与方法的声明中的返回值的类型一致。
(3). return后面也可以不带参数,不带参数就是返回空,其实主要目的就是用于想中断函数执行,返回调用函数处。
-
continue:
(1).终止本次循环的执行,即跳过当前这次循环中continue语句后尚未执行的语句,接着进行下一次循环条件的判断。
(2).结束当前循环,进行下一次的循环判断。
(3).终止当前的循环过程,但他并不跳出循环,而是继续往下判断循环条件执行语句.他只能结束循环中的一次过程,但不能终止循环继续进行.。
-
简述交换两个数的方法及优劣性
int a;
int b;
方式一:通过存放变量temp
int temp=a;
a=b;
b=temp;
方式二:通过加减法
a+=b;
b=a-b;
a=a-a;
方式三:通过位运算符
a=a^a ^b;
b=a^b ^b;
总结:
方式一是最常见的,可读性高,但是需要在内存中存放临时变量,但是对于现在来说,需要的内存空间很小,而且存放临时变量的内存很快就会释放,不存在问题。
方式二有缺陷,当两个数相加之后,可能其结果超出了变量类型能表达的最大范围,这个时候结果就会出问题,不推荐使用。
方式三效率是最高的,但是可读性不是很好。
在程序中我们应该尽可能的使用方式一,提高程序的可读性。但是需要了解方式三,以及方式三的原理。
-
Java 构造方法和成员变量初始化顺序
执行顺序:
执行父类静态代码 执行子类静态代码
初始化父类成员变量
初始化父类构造函数
初始化子类成员变量
初始化子类构造函数
-
为什么byte b=5;b+=5;不会报错,而b=b+5;就会报错?
因为前者类似于++运算,对于常量来说jvm不会编译器进行优化;而后者在进行预算的时候会自动进行数据类型的自动转化,提升为int类型,而byte类型是不能直接被int类型的数机娘赋值的。
-
对于代码:
public class T11 {
public static void main(String[] args) {
try {
System.out.println(“main1”);
ma();
System.out.println(“main2”);
} catch(Exception e) {
System.out.println(“Catch Exception in main”);
System.out.println(e.getMessage());
}
}
public static void ma() throws IOException {
try {
System.out.println(“ma1”);
mb();
System.out.println(“ma2”);
} catch (SQLException e) {
System.out.println(“Catch SQLException in ma”);
throw new IOException(e.getMessage());
}
}
public static void mb() throws SQLException {
throw new SQLException(“SQLException in mb”);
}
}
输出结果是:
main1, ma1, Catch SQLException in ma, ,Catch Exception in main, SQLException in mb,
(多选题)给出以下代码,请问该程序的运行结果是
class A{
private int x=0;
static int y=1;
protected int z=2;
}
class B extends A{
void method(){
System.out.println(x);
System.out.println(y);
System.out.println(z);
}
}
下列说法正确的是( )
A.程序编译错误,因为类B不能访问变量x
B.程序编译成功,打印输出012
C.程序编译错误,如果移走System.out.println(x)这条语句,可使编译程序通过
D.程序编译错误,因为变量x未在类B中定义
//答案为acd
-
如下代码:
public class AA {
public static void main(String[] args) {
int[] a = {1,2,3,4,5};
expand(a);
changeArray(a);
printArray(a);
}
public static void expand(int[] a){
int[] newArray = new int[a.length * 2];
System.arraycopy(a, 0, newArray, 0, a.length);
a = newArray;
}
public static void changeArray(int[] a){
a[0] = 10;
}
public static void printArray(int[] a){
for(int i = 0; i<a.length; i++){
System.out.print(a[i] + “\t”);
}
System.out.println();
}
}
则结果为()
//10,2,3, 4,5