博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
应聘学习法开创者之一int和integer引发的惨案?(ainusers原创)
阅读量:2177 次
发布时间:2019-05-01

本文共 2393 字,大约阅读时间需要 7 分钟。

模仿大厂面试的技法去学习,一条路问到死,由点及面,拒绝花拳绣腿。1.int和integer有什么区别?    int是八大基本类型中的一个,integer是引用类型(类对象),也就是int的包装类    int默认值为0,integer默认值为null    integer必须实例化之后才可以使用,int不需要    integer可以区分出未赋值和值为0的情况,int不可以2.那你说一下八大基本类型都有哪些?    byte、short、int、long、float、double、char、boolean3.能简单说一下他们各自占用的字节数嘛?    1byte、2byte、4byte、8byte、4byte、8byte、1byte、2byte4.这几种数据类型的默认值都是什么?    0、0、0、0、0.0、0.0、、false    string:null5.你知道byte的取值范围嘛?    -128-1276.有了int为什么还要有integer?    主要由于java面向对象的思想,在对于数据的存储/类型的转换等,都是针对于对象的    比如:Integer.parseInt()/Integer.valueOf()    其次:List集合只能存放对象类型integer,不能存放int7.那既然integer这么优秀,为什么还要保留int呢?    int是基本数据类型,integer是类对象,存储于堆中    在性能方面,java会对类中的对象进行回收,而基本数据类型不会8.List集合,泛型是object、添加一个int值,实际存入的类型是什么?    code:        public static void main(String args[]){            int a = 1;            ArrayList list = new ArrayList<>();            list.add(a);        }    反编译:        public static void main(String[] paramArrayOfString) {            byte b = 1;            ArrayList arrayList = new ArrayList();            arrayList.add(Integer.valueOf(b));        }9.List中为什么不能存放基本数据类型?    因为基本数据类型不是Object的子类    注:所有的类都是objct的子类10.现有A extends B,A是隐含的Object的子类,同时也是B的子类,那么java不是单继承嘛?    继承方式:A extends B extends Object11.基本数据类型和包装类分别存储于内存的哪片区域?    包装类对象数据存储于堆中,引用地址存储于栈中    基本数据类型主要分为三种情况(类变量、成员变量、局部变量)    类变量(static int a = 1):跟随类加载的初始化,存储于堆中    成员变量(类对象中:int a = 1):跟随对象的创建,存储于堆中    局部变量(方法区中:int a = 1):跟随方法的出栈入栈,存在于栈中12.包装类的父类是谁?为什么是一个抽象类而不是接口呢?    Number:类中是六大类型的拆箱方法体(byte、short、int、long、float、double)    因为抽象类中方法可选实现的特点13.抽象类和接口的区别?    关键字:extends、implements    构造方法:抽象类可以有构造方法,接口中不能有    成员变量:抽象类中任意、接口中默认public static final xxx    抽象方法:抽象类中不全是抽象方法,而接口中全部都是(默认:publc abstract xxx)    实例化:两者均不能被实例化    继承:一个类只能继承一个抽象类,但是可以实现多个接口    默认实现:抽象类可以有,接口不可以有14.什么场景下使用接口/抽象类?    当对象特征全部抽象的时候使用接口,当对象部分抽象的时候使用抽象类    为了实现代码复用使用抽象类,为了实现多态使用接口15.了解自动拆箱装箱的底层实现嘛?    自动装箱:        code:            Integer a = 128;        反编译:            Integer integer1 = Integer.valueOf(128);    自动拆箱:        code:            Integer a = new Integer(128);            int b = a;        反编译:            Integer integer2 = new Integer('?');            int i = integer2.intValue();    # 注:后面会提供拆箱装箱的源码追踪16.拆箱和装箱哪个更耗时?    装箱比拆箱更耗时17.定义类型int还是integer好?    使用integer        在区分未赋值和值为0的时候/需要调用函数操作    使用int        其他情况下,应该尽量避免拆箱装箱操作(List中存放对象)        比如:            int a = 0;            List list = new ArrayList();            list.add(a)

 

转载地址:http://okdkb.baihongyu.com/

你可能感兴趣的文章
阿里云《云原生》公开课笔记 第四章 理解Pod和容器设计模式
查看>>
阿里云《云原生》公开课笔记 第五章 应用编排与管理
查看>>
阿里云《云原生》公开课笔记 第六章 应用编排与管理:Deployment
查看>>
阿里云《云原生》公开课笔记 第七章 应用编排与管理:Job和DaemonSet
查看>>
阿里云《云原生》公开课笔记 第八章 应用配置管理
查看>>
阿里云《云原生》公开课笔记 第九章 应用存储和持久化数据卷:核心知识
查看>>
linux系统 阿里云源
查看>>
国内外helm源记录
查看>>
牛客网题目1:最大数
查看>>
散落人间知识点记录one
查看>>
Leetcode C++ 随手刷 547.朋友圈
查看>>
手抄笔记:深入理解linux内核-1
查看>>
内存堆与栈
查看>>
Leetcode C++《每日一题》20200621 124.二叉树的最大路径和
查看>>
Leetcode C++《每日一题》20200622 面试题 16.18. 模式匹配
查看>>
Leetcode C++《每日一题》20200625 139. 单词拆分
查看>>
Leetcode C++《每日一题》20200626 338. 比特位计数
查看>>
Leetcode C++ 《拓扑排序-1》20200626 207.课程表
查看>>
Go语言学习Part1:包、变量和函数
查看>>
Go语言学习Part2:流程控制语句:for、if、else、switch 和 defer
查看>>