2019/7/30

1.java 和 C++ 的区别?

都是面向对象的语言,都支持封装、继承和多态

Java 不提供指针来直接访问内存,程序内存更加安全

Java 的类是单继承的,C++ 支持多重继承;虽然 Java 的类不可以多继承,但是接口可以多继承

Java 有自动内存管理机制,不需要程序员手动释放无用内存

2.java 程序的主类--------------》主类是 Java 程序执行的入口点。

应用程序中的主类:

这个主类是指包含 main()方法的类,主类不一定要求是 public类

小程序中的主类:

这个主类是一个继承自系统类 JApplet 或 Applet 的子类,小程序的主类要求必须是 public 类

总结:简单说应用程序是从主线程启动(也就是 main() 方法)。applet 小程序没有main 方法,主要是嵌在浏览器页面上运行(调用 init()线程或者 run()来启动)

3.继承的理解

继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。

通过使用继承我们能够非常方便地复用以前的代码。

子类拥有父类非 private 的属性和方法

子类可以拥有自己属性和方法,即子类可以对父类进行扩展。

子类可以用自己的方式实现父类的方法。------override

4.多态的理解

必须在由程序运行期间才能决定。

在 Java 中有两种形式可以实现多态:继承(多个子类对同一方法的重写)和接口(实现接口并覆盖接口中同一方法)。

5.封装的理解

封装把一个对象的属性私有化,同时提供一些可以被外界访问的属性的方法,

6.无参构造的理解

Java 程序在执行子类的构造方法之前,如果没有用 super() 来调用父类特定的构造方法,则会调用父类中“没有参数的构造方法

如果父类中只定义了有参数的构造方法,而在子类的构造方法中又没有用 super() 来调用父类中特定的构造方法,则编译时将发生错误

在调用子类构造方法之前会先调用父类的无参构造方法-------》帮助子类做初始化工作!!!

7.静态方法和实例方法有什么不同

在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式。而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象。

静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制.

8.== 和 equals()

== : 它的作用是判断两个对象的地址是不是相等。即,判断两个对象是不是同一个对象。(基本数据类型==比较的是值,引用数据类型==比较的是内存地址)

equals() : 它的作用也是判断两个对象是否相等。但它一般有两种使用情况:

情况 1:类没有覆盖 equals() 方法。则通过 equals() 比较该类的两个对象时,等价于通过“==”比较这两个对象。

情况 2:类覆盖了 equals() 方法。一般,我们都覆盖 equals() 方法来两个对象的内容相等;若它们的内容相等,则返回 true (即,认为这两个对象相等)。

9.hashCode() 和 equals()

hashCode() 的作用是获取哈希码,也称为散列码;它实际上是返回一个 int 整数。这个哈希码的作用是确定该对象在哈希表中的索引位置

hashCode() 定义在 JDK 的 Object.java 中,这就意味着 Java 中的任何类都包含有 hashCode() 函数。

两者的相关规定:

1. 如果两个对象相等,则 hashcode 一定也是相同的

2. 两个对象相等,对两个对象分别调用 equals 方法都返回 true

3. 两个对象有相同的 hashcode 值,它们也不一定是相等的(存储结构:哈希值一样的以链表串起来,超过负载因子后转为红黑树结构)

4. 因此,equals 方法被覆盖过,则 hashCode 方法也必须被覆盖

5. hashCode() 的默认行为是对堆上的对象产生独特值。如果没有重写hashCode(),则该 class 的两个对象无论如何都不会相等(即使这两个对象指向相同的数据)

10.为什么JAVA 中只有值传递?

引用传递(pass by reference)是指在调用函数时将实际参数的地址直接传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。

值传递(pass by value)是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。

所以,值传递和引用传递的区别并不是传递的内容。而是实参到底有没有被复制一份给形参。

所以说,Java中其实还是值传递的,只不过对于对象参数,值的内容是对象的引用。(注意参照物是谁)

总结:

无论是值传递还是引用传递,其实都是一种求值策略(Evaluation strategy)。在求值策略中,还有一种叫做按共享传递(call by sharing)。

其实Java中的参数传递严格意义上说应该是按共享传递。

按共享传递,是指在调用函数时,传递给函数的是实参的地址的拷贝(如果实参在栈中,则直接拷贝该值)。在函数内部对参数进行操作时,需要先拷贝的地址寻找到具体的值, 再进行操作。如果该值在栈中,那么因为是直接拷贝的值,所以函数内部对参数进行操作不会对外部变量产生影响。如果原来拷贝的是原值在堆中的地址,那么需要先根 据该地址找到堆中对应的位置,再进行操作。因为传递的是地址的拷贝所以函数内对值的操作对外部变量是可见的。

简单点说,Java中的传递,是值传递,而这个值,实际上是对象的引用。

而按共享传递其实只是按值传递的一个特例罢了。所以我们可以说Java的传递是按共享传递,或者说Java中的传递是值传递。

11.以下4种特殊情况,finally块不会被执行!!

1. 在 finally 语句块中发生了异常。

2. 在前面的代码中用了 System.exit()退出程序。

3. 程序所在的线程死亡。

