美文网首页
JAVA基础N问

JAVA基础N问

作者: 御都 | 来源:发表于2019-07-26 00:52 被阅读0次

1.什么是 Java 虚拟机(JVM)?为什么 Java 被称作是“平台无关的编程语言”?

先从JAVA程序的执行过程说起,先将java源文件编译(*.java)编译为字节码文件(.class),然后用解释器运行该字节码,JVM就是允许该字节码文件的解释器。
举个例子:要求将同一个笔盖套在2个不同粗细的笔上,为2只笔分别陪一个转接器就能实现。转接器向上的一头接口适应笔盖,向下的接口适应笔就可以了。字节码文件相当于是笔盖,JVM相当于例子中的转接器,不同的平台相当于是不同粗细的笔。总之JVM做到向java的字节码文件提供相同的接口,向不同平台提供不同的接口。不同平台有各自不同的版本的JVM。站在字节码文件的角度来看,确实实现了在各个平台上都能执行的效果,实现了跨平台。(引用疯狂JAVA第3版P7)


image.png

JDK、JRE、JVM 分别是什么关系?

JDK >JRE>JVM
JDK:java开发的工具包,提供了java程序编译和运行所需要的各种工具和资源,包括了编译器,JRE和常用的类库。
JRE:java运行时环境,包括JVM,字节码检验和类加载器等。

3. Java 支持的数据类型有哪些?

引用数据类型:String,数组,类,接口,null
基本数据类型:byte(1),short(2),int(4),long(8),float(4),double(8)
char(1),
boolean的长度有争议,《Java虚拟机规范》中说过单个出现时以int类型来存放占4字节,以数组出现占1字节。还有说占1bit

4. 什么是自动拆装箱?

基本数据类型和它对应的包装类的转换,JAVA中除了基本数据类型外都是类,将基本数据类型封装成包装类后可以提供更多的方法,做更多的操作比如数字型字符串转化为int。JDK1.5后实现了自动拆装箱。
Interger包装类:https://www.jianshu.com/p/024193d5ba00
Character包装类:https://www.jianshu.com/p/f0a0be7eb957

5. 什么是面向对象?

面向对象一种将现实生活延伸到计算机世界中的思想,方便解决问题,一切客观存在的事物都可以看作对象。面向过程主张按功能来分析需求,最小的单位是函数,面向对象中最小的单位是类。贴近现实世界,代码复用性强。(来自疯狂javaP27)


image.png
  1. 面向对象的三大基本特性?
    封装:通过访问修饰符对类中的属性和方法做访问限制,公开需要公开的,隐藏需要隐藏的部分。(来自疯狂JAVAP130)。
    image.png
    访问修饰符
    image.png
    继承:对现有类的一种复用机制。一个类如果继承现有的类,则这个类将拥有被继承类的所有非私有特性(属性和操作)。这里指的继承包含:类的继承和接口的实现。(详情https://www.jianshu.com/p/dd9dbf82b026
    多态:不同时刻呈现不同状态,继承,方法重写,父类引用变量指向子类是多态的前提。时间可以分为运行时态和编译时,多态只针对非静态成员方法,属性和构造方法没有多态

7 什么是值传递和引用传递?

值传递是对基本型变量而言的,传递的是该变量的一个副本,改变副本不影响原变量。
引用传递一般是对于对象型变量而言的,传递的是该对象地址的一个副本,并不是原对象本身。一般认为,Java 内的传递都是值传递,Java 中实例对象的传递是引用传递。

8. Java 中,什么是构造方法?什么是构造方法重载?什么是复制构造方法?

构造方法是指类中显式返回该类的对象的方法,创建对象时在调用构造方法前就已经隐式创建好了对象,此时对象中的方法只能被this调用。构造方法可以对被创建对象进行初始化。
多个不同参数列表的构造方法称之为构造方法的重载
它在创建对象时,是使用同一类中之前创建的对象来初始化新创建的对象

9单例模式

https://www.jianshu.com/p/110ec6e3315a
final:https://www.jianshu.com/p/5a01709c7c0b

10 工厂模式

https://www.jianshu.com/p/8ce955121bff

11. String和StringBuilder、StringBuffer的区别?

String 中存放的是内容和长度都不可变的字符序列
StringBuffer StringBuilder中存放内容和长度都可以变化的字符序列
StringBuffer是同步的,数据安全,但效率低
StringBuilder 是不同步的,效率高,数据不安全,但实际中基本都是单线程,所有常用StringBuilder

12 Java 集合框架有哪些?说出一些集合框架的优点?

[List子类及其特点]
ArrayList
底层数据结构是数组,查询快,增删慢
数据非安全(不同步),效率高
Vector
底层数据结构是数组,查询快,增删慢
数据安全(同步),效率低。因为是安全的所以查询也慢了,后面有新的替代,现在基本不用。
LinkedList
底层数据结构是链表,查询慢,增删快
数据非安全(不同步),效率高
【根据不同的需求使】
查询的操作多:ArrayList
增删的操作多:LinkedList

image.png
(图片来自于https://blog.csdn.net/zhangqunshuai/article/details/80660974

【参考】
https://www.jianshu.com/p/a692ccc94ca0

相关文章

  • JAVA基础N问

    1.什么是 Java 虚拟机(JVM)?为什么 Java 被称作是“平台无关的编程语言”? 先从JAVA程序的执行...

  • 【知识详解】JAVA基础(秋招总结)

    JAVA基础 目录 JAVA基础 问:面向过程(POP)和面向对象(OOP)? 问:Python和Java的区别?...

  • Java书籍推荐

    1、Java基础书籍 《Head First Java》 下载地址 https://download.csdn.n...

  • 学习Android从入门到成仙

    巧妇难为无米之炊,要学习就得先有资料:【Java基础篇】《21天学通Java》密码: n1ux 《疯狂Java讲义...

  • (小结)scala和Java基础语法上的区别

    这里小结一下scala和Java基础语法上的区别 1.变量的声明java :变量:private String n...

  • Java 基础

    Java 基础01Java开发入门 Java 基础02Java编程基础 Java 基础03面向对象 Java 基础...

  • java一些基础知识点

    java基础 hashmap: 1,hashmap:构成原理,扩容过程,put过程,为什么长度总是2的N次方,是否...

  • 技术体系

    一,java核心 java基础,jvm,算法,多线程,设计模式 Java基础:java基础相关,全栈java基础 ...

  • Netty 源码分析之ByteBuf

    ByteBuf基础 Java Nio 的Buffer 在进行数据传输的过程中,我们经常会用到缓冲区。在Java N...

  • 面试题汇总

    1.Java基础面试问题 Java基础之基础问题 Java基础之面向对象 Java基础之数据结构 Java基础之I...

网友评论

      本文标题:JAVA基础N问

      本文链接:https://www.haomeiwen.com/subject/myjkrctx.html