一缕82年的清风
Java基础中的面试题(一),你能接几招(附答案(不带答案的面试题都是耍流氓))
关注作者
前往小程序,Get
更优
阅读体验!
立即前往
腾讯云
开发者社区
文档
建议反馈
控制台
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
登录/注册
首页
学习
活动
专区
工具
TVP
最新优惠活动
返回腾讯云官网
一缕82年的清风
首页
学习
活动
专区
工具
TVP
最新优惠活动
返回腾讯云官网
社区首页
>
专栏
>
Java基础中的面试题(一),你能接几招(附答案(不带答案的面试题都是耍流氓))
Java基础中的面试题(一),你能接几招(附答案(不带答案的面试题都是耍流氓))
一缕82年的清风
关注
修改于 2021-12-13 09:35:50
201
0
修改于 2021-12-13 09:35:50
举报
文章被收录于专栏:
lsqingfeng
Java中的数据类型有几种? Java中的数据类型分为基本数据类型和引用数据类型两大类,基本数据类型中分为八种,分别是byte,short,int ,long,float,double,boolean ,char。 引用数据类型的定义是除了基本数据类型以外的所有类型,主要包括,类,接口, 数组, 枚举,注解等。
java中的基本数据类型的长度范围? byte(1字节) , short(2字节) ,int(4字节), long(8字节),float(4字节) , double(8字节), boolean(1字节), char(2字节)
给出下列程序的输出结果: System.out.println(3+4); //7, 没什么可解释的 System.out.println(3+'4');// 55, char值参与运算使用ascii进行运算,'4'的ascii 是52 System.out.println('3'+'4');//103,51+52 System.out.println(3+"4");//34,字符串参与运行,就是拼接
面向对象的特征 封装, 继承 , 多态, 抽象
抽象类和接口的区别
抽象类中既可以定义常量有可以定义变量,接口中定义的变量默认为常量(默认都是用pubilc static final 修饰)
抽象类中既可以定义抽象方法,也可以定义非抽象方法;接口中只能定义抽象方法(默认用public abstract修饰,jdk8以后接口可以定义非抽象方法,但是必须用default或 static修饰)
一个类最多是能继承一个抽象类,但是可以实现多个接口
抽象类是对事物根源的抽象,接口侧重对功能的扩展
接口不能实现接口,只能继承接口,并且可以多继承
switch中支持的数据类型 switch中可以使用byte,short,char,int 或者对应的包装类和枚举类型。jdk7以后开始支持String类型,不支持long类型
float f = 18.5; double d = 12.3; 这两种写法正确么? 小数的默认类型是double, 所以像18.5 和 12.3其实都是double类型的, 把double类型赋值给float 是有问题的,因为有可能装不下。 所以第一种写法错误,第二种写法正确。简单来说,就是定义float类型的小数结尾必须加f. 正确写法: float f = 18.5f;
方法重载和方法重写的区别 方法的重载(overload): 说的是一个类中的事。 一个类中可以存在多个名字相同的方法,但是必须保证参数的类型或个数不同,这几个方法叫做重载的方法,与返回值无关。 方法的重写(override): 说的是父类和子类中的事,子类中出现了和父类中一模一样的方法,就是重写的方法,可以在子类的方法上加 @Override注解验证。 关于重写有一些特殊情况需要注意: 私有和静态方法不能重写。 子类重写父类中的方法访问权限不能更低。子类抛出的异常不能比父类大。
equals 和 == 的区别 equals 是 Object类中的方法,所以代表所有的对象中都可以调用这个方法。如果没有重写equals方法,那么调用的时候相当于都是在调用父类Object中的equals方法, Object类中的equals就是使用 == 实现的。==在连接基本数据类型的时候,比较的是值。 连接引用数据对象的时候比较的是地址值。
数组初始化的两种方式: 静态初始化: int[] arr = new int[10]; 动态初始化: int[] arr = new int[]{1,2,3,4,5}; 可简写为: int[] arr = {1,2,3,4,5};
Object类中有哪些方法?介绍一下equals和 hashCode() 方法的区别及注意事项 Object类中有 hashCode(), equals(Object), toString(), clone(),wait(), notify(), notifyAll() 等方法。 hashCode:可以看做是当前对象的一个地址值经过计算后得到的值,所以我们可以根据两个对象的hashCode值是否相等来判断二者是不是同一个对象。native方法,底层使用c语言实现。 equals: 判断对象是不是同一个对象。默认的equals是== 也就是比较地址值。我们可以重写equals方法。 两个方法都可以用来比较对象是否相同。但是由于hashCode 底层是用c语言实现的,所以速度较快,但他的缺点是由于使用算法生成的,可能在某些极端的情况之下出现两个不同的对象经过算法后得到的hashCode值相同。所以一般我们比较的时候,一般先比较hashCode是否相等,如果hashCode不相等,说明肯定不是同一个对象,如果hashCode相等,也不能代表是同一个对象,因为上面说了存在一些极端情况,所以在使用equals比较。像hashSet, HashMap中都是使用这样的比较方式,也是业界公认的比较方式。这也是为什么我们在重写hashCode的时候也要重写equals, 因为大家都这么用,我们必须要保证他们两者返回结果的一致性。否则就会出问题。
HashMap的实现原理: HashMap底层是使用hash表(数组+链表) 的形式进行存储。 当一个键值对存储到HashMap中的时候,会先根据key通过hash算法计算出一个值,这个值就是代表存储到数组中的那个位置,如果多个key得到的值相同,代表这几个数据要存储到同一个数组的位置上,这种情况叫做哈希冲突,此时会以链表的形式将hash冲突的元素连接起来。 hashMap有个负载因子,默认是0.75, 当hashMap中存储的元素对数超过数组程度*负载因子时,会触发自动扩容。jdk1.8以后,当链表长度超过8会自动转为红黑树,当红黑树的个数小于6会转为链表。 当key值完全相同时(通过hashCode,equals比较), value会覆盖。
实现多线程的方式
继承Thread类,重写run方法,调用start() new Thead(()->{}).start();
实现Runnable接口,重写run方法,创建Thread对象,传入Runnable, 调动start() new Thread(new Runnable()-{}).start();
使用线程池,传入Runnable:
获取Class对象的几种方式:
类名.class: Class clazz = Person.class;
对象名.getClass(); Class clazz = person.getClass();
Class.forName(全类名); Class clazz = Class.forName("com.test.Person");// 有异常需要处理
本文参与
腾讯云自媒体同步曝光计划
,分享自作者个人站点/博客。
原始发表:2020/06/23 ,如有侵权请联系
cloudcommunity@tencent.com
删除
前往查看
hashmap
编程算法
本文分享自
作者个人站点/博客
前往查看
如有侵权,请联系
cloudcommunity@tencent.com
删除。
本文参与
腾讯云自媒体同步曝光计划
,欢迎热爱写作的你一起参与!
hashmap
编程算法
#java基础
评论
登录
后参与评论
0 条评论
热度
最新
推荐阅读
LV.
文章
0
获赞
0
领券
问题归档
专栏文章
快讯文章归档
关键词归档
开发者手册归档
开发者手册 Section 归档
0
0
0
推荐