4. 关闭 CPU。

12.Java 序列化中如果有些字段不想进行序列化怎么办

对于不想进行序列化的变量,使用 transient 关键字修饰。

transient 关键字的作用是:阻止实例中那些用此关键字修饰的的变量序列化;当对象被反序列化时,被 transient 修饰的变量值不会被持久化和恢复。

transient 只能修饰变量,不能修饰类和方法

13.获取用键盘输入常用的的两种方法

方法 1:通过 Scanner

Scanner input = new Scanner(System.in);

String s = input.nextLine();

input.close();

方法 2:通过 BufferedReader

BufferedReader input = new BufferedReader(new InputStreamReader(System.in));

String s = input.readLine();

java无参试题_JavaEE基础面试题0相关推荐

  1. java无参构造赋值怎么没用_Java有参构造方法和无参构造方法详解

    一:有参数构造方法 在之前我们要为一个对象赋值,先要创建好对象之后然后"对象名.属性名"或者调用属性的setter为属性赋值.但是在很多时候觉得这样做很麻烦,最好的做法是在创建对象 ...

  2. Java面试宝典系列之基础面试题String、变量、类与对象、集合类、SSH(一)

    作者:egg 邮箱:xtfggef@gmail.com 微博:http://weibo.com/xtfggef 博客:http://blog.csdn.net/zhangerqing(转载请说明出处) ...

  3. java基础机试题_Java基础机试题

    package day8; import java.util.Scanner; /** * Java基础机试题 * @author:lyrand * */ public class convert { ...

  4. Java面试宝典系列之基础面试题String、变量、类与对象、集合类、SSH(三)

    Java面试宝典之数据结构基础 -- 线性表篇 作者:egg 邮箱:xtfggef@gmail.com 微博:http://weibo.com/xtfggef 博客:http://blog.csdn. ...

  5. 计算机基础知识教程excel试题,计算机基础知识试题

    一. 单项选择 1.下列关于计算机存储器的叙述中,正确的是 ( ) A 外存储器不能与CPU 直接交换数据 B 计算机断电后,内存储器中的信息会完全消失 C 计算机断电后,软盘中的信息将完全消失 D ...

  6. java无参_Java中无参无返回和无参带返回的类型方法

    在前面的文章中,我们学习了java中方法的定义.分类及调用的相关知识.知道了java中的方法其实可以叫做函数,目的是实现某些我们想要的功能,也知道了java中方法的分类共有四种:无参无返回.无参带返回 ...

  7. 计算机选择题基础知识试题,计算机基础知识试题及答案选择题

    <计算机基础知识试题及答案选择题>由会员分享,可在线阅读,更多相关<计算机基础知识试题及答案选择题(8页珍藏版)>请在人人文库网上搜索. 1.计算机基础知识试题及答案选择题(一 ...

  8. 计算机基础办公应用考试试题,计算机基础考试试题库和答案.doc

    专业资料 word完美格式 计算机基础考试试题 1.计算机中数据的表示形式是 A)八进制 B)十进制 C)二进制 D)十六进制 2.硬盘工作时应特别注意避免 A)噪声 B)震动 C)潮湿 D)日光 3 ...

  9. 计算机应用基础word试题,计算机应用基础Word试题.doc

    计算机应用基础Word试题 <计算机应用基础>Word试题 题号题目答案难度1在Word 2003中,"表格和边框"工具栏可从______菜单下调出A.编辑 B.格式 ...

最新文章

  1. 开源中国Android客户端v2.6.5代码开源啦!
  2. codeforce训练2总结
  3. 数据结构——哈弗曼编码问题
  4. C语言用字符串sex储存,2005年计算机等级考试二级C语言全真标准预测试卷(2)
  5. 一篇文章带你读懂 MySQL 和 InnoDB
  6. Pycharm Professional(专业版2018.2.1)最简单方法破解,亲测有效(转)
  7. java银行叫号_银行排队叫号系统
  8. 流程工业MES管理系统有什么特点
  9. C++ PRIMER 5TH 课后题答案1.16
  10. 【老生谈算法】matlab实现香农编码源码——香农编码
  11. 油猴Tampermonkey及脚本使用
  12. 【全志V3s / LicheePi Zero / 荔枝派】Air724合宙4G模块RNDIS拨号
  13. MYSQL的基础命令一
  14. linux下mp3编码库libmp3lame的开发使用
  15. [Hulu] 数组最大价值
  16. Altium Designer PCB板框扩大
  17. 【WPS】WPS之如何给文件加密?
  18. su -user -c
  19. 菜鸟修行之路----项目实战:微人事项目之项目概述
  20. N2N组建虚拟局域网

热门文章

  1. Linux上安装Julia-1.1
  2. (十三)事件分发器——event()函数,事件过滤
  3. Django框架(上传Excel文件并读取)
  4. 22-高级特性之内建方法(3)
  5. MongoDB 树形模型
  6. python django 模板
  7. 关于幸福的开发(搞笑版)
  8. 电动力学每日一题 2021/10/23 载流板产生的电磁场
  9. Windows C/C++ 语言菜单基本编程
  10. C++ string源码