Java面试题大全之Java基础面试题系列一(每天巩固一点点)

1、 面向对象编程有哪些特征?

Java做为一门面向对象的编程语言,提供了面向对象的四种基本性质:抽象性、封装性、继承性和多态性。此题答案为面向对象主要有四大特性:封装、抽象、继承和多态。

封装:属性的封装和方法的封装,把属性定义为私有的get()、set()方法,好处是信息隐藏和模块化,提高安全性。封装的主要作用在于对外隐藏内部实现细节,增强程序的安全性。

抽象:将一类实体的共同特性抽象出来,封装在一个新的抽象类中,抽象是面向对象语言的基础。

继承:继承是java面向对象编程技术的一块基石,它允许创建分等级层次的类。继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。

多态:当同一个操作作用在不同的对象时,会产生不同的结果。有两种方式来实现多态,一种是编译时多态,另一种是运行时多态;编译时多态是通过方法的重载来实现的,运行时多态是通过方法的重写来实现的。

2、 JDK 与 JRE 的区别是什么?

JDK是Java Development Kit(Java开发工具集),包含了JRE,编译器等,JDK是面向开发人员使用的SDK,它提供了Java的开发环境和运行环境。

JRE是Java Runtime Enviroment(Java运行环境),是运行Java字节码文件所需的Java虚拟机。JRE只能进行程序编译,不能进行java程序的开发。安装JDK才能正常进行java程序的开发,编译,运行。

3、 Java 有哪几种基本数据类型?

Java基本类型共有八种,基本类型可以分为三类,字符类型char,布尔类型boolean以及数值类型byte、short、int、long、float、double。数值类型又可以分为整数类型byte、short、int、long和浮点数类型float、double。JAVA中还存在另外一种基本类型void,它也有对应的包装类 java.lang.Void,不过我们无法直接对它们进行操作。

    4、== 和 equals 比较有什么区别?

==比较的是变量(栈)内存中存放的对象的(堆)内存地址,用来判断两个对象的地址是否相同,即是否是指相同一个对象。比较的是真正意义上的指针操作。基本数据类型中比较的是值是否相等。

equals用来比较的是两个对象的内容是否相等,由于所有的类都是继承自java.lang.Object类的,所以适用于所有对象,如果没有对该方法进行覆盖的话,调用的仍然是Object类中的方法,而Object中的equals方法返回的却是==的判断。

    5、public,private,protected,默认的区别?

public它具有最大的访问权限,可以访问任何一个在CLASS PATH下的类、接口、异常等。用于对外声明接口。

private它的访问权限仅限于类的内部,是一种封装的体现。

protected当前类或子类可以访问,同时相同包内的其他类也可以访问protected成员;它主要的作用就是用来保护子类。

default(默认):表示本包内可以使用,它是针对本包访问而设计的,任何处于本包下的类、接口、异常等,都可以相互访问,即使是父类没有用protected修饰的成员也可以。

 

    6、this 和 super 有什么区别?

含义区别:this:代表当前对象的引用,谁来调用我,我就代表谁,super:代表当前对象父类的引用。

使用区别:this.成员变量表示调用本类的成员变量,也可以调用父类的成员变量,super.成员变量表示调用父类的成员变量;this(...) 表示调用本类的构造方法,super(...) 表示调用父类的构造方法;this.成员方法表示调用本类的成员方法,也可以调用父类的方法,super.成员方法表示调用父类的成员方法。

    7、short s1 = 1; s1 += 1;正确吗?

    正确!在复合赋值运算符底层自动进行强制类型转换,所以此处实际上是s1 = (int) s1 + 1;

    8、short s1 = 1; s1 = s1 + 1;正确吗?

    错误!错在s1 = s1 + 1,s1会自动转为int类型与1进行运算,运算结果为int类型,而int类型的值赋值给short类型的变量时发生类型转换错误。类型转换遵循小转大通过、大转小报错的原则。

    9、float n = 8.0;会报错吗?

    报错。8.0是double类型,将double类型赋值给float属于大转小,会造成精度损失,因此需要强制类型转,float n = (float) 8.0或者float f = 8.0F。

    10、i++ 和 ++i 的区别?

    i++和++i都是对i进行了i=i+1的操作,不同的是i++得到的是i未进行加法操作的前的值的副本,而++i直接得到计算后的值。

我的个人订阅号(大叔学Java/dashu_java),感兴趣的可以关注下,谢谢!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值