当前位置:首页 > 代码 > 正文

笑话代码(开玩笑的代码)

admin 发布:2022-12-19 14:01 152


今天给各位分享笑话代码的知识,其中也会对开玩笑的代码进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

怎么写别人看不懂的日期代码

前几天,正巧赶上组里代码review,一下午下来,感觉整个人都血压拉满了。五花八门的代码让我不禁感叹,代码规范这条道路还是任重而道远…

今天就来给大家总结一波Java中的代码作死小技巧,熟练掌握这些小技巧后,保证能让你写出同事看不懂的代码~

至于为啥要写出同事看不懂的代码,通过这次教训,我发现好处还是挺多的,简单举几个例子:

同事无法轻易修改你的代码,避免团队协作不当引入bug

塑造个人能力的不可替代性,规避被辞退的风险

代码review时,帮助同事治疗好多年的低血压

好了,一本正经的胡说八道环节就此打住……废话不多说了,下面正式开始。没用的知识又要增加了…

壹、瞒天过海

我打赌你肯定想不到,有人居然会在注释里下了毒。看看下面的代码,简单到main方法中只有一行注释。

public static void main(String[] args) {

// \u000d System.out.println("coder Hydra");

}

猜猜看,这段程序运行结果如何?执行后它居然会在控制台打印:

coder Hydra

看到这你是不是一脸懵逼,为什么注释中的代码会被执行?

其实原理就在于大家熟悉的unicode编码,上面的\u000d就是一个unicode转义字符,它所表示的是一个换行符。而java中的编译器,不仅会编译代码,还会解析unicode编码将它替换成对应的字符。所以说,上面的代码解析完后实际是这样的:

public static void main(String[] args) {

//

System.out.println("coder Hydra");

}

这样,就能解释为什么能够执行注释中的语句了。当然,如果你觉得上面的代码不够绝,想要再绝一点,那么就可以把代码写成下面这个样子。

public static void main(String[] args) {

int a=1;

// \u000d \u0061\u002b\u002b\u003b

System.out.println(a);

}

执行结果会打印2,同理,因为后面的unicode编码的转义后表示的是a++;。

至于这么写有什么好处,当然是用在某些不想让别人看懂的地方,用来掩人耳目了,估计大家都看过下面这个笑话。

你这么写的话客户如果懂点代码,看一下就穿帮了啊,但是你如果写成下面这样,大部分估计都以为这是一段乱码:

//\u000d\u0054\u0068\u0072\u0065\u0061\u0064\u002e\u0073\u006c\u0065\u0065\u0070\u0028\u0032\u0030\u0030\u0030\u0029\u003b

恕我直言,没个几十年的功力真看不出来这里执行的是sleep,简直完美。

贰、舍近求远

要想写出别人看不懂的代码,很重要的一个小技巧就是把简单的东西复杂化。例如,判断一个int型数字的正负时明明可以写成这样:

public void judge(int x){

if (x0){

//...

}else if (x0){

//...

}

}

但是我偏不,放着简单的代码不用,我就是玩,非要写成下面这样:

public void judge2(int x){

if (x31==0){

//...

}else if (x31==1){

//...

}

}

怎么样,这么写的话是不是逼格一下子就支棱起来了!别人看到这多少得琢磨一会这块到底写了个啥玩意。

其实原理也很简单,这里用到的是无符号右移操作。举个简单的例子,以-3为例,移位前先转化为它的补码:

11111111111111111111111111111101

无符号右移一位后变成下面的形式,这个数转化为十进制后是2147483646。

01111111111111111111111111111110

所以,当一个int类型的数字在无符号右移31位后,其实在前面的31位高位全部是0,剩下的最低位是原来的符号位,因此可以用来判断数字的正负。

基于这个小知识,我们还能整出不少活来。例如,放着好好的0不用,我们可以通过下面的方式定义一个0:

int ZERO=Integer.MAX_VALUE311;

通过上面的知识,相信大家可以轻易理解,因为在将一个数字无符号右移32位后,二进制的所有位上全部是0,所以最终会得到0。那么问题来了,我为什么不直接用Integer.MAX_VALUE32,一次性右移32位呢?

这是因为在对int型的数字进行移位操作时,会对操作符右边的参数进行模32的取余运算,因此如果直接写32的话,那么相当于什么都不做,得到的还是原数值。

叁、颠倒黑白

古有赵高指鹿为马,今有码农颠倒真假。阻碍同事阅读你代码的有力武器之一,就是让他在遇到条件判断时失去基本判断能力,陷入云里雾里,不知道接下来要走的是哪一个分支。

下面的代码,我说会打印fasle,是不是没有人会信?

public class TrueTest {

public static void main(String[] args) {

Boolean reality = true;

if(reality) {

System.out.println("true");

} else {

System.out.println("false");

}

}

}

没错,只要大家了解布尔类型就知道这不符合逻辑,但是,经过下面的改造就可以让它变为现实。

首先,在类中找个隐蔽的位置插入下面这段代码:

static {

try {

Field trueField = Boolean.class.getDeclaredField("TRUE");

trueField.setAccessible(true);

Field modifiersField = Field.class.getDeclaredField("modifiers");

modifiersField.setAccessible(true);

modifiersField.setInt(trueField, trueField.getModifiers() ~Modifier.FINAL);

trueField.set(null, false);

} catch(IllegalAccessException | NoSuchFieldException e) {

e.printStackTrace();

}

}

然后再运行上面的程序,你就会发现神奇地打印了false。

