名人名言
昨日翻译
Victory won’t come to me unless I go to it.——M. Moore
胜利不会走向我,只有我走向它!——美国女诗人穆尔
今日名言
Other men live to eat, while I eat to live.——Socrates
2019.03.18问题及解析
public static void main(String[] args) {byte i = 127;i += 1;System.out.println(showType(i)+" :"+i);}
问题1:请问showType(i)方法如何定义?
问题2:推测代码执行的结果,分析结果产生的原因。
答案与解析
定义showType(i)方法
首先我们要定义的方法需要能够判定任何类型的对象,因此我们的参数必须是Object类型,这样才能够保证任何类型都能判断出它的类型,而返回值时字符串,那么我们只是这个方法用所以使用private足够,就这个方法中使用所以干脆定义在这个类里用static修饰便于main方法直接访问,那么模板就有了:
private static String showType(Object object){
}
那么内容怎么办呢?其实很简单,我们的Object方法中有一个getClass()方法,很轻松的就能获得我们的类,但是类可不是字符串,如果如果直接返回编译器会报错,那么我们只需要调用我们类中的toString()方法就可以输出出来啦!所以方法定义一句话搞定!
private static String showType(Object object){return object.getClass().toString();
}
执行之后结果:
class java.lang.Byte :-128
难以置信,127+1变成了-128,这你敢信?
结果解析
想不到这么简单的byte也会有这种操作,谁能想得到呀?
首先我们的byte在计算机中用八位二进制存放127时它是:
0111 1111
那么我们进行一个+1操作会产生什么样的效果呢
0111 1111 + 0000 0001 = 1000 0000
也就是加完之后结果为1000 0000
1000 0000看似像是-0,但是我们最初的开发人员为了区分0000 0000,特意定义了1000 0000为-128。所以我们神奇的byte值127在+1之后神奇的变成了-128,真的是很有意思,原码、反码、补码不清楚的小伙伴,如果想要弄明白,先要去了解一下他们哟,虽然我们工作中不一定用得到,但对于我们理解计算机有着很大的帮助~
2019.03.19问题
public class ThreadTest {public static void main(String[] args) {Thread t = new Thread(ThreadTest::dao);t.run();System.out.print("小");}private static void dao(){System.out.print("刀");}
}
请问上述代码能否执行?
如果能,是会输出小刀还是刀小还是都有可能?
往期回顾
java每日一练(19_03_17) (mysql安装)
java每日一练(19_03_16) (springboot框架)
java每日一练(19_03_15) (多线程问题)
java每日一练(19_03_14) (程序的执行结果)
java每日一练(19_03_13) (pom.xml文件)
java每日一练(19_03_12) (输出结果)
java每日一练(19_03_11) (程序的输出结果)
java每日一练(19_03_10) (程序题 三个问题)
加入我们吧~
眼过千遍,不如手过一遍,一定一定要把自己的想法写出来(想法不论对错,写你所想就是进步),这样才会有所收获,你的每一个留言和分享小刀都会认真回复,彼此学习共同进步~
小刀和小伙伴在学习群里等你来一起监督学习哦,坚持!加油!进群请加小刀微信: best396975802
感谢所有在后台留言的小伙伴们,每一分的付出都会收到回报,你们都是最棒的哦!
提升自己
听到很多小伙伴问小刀哥有什么书推荐看的,看视频也好,看书也罢,能学到知识就行了。但是小刀还是推荐大家多看书,多动脑筋思考。现在小刀给大家带福利啦,扫描下方二维码就能获得福利,价格都比某宝某东便宜哦!!包邮哦!!
END
微信群请点击公众号菜单进微信群
文字|天堂
排版|花音
你点的每个在看,我都认真当成了喜欢