对线面试官day3-JAVA基础
1.continue、break、和 return 的区别是什么?
在循环结构中,当循环条件不满足或者循环次数达到要求时,循环会正常结束。但是,有时候可能需要在循环的过程中,当发生了某种条件之后 ,提前终止循环,这就需要用到下面几个关键词:
-
continue :指跳出当前的这一次循环,继续下一次循环。 -
break :指跳出整个循环体,继续执行循环下面的语句。 return 用于跳出所在方法,结束该方法的运行。return 一般有两种用法: -
return; :直接使用 return 结束方法执行,用于没有返回值函数的方法 -
return value; :return 一个特定值,用于有返回值函数的方法
2.==和 equals 的区别?
对于基本数据类型来说,==比较的是值。
对于引用数据类型来说,==比较的是对象的内存地址。
因为 Java 只有值传递,所以,对于 == 来说,不管是比较基本数据类型,还是引用数据类型的变量,其本质比较的都是值,只是引用类型变量存的值是对象的地址。(==就是比较值,基本数据类型比较值,引用数据类型比较存值对象地址)。
equals() 作用不能用于判断基本数据类型的变量,只能用来判断两个对象是否相等。equals() 方法存在于Object 类中,而Object 类是所有类的直接或间接父类。
Object 类 equals() 方法:
public boolean equals(Object obj) {
return (this == obj);
}
equals() 方法存在两种使用情况:
- 类没有覆盖
equals() 方法 :通过equals() 比较该类的两个对象时,等价于通过“==”比较这两个对象,使用的默认是 Object 类equals() 方法。 - 类覆盖了
equals() 方法 :一般我们都覆盖 equals() 方法来比较两个对象中的属性是否相等;若它们的属性相等,则返回 true(即,认为这两个对象相等)。(属性相等,两个对象就相等)
举个例子:
public class test1 {
public static void main(String[] args) {
String a = new String("ab"); // a 为一个引用
String b = new String("ab"); // b为另一个引用,对象的内容一样
String aa = "ab"; // 放在常量池中
String bb = "ab"; // 从常量池中查找
if (aa == bb) // true
System.out.println("aa==bb");
if (a == b) // false,非同一对象
System.out.println("a==b");
if (a.equals(b)) // true
System.out.println("aEQb");
if (42 == 42.0) { // true
System.out.println("true");
}
}
}
说明:
String 中的 equals 方法是被重写过的,因为 Object 的 equals 方法是比较的对象的内存地址,而 String 的 equals 方法比较的是对象的值。- 当创建
String 类型的对象时,虚拟机会在常量池中查找有没有已经存在的值和要创建的值相同的对象,如果有就把它赋给当前引用。如果没有就在常量池中重新创建一个 String 对象。
String 类equals() 方法:
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = value.length;
if (n == anotherString.value.length) {
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
while (n-- != 0) {
if (v1[i] != v2[i])
return false;
i++;
}
return true;
}
}
return false;
}
3. Java 中的几种基本数据类型是什么?
Java 中有 8 种基本数据类型,分别为:
-
6 种数字类型 :byte 、short 、int 、long 、float 、double -
1 种字符类型:char -
1 种布尔型:boolean 。 这 8 种基本数据类型的默认值以及所占空间的大小如下:
基本类型 | 位数 | 字节 | 默认值 |
---|
int | 32 | 4 | 0 | short | 16 | 2 | 0 | long | 64 | 8 | 0L | byte | 8 | 1 | 0 | char | 16 | 2 | ‘u0000’ | float | 32 | 4 | 0f | double | 64 | 8 | 0d | boolean | 1 | 理论上1 | false |
|