Java 小白 Java面试题兼答案(待更新)

79 篇文章 1 订阅
1.什么是jre 
Java Runtime Environment Java运行环境
jre只负责运行java程序的

2.什么是jdk
jdk提供给Java开发人员使用的。我们使用jdk开发的程序要交给jre去运行。
Jdk=开发工具包+jre(jvm+核心类库)。

3.字符型常量 与字符串常量的区别
字符常量是bai指用一对单引号du括起来的一个字符。如zhi‘a’,dao‘9’,‘!’
字符串常量是指用双引号(“”)括起来的0个或者多个字符组成的序列一个字符串
字符型常量:字符型常量仅含单个ASCII字符,常量长度为1。
字符串常量:字符串常量可以有若干个ASCII字符,常量长度大于等于0

4.java的数据类型有哪些
基本类型:byte short int long float double char boolean
引用类型:string

5.Java为什么能跨平台运行
因为它有虚拟机(JVM)JAVA程序不是直接在电脑上运行的,是在虚拟机上进行的,每个系统平台都是有自己的虚拟机(JVM),所以JAVA语言能跨平台。

6.String 属于是基本数据类型吗?为什么?
java中String 是个对象,是引用类型,基础类型和引用类型的区别是,基础类型只表示简单的字符或数字,基本类型仅表示简单的数据类型,引用类型可以表示复杂的数据类型,还可以操作这种数据类型的行为 。
java虚拟机处理基础类型与引用类型的方式是不一样的,对于基本类型,java虚拟机会为其分配数据类型实际占用的内存空间,而对于引用类型变量,他仅仅是一个指向堆区中某个实例的指针。

7.short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗?
答:对于short s1 = 1; s1 = s1 + 1;由于1int类型,因此s1+1运算结果也是int 型,需要强制转换类型才能赋值给short型。
而short s1 = 1; s1 += 1;可以正确编译,因为s1+= 1;相当于s1 = (short)(s1 + 1);其中有隐含的强制类型转换。

8&&&的区别?
答:虽然二者都要求运算符左右两端的布尔值都是true整个表达式的值才是true&&之所以称为短路运算是因为,如果&&左边的表达式的值是false,右边的表达式会被直接短路掉,不会进行运算。

9.用最有效率的方法计算2乘以8?
答: 2 << 3(左移3位相当于乘以23次方,右移3位相当于除以23次方)。

10.char型变量中能不能存贮一个中文汉字?为什么?
答:char型变量是用来存储Unicode编码的字符的,unicode编码字符集中包含了汉字,

11.void是什么意思
答:叫返回值 void代表没有返回任何数据,相当没有return12.方法重载与方法重写
答:同一个类里面,方法名相同,参数列表不同 参数的个数不同,同一位置参数类型不同
答:再子类中定义和父类中相同的函数,直接调用函数时,实际使用的时子类中的函数,这种情况叫做方法的重写
1.继承前提下,方法名相同,参数列表相同,返回值相同,修饰符相同,子类的权限修饰符不能比父类低
13:函数重载
答:同一个类里面,方法名相同,参数列表不同 参数的个数不同,同一位置参数类型不同

14:数组有没有length()方法?String有没有length()方法?
答:
数组是没有length()这个方法的,有length这个属性,可以计算数组的长度
String是有length()这个方法的,用来计算字符串的长度。

15:比较一下Java和JavaSciprt。
答:java是静态语言,js是动态语言
15.1-基于对象和面向对象:java是一种真正 

16.面向对象 
答:所有的功能都是以类为封装的,就是一个一个的类(类中封装了解决问题的函数)

17.面向过程
答:在整个事情的执行过程中,自己至始至终都是其中的参与者,并且要自己亲历亲为所有的步骤                                                                                                                                                                              

