java面试题002
1、判断下列代码的运行情况
public class TestExtends {
public static void main(String[] args) {
Father obj = new Son();
System.out.println(obj.getEle());
}
}
class Father{
public int getEle(){
return 1;
}
}
class Son extends Father{
public float getEle(){
return 2f;
}
}
答案:编译出错。原因是函数不能以返回值来区分,虽然父类与子类中的函数有着不同的返回值,但是它们有着相同的函数名,因此编译器无法区分。
2、抽象方法权限标识只能由public or protected修饰【注:可以不进行权限修饰-为default】。
3、接口中的方法只能由public,abstract修饰。
4、内部类都有哪些,它们的特性分别是什么?
内部类分为四种:静态内部类、成员内部类、局部内部类和匿名内部类。
①静态内部类被static修饰,可以不依赖外部实例而被实例化,不能和外部类有相同的名字,不能访问外部类的非静态成员。
②成员内部类可以自由的引用外部成员变量和方法(包括私有)
③局部内部类不能被public等权限修饰符及static修饰
④匿名内部类不能使用class、extends、implements,没有构造函数,必须继承类或者实现接口,由此只能创建一个匿名内部类实例。另外局部内部类约束同样适用匿名内部类。
5、如何获取父类的类名?
答:使用getClass().getSuperclass().getName()。
注:为什么不能使用super.getClass().getName(),解释如下:
getClass()方法在Object类中被定义为final和native,子类不能覆盖该方法。所以this.getClass()和super.getClass()都是调用了Object的getClass(),而Object的getClass的释义是返回Object的正在运行的类。
6、为什么要有super关键字?
对于子类集成父类的例子中,如果子类覆盖了父类的方法,如果想要调用父类原来的方法就必须使用super进行调用。
7、super错误使用样例:
class Father{
public Father(){
System.out.println("老爸在这");
}
}
class Son extends Father{
public Son(){
System.out.println("儿子在这~");
super();
}
}
解释:会出现编译错误,super()必须为子类构造函数中的第一条语句。
8、值传递和引用传递的区别有哪些?
值传递:在方法调用中,实参会把它的值传递给形参,形参只是用实参的值初始化一个临时存储单元,因此形参与实参虽然有着相同的值,却是不同的存储单元,因此对形参的改变不会影响实参的值。
引用传递:在方法调用中,传递的是对象【的地址】,这时形参与实参指向的存储单元相同,因此会影响实参的值。
看下面一段代码,是否有疑惑呢?
public static void main(String[] args) throws InstantiationException, IllegalAccessException {
StringBuffer s1 = new StringBuffer("Hello ");
StringBuffer s2 = new StringBuffer("Hi ");
changeSB(s1,s2);
System.out.println(s1);
System.out.println(s2);
}
private static void changeSB(StringBuffer s1, StringBuffer s2) {
s1.append("Kevin");
s2 = s1;
System.out.println("method inner"+s2);
}
代码输出结果为:
method innerHello Kevin
Hello Kevin
Hi
这里是按值传递的,append方法会修改ss1所指向字符串的值,而执行changeSB中的ss2=ss1只会修改ss2的值而不会修改s2的值。
9、运算符优先级
括号 > 正负符号、自运算、取反、非 > 算术运算 > 位运算 > 比较逻辑运算 > 判等逻辑运算 > 逻辑与、或、异或 > 逻辑双 与、或 > 三目运算 > 赋值运算 、运算赋值运算
10、判断下面代码输出的结果
String s1 = "abc";
String s2 = "abc";
String s3 = new String("abc");
System.out.println("s1==s2? "+(s1==s2));
System.out.println("s1==s2? "+s1==s2);
System.out.println("s1==s3? "+(s1==s3));
输出结果如下:
s1==s2? true
false
s1==s3? false
解释:①s1和s2指向常量池中的同一个字符串常量;②首先执行了字符串+运算[优先级问题]③new出来的对象都会在堆中开辟内存空间,所以s1和s3指向不同,这里使用equals方法判断值相等。
java面试题002的更多相关文章
- 【面试题002】java实现的单例模式,c++实现单例模式,实现禁止拷贝
[面试题002]java实现的单例模式,c++实现单例模式,实现禁止拷贝 一 c++实现单例模式 保证一个类,在一个程序当中只有一个对象,只有一个实例,这个对象要禁止拷贝,注意这里要区别于java. ...
- java面试题及答案(转载)
JAVA相关基础知识1.面向对象的特征有哪些方面 1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时 ...
- 115个Java面试题和答案——终极列表(下)
第一篇讨论了面向对象编程和它的特点,关于Java和它的功能的常见问题,Java的集合类,垃圾收集器,本章主要讨论异常处理,Java小应用程序,Swing,JDBC,远程方法调用(RMI),Servle ...
- Java面试题(全)
JAVA部分 什么是反射机制?反射机制应用(Struts中反射机制的应用) 答:运行状态中,对于任意一个类,都可以知道它的所有属性和方法,对于任意一个对象都可以调用它的任意一个方法,这种动态获取信息以 ...
- Java面试题大全(四)
JAVA代码查错 1. abstract class Name { private String name; public abstract boolean isStupidName(String n ...
- 大公司的Java面试题集
找工作要面试,有面试就有对付面试的办法.以下一些题目来自我和我朋友痛苦的面试经历,提这些问题的公司包括IBM, E*Trade, Siebel, Motorola, SUN, 以及其它大小公司. 面试 ...
- 收集了50道基础的java面试题
下面的内容是对网上原有的Java面试题集及答案进行了全面修订之后给出的负责任的题目和答案,原来的题目中有很多重复题目和无价值的题目,还有不少的参考答案也是错误的,修改后的Java面试题集参照了JDK最 ...
- Java笔试题解答和部分面试题
面试类 银行类的问题 问题一:在多线程环境中使用HashMap会有什么问题?在什么情况下使用get()方法会产生无限循环? HashMap本身没有什么问题,有没有问题取决于你是如何使用它的.比如,你 ...
- 转:Java面试题集(51-70) http://blog.csdn.net/jackfrued/article/details/17403101
Java面试题集(51-70) Java程序员面试题集(51-70) http://blog.csdn.net/jackfrued/article/details/17403101 摘要:这一部分主要 ...
随机推荐
- [工作日志]2018-11-15 主要: 改bug
map不能直接转string格式 *方法: Map<String,Object> map=new HashMap<String,Object>(); map.put(" ...
- react native 之 获取键盘高度
多说不如多撸: /** * Created by shaotingzhou on 2017/2/23. *//** * Sample React Native App * https://github ...
- 正则表达式的lastIndex属性
js中正则表达式的使用方式有两种,一种是正则表达式对象的方法,一种是字符串对象的方法,前者有exec(str).test(str)两个方法,后者有match(regexp).replace(regex ...
- 剑指offer-面试题1:赋值运算符函数
如下为类型CMyString的声明,请为该类型添加赋值运算符函数. 解析:给一个类进行运算符重载. 关键部分代码: CMyString& CMyString::operator =(const ...
- upstream timed out (110: Connection timed out) while reading response header from upstream
Nginx报错日志有如下内容: upstream timed out (110: Connection timed out) while reading response header from up ...
- unity ugui Toggle Group详解(Chinar出品、简单易懂)
UGUI Toggle Group用法教程 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar ...
- 01 mysql
Sql语句: Structured Query Language, 结构化查询语言 分类: DDL (数据定义语句) 数据定义语言 - Data Definition Language 用来定义数据库 ...
- MyBatis-Plus使用教程
单机版 安装环境 上传压缩包到/usr/local/software/下 解压安装包,进入解压目录的bin目录下,启动命令: ./solr start -force 默认端口是8983,请求虚拟机, ...
- LeetCode – Number of Islands
Given a -d grid map of 's (water), count the number of islands. An island is surrounded by water and ...
- LG4213 【【模板】杜教筛(Sum)】
sum\(\mu\)求法 设 \[S(n)=\sum_{i=1}^n \mu(i)\] 回顾公式 \[\sum_{d|n}\mu(d)=[n=1]\] 对\(n\)求和 \[\sum_{i=1}^n\ ...