JAVA基础面试题01
Java支持多继承么?
Java中类不支持多继承,只支持单继承(即一个类只有一个父类)。但是java中的接口支持多继承,,即一个子接口可以有多个父接口。(接口的作用是用来扩展对象的功能,一个子接口继承多个父接口,说明子接口扩展了多个功能,当类实现接口时,类就扩展了相应的功能)。
Java只支持单继承是出于安全性考虑,如果子类继承了多个父类里面有相同的方法或者属性,子类不知道具体继承哪个,而接口可以多实现,是因为接口只定义方法,没有具体的逻辑实现,多实现也要重新实现方法。
JAVA中共有几种变量
Java中共有三种变量,分别是类变量、成员变量和局部变量。他们分别存放在JVM的方法区、堆内存和栈内存中。 /** * @author Hollis */ public class Variables { /** * 类变量 */ private static int a; /** * 成员变量 */ private int b; /** * 局部变量 * @param c */ public void test(int c){ int d; } } 成员变量和方法作用域
对于成员变量和方法的作用域,public,protected,private以及不写之间的区别:
public : 表明该成员变量或者方法是对所有类或者对象都是可见的,所有类或者对象都可以直接访问
private : 表明该成员变量或者方法是私有的,只有当前类对其具有访问权限,除此之外其他类或者对象都没有访问权限.子类也没有访问权限.
protected : 表明成员变量或者方法对类自身,与同在一个包中的其他类可见,其他包下的类不可访问,除非是他的子类
default : 表明该成员变量或者方法只有自己和其位于同一个包的内可见,其他包内的类不能访问,即便是它的子类值传递与引用传递
上面提到了,当我们调用一个有参函数的时候,会把实际参数传递给形式参数。但是,在程序语言中,这个传递过程中传递的两种情况,即值传递和引用传递。我们来看下程序语言中是如何定义和区分值传递和引用传递的。 值传递(pass by value)是指在调用函数时将实际参数 复制 一份传递到函数中,这样在函数中如果对参数 进行修改,将不会影响到实际参数。
引用传递(pass by reference)是指在调用函数时将实际参数的地址直接传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。
那么,我来给大家总结一下,值传递和引用传递之前的区别的重点是什么:
这里我们来举一个形象的例子。再来深入理解一下值传递和引用传递:
你有一把钥匙,当你的朋友想要去你家的时候,如果你 直接 把你的钥匙给他了,这就是引用传递。这种情况下,如果他对这把钥匙做了什么事情,比如他在钥匙上刻下了自己名字,那么这把钥匙还给你的时候,你自己的钥匙上也会多出他刻的名字。
你有一把钥匙,当你的朋友想要去你家的时候,你 复刻 了一把新钥匙给他,自己的还在自己手里,这就是值传递。这种情况下,他对这把钥匙做什么都不会影响你手里的这把钥匙。
注意:JAVA只有值传递JAVA有哪几种基本数据类型
字符型:char,布尔值:boolean,整型:byte、short、int、long,浮点型:float、double