-
1.一个Java文件可以有多个类,但是只能有一个public 类
-
2.
&&
和&
区别:-
&&
和&
都可以作为与逻辑与运算符,但是&&有短路的功能。例如if(3>5 && i--)
这个判断语句时,i--
不会被执行,但是如果是if(3>5 & i--)
会执行i--
. -
&
还可以作为位运算符。
-
-
3.String类型和基本数据类型的区别
- Java八大基本数据类型:
整型:byte
short
int
long
浮点:float
double
逻辑:boolean
字符:char
- String 是个对象,是引用类型。
- 基本类型仅表示简单的数据类型,引用类型可以表示复杂的数据类型,还可以操作这种数据类型的行为
- Java八大基本数据类型:
-
4.
==
和equals
的区别:-
==
这个操作符是专门比较两个变量的值是否相等。也就是比较变量对应内存中所存储的数值是否是否相等 - 比较引用类型时: == 和 equals(默认)都是比较它们的引用地址是否相等
(引用类型进行比较的时候想要比较它们的值必须要重写 equals 方法)
而字符串之所以可以使用 equals 去比较两个字符串的值,是因为 String 中默认已经重写了 equals 方法。 -
String a = new String("xiaoming");
和String b = new String("xiaoming");
这两个变量分别指向一个对象,这是两个不同的变量,所指向的首地址是不同的(a,b中存的数值是不同的),但是内容是相同的所以:a == b
将返回false,a.equals(b)
将返回true; - 如果一个类没有自己定义equals方法,它默认的方法是从Object类继承的。而Object类的equals实现代码:
boolean equals(Object o){ return this == o; }
所以这时候使用==
和equals
结果是相同的,必须自己覆盖equals
方法;
-
-
5.静态变量和实例变量的区别
- 实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。
public class Test11 {
public static int staticVar = 0;
public int instanceVar = 0;
public Test11() {
staticVar++;
instanceVar++;
System.out.println("staticVar=" + staticVar + ",instanceVar="
+ instanceVar);
}
public static void main(String[] args) {
Test11 test = new Test11();
Test11 test1 = new Test11();
Test11 test2 = new Test11();
}
}
执行结果:
staticVar=1,instanceVar=1
staticVar=2,instanceVar=1
staticVar=3,instanceVar=1
-
6.
Integer
和int
的区别-
int
是基本数据类型Integer
是其包装类。 -
int
的默认值为0,而Integer
的默认值为null。既Integer可以区分出未赋值和0的区别。
-
-
7.作用域 public,private ,protected,不写时的区别
public | 当前类 | 同一package包 | 子孙类 | 其他package |
---|---|---|---|---|
public | 是 | 是 | 是 | 是 |
protected | 是 | 是 | 是 | 否 |
private | 是 | 否 | 否 | 否 |
friendly | 是 | 是 | 否 | 否 |
-
8.Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型
- Overload 是重载:方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。
- Override是重写:父类与子类之间的多态性,对父类的函数进行重新定义。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写.
1.重写必须继承,重载不用。
2.重写的方法名,参数数目相同,参数类型相同,重载的方法名相同,参数列表不同。
3.重写的方法修饰符大于等于父类的方法,重载和修饰符无关。
4.重写不可以抛出父类没有抛出的一般异常,可以抛出运行时异常.
-
9.abstract class 和 interface区别
- 1、abstract class 本质是类,用abstract修饰类,而interface是接口,将class替换为interface
- 2、abstract class可以有构造方法,interface不能有
- 3、abstract class中可以包含普通变量,interface所有的变量都是final static的
- 4、abstract class中可以包含普通方法,interface中所有的方法都是抽象的。
- 5、abstract class中除抽象方法不可以是private修饰符外,其它成员任意;而interface中所有成员的修饰符都为public
- 6、abstract class可以继承一个类实现多个接口,interface只能继承接口
网友评论
重写时:方法名、参数个数和参数类型 都必须相同。jdk1.5以后,返回值类型可以与父类相同,也可以与父类不同,但是要求返回值类型是父类的子类。如: 父类的返回值类型是Object类,子类的返回值可以是Object类的子类比如String
1. 比较基本类型时: == 是比较它们的值是否相等
2. 比较引用类型时: == 和 equals(默认)都是比较它们的引用地址是否相等
(引用类型进行比较的时候想要比较它们的值必须要重写 equals 方法)
而字符串之所以可以使用 equals 去比较两个字符串的值,是因为 String 中默认已经重写了 equals 方法。