JAVA基础N问

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,186评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,858评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,620评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,888评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,009评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,149评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,204评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,956评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,385评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,698评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,863评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,544评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,185评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,899评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,141评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,684评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,750评论 2 351

推荐阅读更多精彩内容

  • 整理来自互联网 1,JDK:Java Development Kit,java的开发和运行环境,java的开发工具...
    Ncompass阅读 1,537评论 0 6
  • 一、基础知识:1、JVM、JRE和JDK的区别:JVM(Java Virtual Machine):java虚拟机...
    杀小贼阅读 2,373评论 0 4
  • 一:java概述: 1,JDK:Java Development Kit,java的开发和运行环境,java的开发...
    慕容小伟阅读 1,778评论 0 10
  • 一:java概述:1,JDK:Java Development Kit,java的开发和运行环境,java的开发工...
    ZaneInTheSun阅读 2,641评论 0 11
  • Win7下如何打开DOS控制台? a:开始--所有程序--附件--命令提示符 b:开始--搜索程序和文件--cmd...
    逍遥叹6阅读 1,590评论 4 12