为了明年的面试,把面试中可能遇到的关于java的问题记录在下面,纯个人理解,如果有误,请指正!

1.java中拷贝的三种方式,以及他们的区别。

  这三种方式分别是:直接赋值,浅拷贝,深拷贝。第一种直接赋值 a2 = a1,那么此时的a1和a2都指向同一个对象a1;第二种浅拷贝,它创建了一个新的对象,并将将除static 变量之外的值变量拷贝到了这个新的对象中,但是对于引用变量只复制这个引用变量并不拷贝这个引用对象,也就说对于浅拷贝来说引用变量还是指向了同一个对象,具体来说:;第三种深拷贝,它和浅拷贝的区别仅在于它也拷贝了引用对象。

  就以 a2 = a1这个例来分析:
  直接赋值:a2的值会随着a1变化而变化

  浅拷贝:a2中的值变量不会随着a1变化而变化,但是它的引用变量会随着a1变化而变化

  深拷贝:a2中的除了static变量以外的所有变量都不会随着a1的变化而变化

2.重载和覆盖的区别

原文来自于此博客

具体区别如下: 
一、重写(override)

override是重写(覆盖)了一个方法,以实现不同的功能。一般是用于子类在继承父类时,重写(重新实现)父类中的方法。 
重写(覆盖)的规则: 
1、重写方法的参数列表必须完全与被重写的方法的相同,否则不能称其为重写而是重载. 
2、重写方法的访问修饰符一定要大于被重写方法的访问修饰符(public>protected>default>private)。 
3、重写的方法的返回值必须和被重写的方法的返回一致; 
4、重写的方法所抛出的异常必须和被重写方法的所抛出的异常一致,或者是其子类; 
5、被重写的方法不能为private,否则在其子类中只是新定义了一个方法,并没s有对其进行重写。 
6、静态方法不能被重写为非静态的方法(会编译出错)。

二、overload是重载,一般是用于在一个类内实现若干重载的方法,这些方法的名称相同而参数形式不同。 
重载的规则: 
1、在使用重载时只能通过相同的方法名、不同的参数形式实现。不同的参数类型可以是不同的参数类型,不同的参数个数,不同的参数顺序(参数类型必须不一样); 
2、不能通过访问权限、返回类型、抛出的异常进行重载; 
3、方法的异常类型和数目不会对重载造成影响; 
多态的概念比较复杂,有多种意义的多态,一个有趣但不严谨的说法是:继承是子类使用父类的方法,而多态则是父类使用子类的方法。 
一般,我们使用多态是为了避免在父类里大量重载引起代码臃肿且难于维护。

java中面试可能会问的问题的更多相关文章

  1. jsp中的盲区-面试可能会问到的东西

    1.今天看到一个有趣的JSP题目. <body>    This is my JSP page. <br>    <%        int a = 10;    %&g ...

  2. 最近找java实习面试被问到的东西总结(Java方向)

    时间,就是这么很悄悄的溜走了将近两个年华,不知不觉的,研二了,作为一个一般学校的研究生,不知道该说自己是不学无术,还是说有过努力,反正,这两年里,有过坚持,有过堕落,这不,突然间,有种开窍的急迫感,寻 ...

  3. Java中高级面试必问之多线程TOP50(含答案)

    以下为大家整理了今年一线大厂面试被问频率较高的多线程面试题,由于本人的见识局限性,所以可能不是很全面,也欢迎大家在后面留言补充,谢谢. 1.什么是线程? 2.什么是线程安全和线程不安全? 3.什么是自 ...

  4. 各大互联网公司java开发面试常问问题

    本人是做java开发的,这是我参加58,搜狐,搜狗,新浪微博,百度,腾讯文学,网易以及其他一些小的创业型公司的面试常被问的问题,当然有重复,弄清楚这些,相信面试会轻松许多. 1. junit用法,be ...

  5. [Flutter] 一些面试可能会问基础知识

    1. Flutter 是什么? Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面. Flutter可以与现有的代码一起工作.在全世界,Flutter正在被 ...

  6. 阿里JAVA开发面试常问问题总结2

    线程与进程 进程是可并发运行的程序在某个数据集合上的一次计算活动.也是操作系统进行资源分配和调度的基本单位. 线程是操作系统进程中能够并发运行的实体,是处理器调度和分派的基本单位. 每一个进程内可包括 ...

  7. java中的上下问解释以及ServletContext介绍使用

    摘抄的:所谓上下文,它是用来存储系统的一些初始化信息,例如在jboss中通过配置文件指定了数据源,那么在jboss启动的时候就把这个文件的相关信息上下文中,于是在我们使用这个数据源的时候,就需要先获得 ...

  8. Python--day39--管道和数据共享(面试可能会问到)

    1,管道 上面所述挂起即为阻塞 管道.py from multiprocessing import Pipe, Process def func(conn1,conn2): conn2.close() ...

  9. 【问题记录】MySQL中时间戳转日期格式和Java中时间戳转日期格式偶尔不一致

    背景: MySQL的某个字段存放着一些时间戳格式的时间. 问题描述: Java程序将MySQL中的时间戳字段取出来,在Java程序中转成yyyy-MM-dd HH:mm:ss格式的时候,偶尔会出现转化 ...