18.成员变量和局部变量
1、从定义上来讲:
局部变量定义在函数中
成员变量定义在类中
2、从内存存储上来讲: 局部变量随着函数的运行会在栈内存中出现,局部变量存储在栈内存中。 成员变量会随着对象的出现在堆中存在,成员变量存储在堆内存中。 
3、从初始值上来讲: 局部变量在定义时需要指定初始值(局部变量没有默认值),只有初始化之后才能使 用。成员变量可以不用初始化,有默认值。
19.类和对象
类是用来描述生活中的某一类事物。描述的是一类事物所具有的共性内容。 类只是java语言用来描述事物的一种方式。我们可以把类当做生活中某一类事物的共性 的总结和描述。
而对象是基于这个类在Java中创建出来的真实个体(实例)(在堆内存中存在)。 而把Java中的对象可以理解成生活中的具体一个实物。
车整体是一个大类,而你自己所拥有的一辆车就是一个对象。

20.封装
答:封装 继承 多态

21.java的内存分配
当我们运行java class 文件名回车之后,启动JVM
JVM把内存划分成5片区域:
1).栈内存:虽有方法运行的时候(main),进入的内存
2).堆内存:存储的容器和对象
3).方法的数据共享【本地方法区】:运行时期class(编译后的文件)文件,进入的地方
4).本地方法栈:JVM调用了系统中的功能
5).寄存器:内存和cpu之间
Main函数运行
栈内存:主要用来运行函数的,在函数中定义的所有变量,都会在这个内存开 辟空间。在栈内存中定义的变量,不初始化,是不能直接使用的。 注意:所有的函数都必须在栈内存中运行。 而jvm只会运行处于栈内存顶部的函数。 函数被加载到栈内存的动作,称为函数的压栈(入栈)。 函数执行完之后就会从栈中消失(函数的弹栈,或者叫做出栈)

22.类加载的过程

23.对象创建过程

24.面向对象思想
答:在其他类中调用工具类中的方法时的思想就是面向对象思想

25.在类里定义的属性
答:叫做成员属性,属性成员,成员变量,变量成员,全局变量,对象变量

26.饿汉式
答:无论是否使用对象,都会创建一个对象,在堆内存创建,导致内存浪费

27.java是否支持多继承
java不支持多继承,支持多重继承

28.隐式三部
1.super()//调用父类构造函数
2.为子类成员变量赋初始化的默认值 
3.构造代码块

29.何为继承
使用继承可以在两个类中建立关系,是其中一个类可以直接拥有另一个类的成员
子类也教成派生类,父类也叫超类
子类拥有父类的所有的成员,但是不包括私有成员,和构造函数

30.java支持多继承吗?
不支持
单一继承
在java中,一个类,只能直接继承一个父类
多重继承
在Java中,类支持多重继承(就是一个类的父类还可以再继承其他类)(不能循环继承)

31.再子类中想访问父类的成员属性怎么办
可以再子类中使用Super关键字调用父类函数
32.final总结
修饰类:表示该类不可被继承,格式时直接写在class关键字前面
修饰函数:表示继承这个类的子类中不能重写这个杉树,格式时直接写在函数的返回值类型前面
修饰变量:表示该变量的值不可改变,格式时直接写在变量的数据类型前面
主要:如果修饰的时引用类型的变量,则变量中保存的引用地址不可改变,但是引用指向的堆内存中的数据可以改变
32.this()super不能再同一个构造函数
答:this()和super()都必须写在第一行

33.如果父类中没有参构造函数,子类如何实例化
可以再父类中添加一个无参构造函数
再子类中手写调用父类有参构造函数

34.如果一个类的构造函数全部私有了,还可以有子类吗?
不能。因为私有的构造函数只能再本类中使用,而子类要实列化,必须调用父类的构造函数

35.抽象类的注意点
如果函数时抽象的,那么函数所在的类一定时抽象的
抽象类不能实例化对象
如果一个类继承了一个抽象类那么这个类就要重写抽象类中的所有的抽象函数

36.抽象类一定时父类吗?
答:一定是,抽象类就是通过将多个子类的共同的信息向上抽取,因为描述不清共同的功能,所有才会有抽象函数

37.抽象类中有构造方法吗?
抽象类中一定有构造函数的,这个构造函数时给继承它的子类使用的;构造函数不能是抽象的

38.类是抽象的,所有的方法必须是抽象的么?
抽象类中可以没有抽象方法

39.方法是抽象的,类一定是抽象的么?
一定是
40.抽象类有对象么?
抽象类本身没有对象,从某个角度看,又有子类对象

41.抽象类可以部署写抽象方法吗?
可以
42.抽象类可以书写非抽象方法吗?
可以

