前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java 面试题(一)

Java 面试题(一)

作者头像
万能青年
发布2019-09-19 15:41:53
6540
发布2019-09-19 15:41:53
举报

一、基本数据类型的类型转换

概述:Java程序中要求参与的计算的数据,必须要保证数据类型的一致性,如果数据类型不一致将发生类型的转换。

特点:分为自动类型转换和强制类型转换

具体:自动类型转换: 1、系统自动完成的,不需要程序员手动修改代码 2、将取值范围小的类型 自动提升为 取值范围大的类型 强制类型转换: 1、需要程序员手动修改代码 2、语法: 范围小的类型 变量名 = (范围小的类型)范围大的类型的数据 3、从范围小 到 范围大(将取值范围大的类型强制转换成取值范围小的类型。)

注意:强制类型转换可能会造成数据的丢失 Boolean类型不能发生强制类型转换 byte \ short \ char 这三种数据类型发生数学运算时,会自动提升为int类型

二、if多分支语句和switch多分支语句的异同之处

相同:

都是分支语句,都可以进行超过一种情况进行判断处理

不同:

switch更适合判断条件单一的多种情况的判断,在分支执行完后(如果没有break跳出),不加判断地执行下去;而if—elseif---else多分枝主要适用于分支较少的分支结构,判断类型不是单一,只要一个分支被执行后,后边的分支不再执行。

switch为等值判断(不允许比如>= <=),而if为等值和区间都可以,if的使用范围大。

三、面向过程和面向对象的区别

相同:

两者都是软件开发思想,先有面向过程,后有面向对象,针对面向过程不足之处推出了面向对象的开发思想。

不同:

编程思路不同: 面向过程以实现功能的函数开发为主,而面向对象要首先抽象出类、属性及其方法,然后通过实例化类、执行方法来完成功能。

封装性:都具有封装性,但是面向过程是封装的是功能,而面向对象封装的是数据和功能。

面向对象具有继承性和多态性,而面向过程没有继承性和多态性,所以面向对象优势是明显。

四、基本数据类型和包装类

八个基本数据包装类型:

基本数据类型

包装类

byte

Byte

boolean

Boolean

short

Short

char

Character

int

Integer

long

Long

float

Float

double

Double

为什么要引入包装类:

让基本类型具备对象的特征,实现更多的功能.

Java是一个面向对象的编程语言,基本类型并不具有对象的性质,为了让基本类型也具有对象的特征,就出现了包装类型(如我们在使用集合类型Collection时就一定要使用包装类型而非基本类型),它相当于将基本类型“包装起来”,使得它具有了对象的性质,并且为其添加了属性和方法,丰富了基本类型的操作。

举例:int integer

int 一般做为数值参数就够了

integer 一般做类型转换的时候用的较多

Integer是int的封装类,里面有很多进行处理的静态方法

Integer是对象而int不是,内存的分配位置也不一样int是一种基本数据类型,而Integer是相应于int的类类型,称为对象包装。

实现这种对象包装的目的主要是因为类能够提供必要的方法,用于实现基本数据类型的数值与可打印字符串之间的转换,以及一些其他的实用程序方法;

另外,有些数据结构库类只能操作对象,而不支持基本数据类型的变量,包装类能够把基本数据类型转换成等价的对象,从而可以利用数据结构库类进行处理。

————————————————

版权声明:本文为CSDN博主「追梦者_wang」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/wang_8649/article/details/72129616

五、什么是序列化

概述:

把JAVA对象转换为字节序列的过程就称为对象的序列化。

作用:

一般用在持久化对象,把对象保存到磁盘中,或者在网络中传递对象时使用。

底层:

使用ObjectOutPutStream的writeObject(Object obj)的方法就可以将参数指定的对象进行序列化,并且把得到的字节流写到一个目标输出流上去

使用:

只要一个类实现了java.io.Serializable接口就标识为可序列化类,使用对象流可以对该类生成的对象做操作。

注意:

Serializable接口本身什么都没有,仅仅作为一个标识存在,一般实现Serializable接口的对象还有一个serialVersionUID字段(控制序列化版本号),如果不自己写的话,jvm会声明一个。如果已经序列化好的对象修改了类属性,反序列化的时候会报错。自己写版本号的话,会把新增字段的值设为null,不报错。

六、java中的多态

有三个:

1、继承的存在;(继承是多态的基础,没有继承就没有多态)

2、子类重写父类的方法;(具有相同的函数名称、参数列表,并且子类的返回值与父类相同或者是父类返回类型的子类型;子类方法的访问权限不能小于父类方法的访问权限;子类方法不能比父类方法抛出更多的编译时异常)

