程序员这十个java题你都会吗?
前言
不论你是职场新人还是步入职场N年的职场新人大哥大当然这个N<3,我能担保你答不对这十个题不要问我为什么这么自信,这些个题还是“有水平”的javase
的基础题,传闻小白指定鸭蛋分,一测一个准,哈哈。
作为将来要成为架构师的男人,对,你没看错,就是在说你 皮一下很开森 ,what?你是小白?我顶你个肺,我叫声杠精,你敢应吗,那个代号9527的杠精,说你呢快快来答题,看你能答对几道题。
题一
下面的程序有问题吗?如果有问题说明一下, 如果没有问题猜测一下运行结果
public static void main(String[] args){
short s = 1;
s=s+1;
System.out.println(s);
}
ps : 各位兄嘚都是大孩子了,各位都把自己的结果记在个小本本上再看下面的分析答案~
分析: s = s + 1
计算结果被提升为int
类型,再向short
类型赋值时发生错误,因为不能将取值范围 大的类型赋值到取值范围小的类型,所以这个程序会报错编译失败。
题二
下面的程序有问题吗?如果有问题说明一下, 如果没有问题猜测一下运行结果
public static void main(String[] args){
short s = 1;
s+=1;
System.out.println(s);
}
ps : 各位兄嘚都是大孩子了,各位都把自己的结果记在个小本本上再看下面的分析答案~
分析: s += 1
逻辑上看作是 s = s + 1
计算结果被提升为int类型,再向short
类型赋值时发生错误,因为不能将取值范围 大的类型赋值到取值范围小的类型。但是, s=s+1
进行两次运算 , +=
是一个运算符,只运算一次,并带有强制转换的特点, 也就是说 s += 1
就是 s = (short)(s + 1)
,因此程序没有问题编译通过,运行结果是2
.
到这里,两个都错了的自觉点给楼主文章右上角点个赞,鸭!恭喜获得第
N+1
个准确无疑的天真小白荣誉勋章,千万别嫌弃,就像侠岚风语咒里说的:只要心怀正义,侠岚无处不在!所以我只想表达的是,天真小白荣誉勋章也是勋章。hhhhhh, 哎哎哎,别打...别打...别打脸.
题三
下面的程序有问题吗?如果有问题说明一下, 如果没有问题猜测一下运行结果
public static void main(String[] args){
byte b1=1;
byte b2=2;
byte b3=1 + 2;
byte b4=b2 + b3;
System.out.println(b3);
System.out.println(b4);
}
ps : 各位兄嘚都是大孩子了,各位都把自己的结果记在个小本本上再看下面的分析答案~
分析: b3 = 1 + 2
, 1 和 2 是常量,为固定不变的数据,在编译的时候(编译器javac
),已经确定了 1+2
的结果并没 有超过byte
类型的取值范围,可以赋值给变量 b3 ,因此 b3=1 + 2
是正确的。 反之, b4 = b2 + b3
, b2 和 b3 是变量,变量的值是可能变化的,在编译的时候,编译器javac
不确定b2+b3
的结果是什 么,因此会将结果以int
类型进行处理,所以int
类型不能赋值给byte
类型,因此编译失败。
题四
下面的程序有问题吗?如果有问题说明一下, 如果没有问题猜测一下运行结果
public static void main(String[] args){
short s = 32767;
s = (short)(s + 10);
System.out.println(s);
}
ps : 各位兄嘚都是大孩子了,各位都把自己的结果记在个小本本上再看下面的分析答案~
分析:定义s为short
范围内最大值 (2^15) - 1 = 32767
,运算后,强制转换(int
换为short
),砍掉2个字节后会出现不确定的结果,因为这个值以及超出了short
类型数据的范围,从而变成负数结果-32759
到这里,四个题都错了的自觉点给楼主文章右上角点个赞,还有小白同学千万别灰心,想当年楼主刚学java的时候,在腾讯课堂听课直播的是时候,那个老师出的就是这些类型题,我一直答错,那个老师提了楼主我好几次:这位小白同学又是你,你又答错了...不提了,往事不堪回首。所以,小白同学千万别灰心哦~
题五
下面的程序有问题吗?如果有问题说明一下, 如果没有问题猜测一下运行结果
public static void main(String[] args) {
int a=0;
for (int i = 0; i >= a && i<100 ; i++){
a+=i;
}
System.out.println(a);
}
ps : 各位兄嘚都是大孩子了,各位都把自己的结果记在个小本本上再看下面的分析答案~
分析:这个稍微没有任何细节以及“套路”,只是单纯的掺杂着些逻辑,所以段个点debug
吧,感受一下吧,结果是6
题六
下面的程序有问题吗?如果有问题说明一下, 如果没有问题猜测一下运行结果
public static void main(String[] args) {
int x=4;
System.out.println("value is " + ((x>4) ? 99.9 : 9));
}
分析:这个题我估计99%
的会错 包括我自己 ,如果我没猜错的话你的结果是9
,啥?你的结果是99.9
,额这个,如果这位同学你不是杠精那我建议你回家种田吧,我和你一起,你锄地我耕田...呃呃呃那结果是什么呢,结果居然是9.0
。。。至于原因我还是不断定的哈哈没有仔细去专研过,如果必须要个结果我估计java把9这个整数默认当成浮点类型数据,我当然只是推论,那么知道的大佬就请评论出来吧。
题七
下面的程序有问题吗?如果有问题说明一下, 如果没有问题猜测一下运行结果
public static void main(String[] args) {
//对于下面两句代码是否编译出错,很基础的哦
double d=3.10;
float f=3.10;
//对于下面两句代码是否编译出错,以及打印结果是多少
float a = 12345678.90123456789f;
double b=0.12345678901234567890;
float c=0.12345678901234567890f;
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
ps : 各位兄嘚都是大孩子了,各位都把自己的结果记在个小本本上再看下面的分析答案~
分析:3.10
是浮点型,浮点型字面值默认当做double
类型来处理,直接编译通过;如果是float
类型则必须加 F
或者f
,若没加,直接编译不通过,会报错“损失精度”,至于解决方法也很简单, 第一种方式:强制类型转换float f1=(float)3.10
; 第二种方式:没有类型转换直接加F
或者f
,如 folat f2=3.10f
;对于abc的打印结果a = 1.2345679E7
、b = 0.12345678901234568
、c = 0.12345679
如果还不懂java浮点类型float
以及double
,可以参考这篇文章
什么是浮点型?什么是单精度浮点数(float)以及双精度浮点数(double)?
题八
分析下列程序代码,猜想下输出结果。
public static void main(String[] args) {
int a = 1; int b = 2;
System.out.println(a);
System.out.println(b);
change(a, b);
System.out.println(a);
System.out.println(b);
}
public static void change(int a, int b) {
a = a + b; b = b + a;
}
分析下列程序代码,猜想下输出结果。
public static void main(String[] args) {
int[] arr = {1,3,5};
System.out.println(arr[0]);
change(arr);
System.out.println(arr[0]);
}
public static void change(int[] arr) {
arr[0] = 200;
}
这个题就不分析了,主要是考察数组的,答错的童靴可能对数组了解的不是特别清析,可以参考这篇文章 java数组定义、使用、以及数组内存分析详解
题九
运行结果是怎样的呢?
public static void main(String[] args) {
int i = 1, j = ++i;
System.out.println(i);
System.out.println(j);
}
分析:估计各位会觉得i=1,j=2
,噗哈哈,你还太单纯了,啥?你的答案是i=1,j=1
?回家种田吧兄嘚我陪你。那么结果是什么呢?i=2,j=2
,原因也很简单,i其实是个变量,j也是个变量,之前i值是1,之后j经历了++i
,就这个经历的同时,i已经自增++
了,所以也是2.
到这里,九个题错了一半以上的同学自觉点给楼主文章右上角点个赞,千万别灰心,就像侠岚风语咒里说的:只要心怀正义,侠岚无处不在!所以还要继续加油哇!向架构师道路冲鸭!!!
题十
这个题主要考察多态知识,涉及到向上转型和向下转型的概念,所以是比较偏难的!
package Polymorphic;
//爷爷类
class Ye {
public String show(Sun obj) {
return ("Ye and Sun");
}
public String show(Ye obj) {
return ("Ye and Ye");
}
}
//爸爸类
class Fu extends Ye {
public String show(Fu obj) {
return ("Fu and Fu");
}
public String show(Ye obj) {
return ("Fu and Ye");
}
}
//儿子类
class Zi extends Fu {
}
//孙子类
class Sun extends Fu {
}
public class PolymorphicTest {
public static void main(String[] args) {
Ye y = new Ye();
Ye y2 = new Fu(); //向上
Fu f = new Fu();
Zi z = new Zi();
Sun s = new Sun();
System.out.println("第一题 " + y.show(f));
System.out.println("第二题 " + y.show(z));
System.out.println("第三题 " + y.show(s));
System.out.println("第四题 " + y2.show(f)); //到这里挂了???
System.out.println("第五题 " + y2.show(z));
System.out.println("第六题 " + y2.show(s));
System.out.println("第七题 " + f.show(f));
System.out.println("第八题 " + f.show(z));
System.out.println("第九题 " + f.show(s));
}
}
运行结果
第一题 Ye and Ye
第二题 Ye and Ye
第三题 Ye and Sun
第四题 Fu and Ye
第五题 Fu and Ye
第六题 Ye and Sun
第七题 Fu and Fu
第八题 Fu and Fu
第九题 Ye and Sun
分析的话就涉及到太多知识点了,比如多态的金典向上向下转型,这都是必备的重点基础的基础,建议参考这篇文章【蓝色字体,点击进入】
【java基础之多态】理解多态的向上向下转型从“妈妈我想吃烤山药”讲起
到这里有木有全部正确的大哥大捏,如果有,我代表全体鸭蛋分的小白膜拜下大佬~
最后,已每题一分计算,你得多少分?勇敢说出来,尽管笑死楼主
如果本文对你有一点点帮助,那么请点个赞呗,谢谢~
最后,若有不足或者不正之处,欢迎指正批评,感激不尽!
欢迎各位关注我的公众号,一起探讨技术,向往技术,追求技术
程序员这十个java题你都会吗?的更多相关文章
- 一位资深程序员大牛给予Java初学者的学习路线建议
java学习这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议?今天我是打算来点干货,因此咱们就不说一些学习方法和技巧了,直接来谈 ...
- 转载:一位资深程序员大牛给予Java初学者的学习路线建议
一位资深程序员大牛给予Java初学者的学习路线建议 java学习这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议?今天我是打 ...
- 震惊!90%的程序员不知道的Java知识!
震惊!90%的程序员不知道的Java知识! 初学Java的时候都会接触的代码 public static void main(String[] args){ ... } 当时就像背公式一样把这行代码给 ...
- C++程序员如何转Java
C++程序员如何转Java 忙里偷闲,到了这个时间终于得空写一篇早想写的文章.其实本文的标题有些不太准确,C++程序员写Java代码不是说就非得转行写Java,抛弃C++,而只是多了一个选择而已.两 ...
- Spring MVC 程序首页的设置 - 一号门-程序员的工作,程序员的生活(java,python,delphi实战)
body { font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI ...
- 【转载】国外程序员整理的Java资源大全
以下转载自: 推荐!国外程序员整理的Java资源大全中文版 https://github.com/akullpp/awesome-java英文版 Java 几乎是许多程序员们的入门语言,并且也是 ...
- 今天看到的一篇文章:一位资深程序员大牛给予Java初学者的学习路线建议
一位资深程序员大牛给予Java初学者的学习路线建议 持续学习!
- 《PHP程序员面试笔试真题解析》——新书上线
你好,是我--琉忆.很高兴可以跟你分享我的新书. 很高兴,在出版了PHP程序员面试笔试宝典后迎来了我的第二本书出版--<PHP程序员面试笔试真题解析>. 如果你是一个热爱PHP的程序员,刚 ...
- 面试刷题27:程序员如何防护java界的新冠肺炎?
背景 安全是软件设计的第二个非功能性需求,一般是当软件出现安全问题的时候才会得到重视. 最明显的比如 数据库用户信息和密码泄漏等: 数据加解密技术 单向加密 md5+salt值, 这个是软件设计中使用 ...
随机推荐
- mysql高级扩展
有关网址: MySQL 性能优化神器 Explain 使用分析 MySQL - EXPLAIN详解 1.时间比较 mysql> SELECT something FROM table WHERE ...
- navicat for mysql中使用模型?
登录进数据库后,点击模型--新建模型,如下 点击“小手”下面的图标----双击右边的空白处,即出现一个表格,可命名,此时我们命名为A 双击A表下空白处---即可设计A表属性,点确定.如下 同理,生成一 ...
- 线程、进程概念与Android系统组件的关系
Android系统是Google公司基于Linux内核开发的开源手机操作系统.通过利用 Linux 内核的优势,Android 系统使用了大量操作系统服务,包括进程管理.内存管理.网络堆栈.驱动程序. ...
- pycharm 激活码 2019/11最新福利(2)
812LFWMRSH-eyJsaWNlbnNlSWQiOiI4MTJMRldNUlNIIiwibGljZW5zZWVOYW1lIjoi5q2j54mIIOaOiOadgyIsImFzc2lnbmVlT ...
- mapper插入时显示中文
可能是jdbc url需要加characterEncoding=utf-8,例 jdbc:mysql://localhost:3306/smbms?characterEncoding=utf8
- Vue核心知识——computed和watch的细节全面分析
computed和watch的区别 computed特性 1.是计算值,2.应用:就是简化tempalte里面{{}}计算和处理props或$emit的传值,computed(数据联动).3.具有缓存 ...
- display——table-cell属性
display的table和table-cell一般情况下用的不多,所以很少有人去关注它,但他们两个联手起来会给你惊喜! 当两个或者两个以上标签一起使用显示在同一行时,以前常用的是float.posi ...
- 聊聊 Vue 中 axios 的封装
聊聊 Vue 中 axios 的封装 axios 是 Vue 官方推荐的一个 HTTP 库,用 axios 官方简介来介绍它,就是: Axios 是一个基于 promise 的 HTTP 库,可以用在 ...
- python requests自动化框架
一.项目结构 1.新建一个工程(一定要创建工程),工程名称自己定义,如:yoyo_jiekou 2.在工程的跟目录新建一个脚本:run_main.py,用来执行全部用例 3.在工程下创建以下几个pak ...
- 简单使用OpenSSL生成密钥
一.生成自签名证书 1.1.创建root CA私钥 openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 365 ...