logo资料库

Java基础知识.docx

第1页 / 共18页
第2页 / 共18页
第3页 / 共18页
第4页 / 共18页
第5页 / 共18页
第6页 / 共18页
第7页 / 共18页
第8页 / 共18页
资料共18页,剩余部分请下载后查看
1. 面向对象和面向过程的区别
面向过程
面向对象
2. Java 语言有哪些特点?
3. 什么是 JDK?什么是 JRE?什么是 JVM?三者之间的联系与区别
4. 什么是字节码?采用字节码的最大好处是什么?
先看下 java 中的编译器和解释器:   
采用字节码的好处: 
5. Java和C++的区别
6. 什么是 Java 程序的主类?应用程序和小程序的主类有何不同?
7. Java 应用程序与小程序之间有那些差别?
8. 字符型常量和字符串常量的区别
9. 构造器 Constructor 是否可被 override
10. 重载和重写的区别
11. Java 面向对象编程三大特性:封装、继承、多态
封装
继承
多态
12. String 和 StringBuffer、StringBuilder 的区别是什么?Str
13. 自动装箱与拆箱
14. 在一个静态方法内调用一个非静态成员为什么是非法的?
15. 在 Java 中定义一个不做事且没有参数的构造方法的作用
16. import java和javax有什么区别
17. 接口和抽象类的区别是什么?
18. 成员变量与局部变量的区别有那些?
19. 创建一个对象用什么运算符?对象实体与对象引用有何不同?
20. 什么是方法的返回值?返回值在类的方法里的作用是什么?
21. 一个类的构造方法的作用是什么?若一个类没有声明构造方法,该程序能正确执行吗?为什么?
22. 构造方法有哪些特性?
23. 静态方法和实例方法有何不同?
24. 对象的相等与指向他们的引用相等,两者有什么不同?
25. 在调用子类构造方法之前会先调用父类没有参数的构造方法,其目的是?
26. == 与 equals(重要)
27. hashCode 与 equals(重要)
hashCode()介绍
为什么要有 hashCode
hashCode()与equals()的相关规定
28. Java中的值传递和引用传递
29. 简述线程,程序、进程的基本概念。以及他们之间关系是什么?
30. 线程有哪些基本状态?这些状态是如何定义的?
31 关于 final 关键字的一些总结
Java基础学习书籍推荐
1. 面向对象和面向过程的区别 2 面向过程....................................................................................................................................................... 2 面向对象....................................................................................................................................................... 2 2. Java 语言有哪些特点?...............................................................................................................................2 3. 什么是 JDK?什么是 JRE?什么是 JVM?三者之间的联系与区别......................................... 3 4. 什么是字节码?采用字节码的最大好处是什么?............................................................................ 4 先看下 java 中的编译器和解释器:.................................................................................................4 采用字节码的好处:................................................................................................................................ 4 5. Java 和 C++的区别........................................................................................................................................ 4 6. 什么是 Java 程序的主类?应用程序和小程序的主类有何不同?............................................ 5 7. Java 应用程序与小程序之间有那些差别?..........................................................................................5 8. 字符型常量和字符串常量的区别.............................................................................................................5 9. 构造器 Constructor 是否可被 override............................................................................................. 6 10. 重载和重写的区别 ...................................................................................................................................... 6 11. Java 面向对象编程三大特性:封装、继承、多态.............................................................................6 封装.................................................................................................................................................................6 继承.................................................................................................................................................................7 多态.................................................................................................................................................................7 12. String 和 StringBuffer、StringBuilder 的区别是什么?String 为什么是不可变的?.... 7 13. 自动装箱与拆箱...........................................................................................................................................8 14. 在一个静态方法内调用一个非静态成员为什么是非法的?....................................................... 8 15. 在 Java 中定义一个不做事且没有参数的构造方法的作用........................................................9 16. import java 和 javax 有什么区别 ............................................................................................................9 17. 接口和抽象类的区别是什么?...............................................................................................................9 18. 成员变量与局部变量的区别有那些?...............................................................................................10 19. 创建一个对象用什么运算符?对象实体与对象引用有何不同?........................................... 10 20. 什么是方法的返回值?返回值在类的方法里的作用是什么? ................................................11 21. 一个类的构造方法的作用是什么?若一个类没有声明构造方法,该程序能正确执行吗? 为什么?...............................................................................................................................................................11 22. 构造方法有哪些特性?.......................................................................................................................... 11 23. 静态方法和实例方法有何不同? ........................................................................................................11 24. 对象的相等与指向他们的引用相等,两者有什么不同?......................................................... 12 25. 在调用子类构造方法之前会先调用父类没有参数的构造方法,其目的是? .................... 12 26. == 与 equals(重要).................................................................................................................................12 27. hashCode 与 equals(重要)............................................................................................................ 13 hashCode()介绍.................................................................................................................................13 为什么要有 hashCode..........................................................................................................................14 hashCode()与 equals()的相关规定...................................................................................... 14 28. Java 中的值传递和引用传递..................................................................................................................15 29. 简述线程,程序、进程的基本概念。以及他们之间关系是什么?.......................................15 30. 线程有哪些基本状态?这些状态是如何定义的?..........................................................................15 31 关于 final 关键字的一些总结 ..............................................................................................................17 Java 基础学习书籍推荐............................................................................................................................................ 18 1 / 18
1. 面向对象和面向过程的区别 面向过程 优点: 性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗 资源;比如单片机、嵌入式开发、Linux/Unix 等一般采用面向过程开发,性能是 最重要的因素。 缺点: 没有面向对象易维护、易复用、易扩展 面向对象 优点: 易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性, 可以设计出低耦合的系统,使系统更加灵活、更加易于维护 缺点: 性能比面向过程低 2. Java 语言有哪些特点? 1. 简单易学; 2. 面向对象(封装,继承,多态); 3. 平台无关性( Java 虚拟机实现平台无关性); 4. 可靠性; 5. 安全性; 2 / 18
6. 支持多线程( C++ 语言没有内置的多线程机制,因此必须调用操作系统 的多线程功能来进行多线程程序设计,而 Java 语言却提供了多线程支 持); 7. 支持网络编程并且很方便( Java 语言诞生本身就是为简化网络编程设计 的,因此 Java 语言不仅支持网络编程而且很方便); 8. 编译与解释并存; 3. 什么是 JDK?什么是 JRE?什么是 JVM?三者 之间的联系与区别 这几个是 Java 中很基本很基本的东西,但是我相信一定还有很多人搞不清楚! 为什么呢?因为我们大多数时候在使用现成的编译工具以及环境的时候,并没有 去考虑这些东西。 JDK: 顾名思义它是给开发者提供的开发工具箱,是给程序开发者用的。它除了包 括完整的 JRE(Java Runtime Environment),Java 运行环境,还包含了其他供 开发者使用的工具包。 JRE: 普通用户而只需要安装 JRE(Java Runtime Environment)来运行 Java 程 序。而程序开发者必须安装 JDK 来编译、调试程序。 JVM:当我们运行一个程序时,JVM 负责将字节码转换为特定机器代码,JVM 提 供了内存管理/垃圾回收和安全机制等。这种独立于硬件和操作系统,正是 java 程序可以一次编写多处执行的原因。 区别与联系: 1. 2. JDK 用于开发,JRE 用于运行 java 程序 ; JDK 和 JRE 中都包含 JVM ; 3 / 18
3. JVM 是 java 编程语言的核心并且具有平台独立性。 4. 什么是字节码?采用字节码的最大好处是什么? 先看下 java 中的编译器和解释器: Java 中引入了虚拟机的概念,即在机器和编译程序之间加入了一层抽象的虚拟 的机器。这台虚拟的机器在任何平台上都提供给编译程序一个的共同的接口。 编译程序只需要面向虚拟机,生成虚拟机能够理解的代码,然后由解释器来将虚 拟机代码转换为特定系统的机器码执行。在 Java 中,这种供虚拟机理解的代码 叫做字节码(即扩展名为 .class 的文件),它不面向任何特定的处理器,只面向 虚拟机。 每一种平台的解释器是不同的,但是实现的虚拟机是相同的。Java 源程序经过 编译器编译后变成字节码,字节码由虚拟机解释执行,虚拟机将每一条要执行的 字节码送给解释器,解释器将其翻译成特定机器上的机器码,然后在特定的机器 上运行。这也就是解释了 Java 的编译与解释并存的特点。 Java 源代码---->编译器---->jvm 可执行的 Java 字节码(即虚拟指 令)---->jvm---->jvm 中解释器----->机器可执行的二进制机器码---->程序运行。 采用字节码的好处: Java 语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低 的问题,同时又保留了解释型语言可移植的特点。所以 Java 程序运行时比较高 效,而且,由于字节码并不专对一种特定的机器,因此,Java 程序无须重新编译 便可在多种不同的计算机上运行。 5. Java 和 C++的区别 4 / 18
我知道很多人没学过 C++,但是面试官就是没事喜欢拿咱们 Java 和 C++ 比 呀!没办法!!!就算没学过 C++,也要记下来!  都是面向对象的语言,都支持封装、继承和多态    Java 不提供指针来直接访问内存,程序内存更加安全 Java 的类是单继承的,C++ 支持多重继承;虽然 Java 的类不可以多继 承,但是接口可以多继承。 Java 有自动内存管理机制,不需要程序员手动释放无用内存 6. 什么是 Java 程序的主类?应用程序和小程序的 主类有何不同? 一个程序中可以有多个类,但只能有一个类是主类。在 Java 应用程序中,这个 主类是指包含 main()方法的类。而在 Java 小程序中,这个主类是一个继承 自系统类 JApplet 或 Applet 的子类。应用程序的主类不一定要求是 public 类, 但小程序的主类要求必须是 public 类。主类是 Java 程序执行的入口点。 7. Java 应用程序与小程序之间有那些差别? 简单说应用程序是从主线程启动(也就是 main() 方法)。applet 小程序没有 main 方法,主要是嵌在浏览器页面上运行(调用 init()线程或者 run()来启动),嵌入浏 览器这点跟 flash 的小游戏类似。 8. 字符型常量和字符串常量的区别 5 / 18
1. 形式上: 字符常量是单引号引起的一个字符 字符串常量是双引号引起的 若干个字符 2. 含义上: 字符常量相当于一个整形值( ASCII 值),可以参加表达式运算 字 符串常量代表一个地址值(该字符串在内存中存放位置) 3. 占内存大小 字符常量只占一个字节 字符串常量占若干个字节(至少一个 字符结束标志) 9. 构造器 Constructor 是否可被 override 在讲继承的时候我们就知道父类的私有属性和构造方法并不能被继承,所以 Constructor 也就不能被 override,但是可以 overload,所以你可以看到一个类 中有多个构造函数的情况。 10. 重载和重写的区别 重载: 发生在同一个类中,方法名必须相同,参数类型不同、个数不同、顺序 不同,方法返回值和访问修饰符可以不同,发生在编译时。 重写: 发生在父子类中,方法名、参数列表必须相同,返回值范围小于等于父 类,抛出的异常范围小于等于父类,访问修饰符范围大于等于父类;如果父类方 法访问修饰符为 private 则子类就不能重写该方法。 11. Java 面向对象编程三大特性:封装、继承、多态 封装 封装把一个对象的属性私有化,同时提供一些可以被外界访问的属性的方法,如 果不想被外界方法,我们大可不必提供方法给外界访问。但是如果一个类没有提 供给外界访问的方法,那么这个类也没有什么意义了。 6 / 18
继承 继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新 的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。通过使用 继承我们能够非常方便地复用以前的代码。 关于继承如下 3 点请记住: 1. 子类拥有父类非 private 的属性和方法。 2. 子类可以拥有自己属性和方法,即子类可以对父类进行扩展。 3. 子类可以用自己的方式实现父类的方法。(以后介绍)。 多态 所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发 出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量 倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现 的方法,必须在由程序运行期间才能决定。 在 Java 中有两种形式可以实现多态:继承(多个子类对同一方法的重写)和接 口(实现接口并覆盖接口中同一方法)。 12. String 和 StringBuffer、StringBuilder 的区别 是什么?String 为什么是不可变的? 可变性 String 类中使用字符数组保存字符串,private final char value[],所以 String 对象是不可变的。StringBuilder 与 StringBuffer 都继承自 AbstractStringBuilder 类,在 AbstractStringBuilder 中也是使用字符数组保存 字符串,char[]value,这两种对象都是可变的。 7 / 18
线程安全性 String 中的对象是不可变的,也就可以理解为常量,线程安全。 AbstractStringBuilder 是 StringBuilder 与 StringBuffer 的公共父类,定义了一 些字符串的基本操作,如 expandCapacity、append、insert、indexOf 等公共 方法。StringBuffer 对方法加了同步锁或者对调用的方法加了同步锁,所以是线 程安全的。StringBuilder 并没有对方法进行加同步锁,所以是非线程安全的。 性能 每次对 String 类型进行改变的时候,都会生成一个新的 String 对象,然后将 指针指向新的 String 对象。StringBuffer 每次都会对 StringBuffer 对象本身进 行操作,而不是生成新的对象并改变对象引用。相同情况下使用 StirngBuilder 相比使用 StringBuffer 仅能获得 10%~15% 左右的性能提升,但却要冒多线程 不安全的风险。 对于三者使用的总结:如果要操作少量的数据用 = String 单线程操作字符串缓 冲区 下操作大量数据 = StringBuilder 多线程操作字符串缓冲区 下操作大量 数据 = StringBuffer 13. 自动装箱与拆箱 装箱:将基本类型用它们对应的引用类型包装起来; 拆箱:将包装类型转换为基本数据类型; 14. 在一个静态方法内调用一个非静态成员为什么是 非法的? 8 / 18
分享到:
收藏