随机推荐

  1. Framework启动过程浅析

    浅显的总结一下Framework启动大概过程 总体 Android底层是linux系统,因而在开机时仍然是运行天字第一号进程inti,读取init.rc来创建第一个Dalvik进程zygote,下面是 ...

  2. iOS中 数据持久化 UI高级_17

    数据持久化的本质就是把数据由内写到本地(硬盘中),在iOS指将数据写到沙盒文件夹下: 沙盒机制:指的就是采用沙盒文件夹的形式管理应用程序的本地文件,而且沙盒文件夹的名字是随机分配的,采用十六进制方法命 ...

  3. protobuf代码生成

    windows : 1,两个文件:proto.exe, protobuf-java-2.4.1.jar 2,建立一个工程TestPb,在下面建立一个proto文件件,用来存放[.proto]文件 3, ...

  4. Socket编程实践(2) --Socket编程导引

    什么是Socket? Socket可以看成是用户进程与内核网络协议栈的接口(编程接口, 如下图所示), 其不仅可以用于本机进程间通信,可以用于网络上不同主机的进程间通信, 甚至还可以用于异构系统之间的 ...

  5. 【一天一道LeetCode】#33. Search in Rotated Sorted Array

    一天一道LeetCode 本系列文章已全部上传至我的github,地址: https://github.com/Zeecoders/LeetCode 欢迎转载,转载请注明出处 (一)题目 Suppos ...

  6. 一键安装gitlab7在rehl6.4上

    一键安装gitlab7在rehl6.4上 参考原文: http://blog.csdn.net/ubuntu64fan/article/details/38367579 1 关于gitlab7 无论如 ...

  7. Linux Shell 命令--rename

    重命名文件,经常用到mv命令,批量重命名文件rename是最好的选择,Linux的rename 命令有两个版本,一个是C语言版本的,一个是Perl语言版本的,判断方法:输入man rename 看到第 ...

  8. 《java入门第一季》之Arrays类前传(排序案例以二分查找注意的问题)

    根据排序算法,可以解决一些小案例.举例如下: /* * 把字符串中的字符进行排序. * 举例:"dacgebf" * 结果:"abcdefg" * * 分析: ...

  9. 图形绘制中的PorterDuffXfermode

    1.概述 在android图形渲染中 会使用到图像混合模式 <span style="font-size:18px;">setXfermode(Xfermode xfe ...

  10. STL - set和multiset

    set/multiset的简介 set是一个集合容器,其中所包含的元素是唯一的,集合中的元素按一定的顺序排列.元素插入过程是按排序规则插入,所以不能指定插入位置. set采用红黑树变体的数据结构实现, ...