其实原理也很简单,首先通过反射拿到Boolean类中定义的TRUE这个变量:

public static final Boolean TRUE = new Boolean(true);

接着使用反射,去掉它的final修饰符,最后再将它的值设为false。而在之后再使用true进行定义Boolean类型的变量过程中,会进行自动装箱,调用下面的方法:

public static Boolean valueOf(boolean b) {

return (b ? TRUE : FALSE);

}

这时的b为true,而TRUE实际上是false,因此不满足第一个表达式,最终会返回false。

这样一来就能解释上面的打印结果了,不过切记,这么写的时候一定要找一个代码中隐蔽的角落,不要被人发现,否则容易被打的很惨…

肆、化整为零

接下来要介绍的这个技巧就有点厉害了,可以将原有的一段串行逻辑改写成判断逻辑中的不同分支,并且保证最后能够正常执行。

在开始前先提一个问题,有没有一种方法,可以让if和else中的语句都能执行,就像下面的这个例子中:

public static void judge(String param){

if (/*判断条件*/){

System.out.println("step one");

}else {

System.out.println("step two");

}

}

如果我说只调用一次这个方法,就能同时输出if和else中的打印语句,你肯定会说不可能,因为这违背了java中判断逻辑的基本常识。

没错,在限定了上面的修饰语只调用『一次』方法的条件下,谁都无法做到。但是如果在判断条件中动一点点手脚,就能够实现上面提到的功能。看一下改造后的代码:

public class IfTest {

public static void main(String[] args) {

judge("Hydra");

}

public static void judge(String param){

if (param==null ||

new IfTest(){{ IfTest.check(null); }}.equals("Hydra")){

System.out.println("step one");

}else {

System.out.println("step two");

}

}

}

运行后控制台打印了:

step one

step two

惊不惊喜、意不意外?其实它能够执行的秘密就在if的判断条件中。

当第一次调用judge()方法时,不满足或运算中的第一个条件,因此执行第二个条件,会执行匿名内部类内的实例化初始块代码,再次执行judge()方法,此时满足if条件,因此执行第一句打印语句。

而实例化的新对象不满足后面的equals()方法中的条件,所以不满足if中的任意一个条件,因此会执行else中的语句,执行第二句打印语句。

这样就实现了表面上调用一次方法,同时执行if和else中的语句块的功能。怎么样,用这种方式把一段整体的逻辑拆成两块,让你的同事迷惑去吧。

伍、釜底抽薪

在程序员的世界里,不同语言之间一直存在鄙视链,例如写c的就看不起写java的,因为直接操作内存啥的看上去就很高大上不是么?那么我们今天就假装自己是一个c语言程序员,来在java中操作一把内存。

具体要怎么做呢,还是要使用java中的魔法类Unsafe。看这个名字也可以明白,这玩意如果使用不当的话不是非常安全,所以获取Unsafe实例也比较麻烦,需要通过反射获取:

Field unsafeField = Unsafe.class.getDeclaredField("theUnsafe");

unsafeField.setAccessible(true);

Unsafe unsafe =(Unsafe) unsafeField.get(null);

在拿到这个对象后,我们就可以对内存为所欲为了。例如,我们在实现int a=1;这样的简单赋值时,就可以搞复杂点,像下面这样绕一个弯子:

void test(){

long addr = unsafe.allocateMemory(4);

unsafe.putInt(addr,1);

int a=unsafe.getInt(addr);

System.out.pr

口袋妖怪绿宝石问题.到了金水市有一个人要听笑话是什么笑话

所谓的笑话就是一串代码,可根据训练家卡片上的ID,到国外的一个网页上面兑换一个奖励壁纸(箱子专用),壁纸图案可自行选择。

有哪些用代码写的冷笑话

 来表哥家吃饭,小侄子一边看西游记一边手舞足蹈上蹦下跳学猴哥。

我哥:“傻儿子,你是孙悟空吗?”

侄子:“正是,你孙爷爷在此。”

打到现在还在哭。

谁有好的笑话搞笑类网站源代码,本人新手急求,第一次问问上求教,速度。。

老师问小明:“1+1=?”小明说:“不知道。”老师叫小明回家问爸爸妈妈。小明回家问妈妈,妈妈正在打麻将,她叫道:“七条!”小明又去问爸爸,爸爸正在吃肯德基,他说:“真香啊!”小明又去问姐姐,姐姐正在看电视,她看到了克林顿,叫道:“美国总统克林顿!”小明又去问哥哥。哥哥正在看书,他读道:“我家住在美丽的厕所里。”第二天,老师问小明:“1+1=?”小明说:“七条!”老师给了他一巴掌,小明说:“真香啊!”老师火了,问:“这话是谁叫你的?”小明说:“美国总统克林顿!”老师快崩溃了,他又问:“你家住哪里?”小明说:“我家住在美丽的厕所里。”老师昏倒。

微信笑话代码怎么导进去

记得我初中同学,有次因打架被校长谈话,同学态度桀骜不顺,

于是被通知叫家长,结果是同学妈妈来的,此乃背景,

校长说“是你”?

“是我”,

“那他是……”?

“嗯!就是”

“原来是我的错……”

这个关于程序代码的笑话是什么意思

很多程序在嵌套循环和子程序调用用符号"}"来结尾。这个笑话是说黑客白忙乎了,偷到的源代码没有实质内容。也说明那个机密程序非常复杂,嵌套的层数很多。

笑话代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于开玩笑的代码、笑话代码的信息别忘了在本站进行查找喔。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/9140.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载