3、父类引用变量指向子类对象(常见)

七、接口和抽象类的区别

区别:

  1. 接口中所有的方法隐含的都是抽象的。而抽象类则可以同时包含抽象和非抽象的方法。
  2. 类可以实现很多个接口,但是只能继承一个抽象类
  3. 类可以不实现抽象类和接口声明的所有方法,当然,在这种情况下,类也必须得声明成是抽象的。
  4. 抽象类可以在不提供接口方法实现的情况下实现接口。
  5. Java接口中声明的变量默认都是final的。抽象类可以包含非final的变量。
  6. Java接口中的成员函数默认是public的。抽象类的成员函数可以是private,protected或者是public。
  7. 接口是绝对抽象的,不可以被实例化,抽象类也不可以被实例化。
  8. 一个类实现接口的话要实现接口的所有方法,而抽象类不一定

两者怎么选择呢?

1.抽象类是对事物的抽象,它包含属性和行为(方法)的抽象,而接口是对行为的一种抽象。我们在选择时候可以根据这点来确定。如飞机和鸟,它没有共同属性,但是他们有共同的行为——飞,这个时候我们可以用接口。而民用飞机、战斗机等他们都是飞机一种,这个时候我们可以将飞机座位一个抽象类。

2.从设计层面来说,抽象类有很多子类,它是一种模板式方法。接口是一种行为规范,它是一种辐射式设计。什么是模板式方法呢?举个例子:PPT b,c,d都使用了A模板,现在A模板中增添了一个公共的功能,我们不需要对b,c,d就行改变。什么是辐射式设计?举个例子:上帝创造了动物,给每个动物都创建了吃、走等方法,各个动物具体的实现都不同,有一天上帝觉得动物们动的太慢了,于是又增加了一个跑的方法,那么每个动物都要有一个新的具体实现跑的方式。

————————————————

版权声明:本文为CSDN博主「china_tanjun」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/qq_33253647/article/details/78052767

八、什么是反射

概述

Java反射就是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;并且能改变它的属性。

特点

反射提高了Java程序的灵活性和扩展性,降低耦合性,提高自适应能力。它允许程序创建和控制任何类的对象,无需提前硬编码目标类。

反射会比通常的使用要慢,也会模糊程序的内部逻辑。

使用:

1、通过 Class 对象的 forName() 静态方法来获取,用的最多,2、直接通过 类名.class 的方式得到,该方法最为安全可靠,程序性能更高3、通过对象调用 getClass() 方法来获取,通常应用在:比如你传过来一个 Object类型的对象,而我不知道你具体是什么类,用这种方法

通过 Class 类调用API可以获取成员变量、成员方法、接口、超类、构造方法等

总结

灵活使用反射能让我们代码更加灵活,这里比如JDBC原生代码注册驱动,Spring 的 AOP等等都有反射的实现。但是凡事都有两面性,反射也会消耗系统的性能,增加复杂性等。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JavaArtisan 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、基本数据类型的类型转换
    • 概述:Java程序中要求参与的计算的数据,必须要保证数据类型的一致性,如果数据类型不一致将发生类型的转换。
      • 特点:分为自动类型转换和强制类型转换
        • 具体:自动类型转换: 1、系统自动完成的,不需要程序员手动修改代码 2、将取值范围小的类型 自动提升为 取值范围大的类型 强制类型转换: 1、需要程序员手动修改代码 2、语法: 范围小的类型 变量名 = (范围小的类型)范围大的类型的数据 3、从范围小 到 范围大(将取值范围大的类型强制转换成取值范围小的类型。)
          • 注意:强制类型转换可能会造成数据的丢失 Boolean类型不能发生强制类型转换 byte \ short \ char 这三种数据类型发生数学运算时,会自动提升为int类型
            • 二、if多分支语句和switch多分支语句的异同之处
              • 相同:
                • 不同:
                  • 相同:
                    • 不同:
                      • 八个基本数据包装类型:
                        • 为什么要引入包装类:
                          • 举例:int integer
                          • 五、什么是序列化
                            • 概述:
                              • 作用:
                                • 底层:
                                  • 使用:
                                    • 注意:
                                    • 六、java中的多态
                                    • 七、接口和抽象类的区别
                                      • 区别:
                                        • 两者怎么选择呢?
                                        • 八、什么是反射
                                          • 概述
                                            • 特点
                                              • 使用:
                                                • 总结
                                                相关产品与服务
                                                文件存储
                                                文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
                                                领券
                                                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档