面向对象编程的原则是什么?
主要有四点,多态、继承、封装和组合。
重载和重写的区别:
overload是重载,一般是用于在一个类内实现若干重载的方法,这些方法的名称相同而参数形式不同。
override是重写(覆盖)了一个方法,以实现不同的功能。一般是用于子类在继承父类时,重写(重新实现)父类中的方法。
静态类型有什么特点?
静态变量是和类绑定到一起的,而不是类的实例对象。每一个实例对象都共享同样一份静态变量。也就是说,一个类的静态变量只有一份,不管它有多少个对象。类变量或者说静态变量是通过static这个关键字来声明的。类变量通常被用作常量。静态变量通常通过类名字来进行访问。当程序运行的时候这个变量就会创建直到程序结束后才会被销毁。类变量的作用域和实例变量是一样的。它的初始值和成员变量也是一样的,当变量没被初始化的时候根据它的数据类型,会有一个默认值。类似的,静态方法是属于类的方法,而不是类对象,它的调用并不作用于类对象,也不需要创建任何的类实例。静态方法本身就是final的,因为重写只会发生在类实例上,静态方法是和类绑定在一起的,不是对象。父类的静态方法会被子类的静态方法屏蔽,只要原来方法没有声明为final。非静态方法不能重写静态方法,也就是说,你不能在子类中把一个静态方法改成实例方法。
非静态变量在每一个对象实例上都有单独的一份值。
如果原地交换两个变量的值?
package swapValue;
public class Main {
public static void swap1(int a,int b){
System.out.println(a+" "+b);
a=a^b;
b=a^b;
a=a^b;
System.out.println(a+" "+b);
}
public static void swap2(int a,int b){
System.out.println(a+" "+b);
a=a+b;
b=a-b;
a=a-b;
System.out.println(a+" "+b);
}
public static void main(String[] args) {
swap1(1,2);
swap2(4,2);
}
}
1 2
2 1
4 2
2 4