给大家看段比较有意思的代码

package code.classloader;

public class Interesting {

    public static int count1;
    public static int count2 = 0;
    public static Interesting ins = new Interesting();

    private Interesting() {
        count1++;
        count2++;
    }

    public static Interesting getInstance() {
        return ins;
    }

    public static void main(String[] args) {
        Interesting ins = Interesting.getInstance();
        System.out.println(ins.count1);
        System.out.println(ins.count2);
    }

}

看看这段代码,想一下输出结果。。。count1=? count2=?

然后再看另外一段

package code.classloader;

public class Interesting {

	public static Interesting ins = new Interesting();
	public static int count1;
	public static int count2 = 0;

	private Interesting() {
		count1++;
		count2++;
	}

	public static Interesting getInstance() {
		return ins;
	}

	public static void main(String[] args) {
		Interesting ins = Interesting.getInstance();
		System.out.println(ins.count1);
		System.out.println(ins.count2);
	}

}

有没有看到区别啊??看不出来的先去挂个眼科哈!!!想想这段代码的输出结果 count1 和count2的值

这个问题号称全世界百分之九十的java程序员第一次看到都会犯的错,是不是很牛逼的样子。。

这段代码虽然很简单,但却是涵盖了类加载的一系列过程。

答案下回详细分解。。??

时间: 2024-10-06 08:21:05

给大家看段比较有意思的代码的相关文章

一段比较有意思的代码——介绍system verilog中的新增幅值语句

system verilog中新加了很多幅值语句,虽然都只适用于阻塞幅值,但是在某些场合中非常实用. 下面是一段有意思的代码,覆盖了一些用法. 1 package definitions; 2 typedef enum logic [2:0] {ADD,SUB,MULT,DIV,SL,SR} opcode_t; 3 typedef enum logic {UNSIGNED, SIGNED} operand_type_t; 4 typedef union packed { 5 logic [23:

一致代码段和非一致代码段

最近在自己动手写操作系统,计算机其实是一个非常复杂的系统.其中包含了很多历史性的问题,让人感到生僻难懂.在CSDN上看到一篇关于一致代码段和非一致代码段的文章,非常好,收藏起来. 原文链接:http://blog.csdn.net/feijj2002_/article/details/4597174 之所以出现这个定义是因为系统要安全:内核要和用户程序分开..内核一定要安全.不能被用户程序干涉.但是有时候用户程序也需要读取内核的某些数据,怎么办呢?操作系统就引入了访问特权等级(0-3)的机制.

操作系统学习(十一) 、一致代码段和非一致代码段

一.概述 操作系统保护模式下把代码段分为一致代码段和非一致代码段的原因是:内核程序和用户程序要分开,内核程序不能被用户程序干扰.但是有时候用户程序也需要读取内核的某些数据,于是操作系统就从内核程序中分配一些可以供用户程序访问的段,但是不允许用户程序写入数据,用户程序访问这些段时遵循以下规则: 内核程序不知道用户程序的数据,不调用用户程序的数据,也不转移到用户程序中来 用户程序只能访问到内核的某些共享段,这些段称为一致代码段 用户程序不能访问内核不共享的段 二.一致代码段 一致代码段:简单理解就是

分享一段Java搞笑的代码注释

今天在群里看到有人分享了一段搞笑的注释代码,觉得挺好玩的,在这里收藏一下 // _ooOoo_ // o8888888o // 88" . "88 // (| -_- |) // O\ = /O // ____/`---'\____ // . ' \\| |// `. // / \\||| : |||// // / _||||| -:- |||||- // | | \\\ - /// | | // | \_| ''\---/'' | | // \ .-\__ `-` ___/-. /

【从头开始写操作系统系列】一致代码段与非一致代码段

上几篇文章,我们一直在讨论的都是 GDT 相关的一些问题,现在我们知道在系统在从实模式向保护模式跳转时,GDT 是必须要准备的结构.在介绍这一跳转之前,这篇文章我们来介绍两个概念:一致代码段和非一致代码段. 首先,我们先来看几个问题: 一致代码段和非一致代码段是什么? 为什么要有一致代码段和非一致代码段? 系统提供怎样的机制来使用户程序访问内核数据? 程序如何在段与段之间跳转? 接下来,我们将讨论上述这些问题. 特权级 为了更好的理解之后的问题,我们先来讨论一个概念:特权级. 特权级是一种机制来

10段实用的HTML5代码

1.HTML5编写的CSS ResetCSS Reset也可以写成Reset CSS,即重设浏览器样式. /*   html5doctor.com Reset Stylesheet (Eric Meyer's Reset Reloaded + HTML5 baseline)  v1.4 2009-07-27 | Authors: Eric Meyer & Richard Clark  html5doctor.com/html-5-reset-stylesheet/*/ html, body, d

今天早上 “百度知道”有人提问 正则 ,看着挺有意思的写了一个,写好后还没有回复,楼主就关闭了,哈哈自己好慢呀

在html中,<div style="text-align: center; margin-top: 20px;"><img src="sdsd.jpg" /> <a href="http://www.sdfs.com" target="_blank"> <img src="sdsd.gif" /> </a></div><div

看别人写的优秀代码,是对自己的一种提高,看别人写的很恶心的代码,对自己也是一种提高:告诉自己不要这样写(转)

这两天,我做了两件事: 1.重构了系统某个模块的部分代码: 花了一天时间,一个6k多行的java文件,搞到4k行加若干个类文件,恕我能力有限,后面的实在重构不下去了,那是一种3个domain属性名几乎一样100多个字段但是却用同一个copy了三遍的方法来处理的欲哭无泪,那是一种使劲滚鼠标滚轮都滚不到一个方法尾部的绝望(100多个字段的几个类属性equals来,equals去,get来,set去的,这样类型的方法有那么五六个,你说能不多吗)...... 2.做了一个日志处理的小工具: 客户要求把日

用C语言编写的一段打印菱形的代码

#include <stdio.h> void printShape(int Num) {     int N = Num;     int i, j, k; //用于控制打印     for(i=0; i<N; i++){ //用于打印图形的上半部分         for(j=0; j<N-i -1; j++){ //用于打印左半部分的空格             printf("  "); //两个空格         }         for(k=0