43.抽象关键字abstract不能和哪些关键字共存
因为抽象函数必须由继承他的子类去重写,所有凡是修饰后不能被继承或重写的关键字,都不能使用(private;final;staticstatic也不能和abstract共存,因为static修饰的成员那里静态的,可以直接通过类名使用,而抽象函数必须由子类重写,直接使用没有意义

44.多态

使用父类型的引用描述子类对象,就是多态

45.接口
描述继承体系之外的共性的行为的

46.接口中可以书写哪些成员
成员变量 和成员方法

47.成员变量和静态变量的区别
答:
1.两个变量的生命周期不同
成员变量随着对象的创建而存在,随着对象的被回收而释放。
静态变量随着类的加载而存在,随着类的消失而消失。
2.调用方式不同
成员变量只能被对象调用。
静态变量可以被对象调用,也可以被类调用。
3.别名不同
成员变量也称为实例变量。
静态变量称为类变量。
4.数据存储位置不同
成员变量数据存储在堆内存的对象中,所以也叫对象的特有数据。
静态变量数据存储在方法区(的静态区),所以也叫对象的共享数据。

48.在接口中书写的变量有哪些
在接口中书写的方法默认值都是public abstract关键字
在接口中,可以书写成员变量 但是默认有 public static final 这三个关键字

49.jdk8开始,接口中可以书写非抽象的方法,这个方法需要使用default关键

50.接口能否实例化对象
答:接口不能直接实例化,要使用他,需要通过一个类实现接口 一个类要实现一个接口,需要使用关键字:implements

51.一个类能否实现多个接口
一个类可以同时实现多个接口;
一个类如果实现多个接口,必须实现所有接口中的所有抽象函数

52.java中接口支不支持多继承
接口支持多继承
类和类之间是可以继承,单继承,多重继承
接口和类是实现关系,而且是多实现
接口和接口之间是继承关系,而且,接口之间支持多继承

53.Array和Arrays
Array是一个数组
Arrays是操作数字的一个工具类

54.缓冲区的概念
答:缓冲区就是用来保存缓存的临时数据的

55.StringBuffer和StringBuilder的区别
StringBuffer:线程是安全的;使用效率相对低,一般在多线程环境会使用这个
StringBuilder:线程不安全的:使用效率相对高,一般在单线程或者没有线程安全要求的地方使用

56.基本类型与包装类
八种基本类型:byte short int long float double char boolean
对应的包装类: Byte Short Integer Long Float Double Character Boolean

57.包装类能否被继承
答:包装类不能被继承

58装箱与自动拆箱
拆箱:把包装类型的对象赋值给基本类型
装箱:直接将基本类型的数据赋值给包装类型

59.装箱自动调用valueof,缓存问题
        Integer a3=2000;
        Integer b3=2000;
首先会判断数值是否在-128--127的范围内,如果满足条件,则会从缓存中寻找指定数值,诺找到缓存,则不会新建对象,只是指向指定数值
对象的包装类对象,否则,新建对象

60.缓存内存
Byte,Short,Integer,Long:缓存了-128127的包装类对象;
character:缓存了0127的包装类对象
Boolean:使用成员变量的形式缓存了truefalse的对象
浮点数的包装类中没有缓存

61.int 和Integer 哪个会占用更多的内存
Integer对象会占用更多的内存。Integer是一个对象,需要存储对象的元数据
但是int 是一个原始类型的数据,所以占用的空间更少

62.int和Integer有什么区别?分别存储在哪里?
int是基本数据类型,Integer是其包装类
1.基本数据类型存放位置:
   方法参数、局部变量存放在栈内存中的栈桢中的局部变量表
   常量存放在常量池中
2.常量池、堆内存

63.gc是什么
gc是运行垃圾回收器

64.Exception类和RuntimeException类的区别:
RuntimeException类:运行时异常,在编译的时候不检查有没有进行处理
Exception类:编译时异常,指的是,在编译的时候,编译器会检查你是否对异常进行处理了,如果没有就会报错

65.Throwable的含义
答:表示异常体系的最高父类

66.使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?
使用final关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是可以改变的。

使用final关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是可以改变的。

67.Throwable的子类
Error与Expection
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值