1.for循环渊源
对于for循环的理解,我就从刚开始学习java的时候,通过控制同一个字符的排列来打印出一个菱形来解说吧。
通过控制输出空格和字符来实现我们所想要的结果,既然如此,我们岂不是可以用那个最土的方法,在整个方法中都通过
System.out.print(" ");//输出空格
Sysem.out.print("*");//输出组成菱形的字符
何必要用for(int i=0;i<count;i++){.....}语句来输出呢?对,太对了!!
对于一个刚接触编程语言的初学者而言,用for循环来打印菱形的劣势在那里:1.逻辑混乱,为了想办法去控制输出自己想要的结果,常常想得头昏脑胀,老眼昏花。 2.不利于深入地理解for
我认为任何一个智慧的闪光都凝结着无数思维实践的积累,如果你不相信你把我上述说的第一中方法规规矩矩的实践一遍,即使编程语言中没有这样一个for循环,我想for循环大致的雏形也已经在你的脑子里啦
朋友,如果你对for循环的理解还不是很深入,请尝试用第一中方法去打印一个菱形,我想你一定会有意想不到的收获
2.NullPointerException(空指针异常)
空指针异常发生的原因:
由于一个空引用调用了类中的方法;
对于空指针异常,就这么一句话,是我对空指针异常所有情况的总结辞,但是真正遇到这种情况的时候,却令人眼花缭乱,头脑淤血,这引用搞来搞去的,一个引用名明明就引用了一个刚创建的对象,这怎么会空指针异常呢!
下面容我徐徐道来:
a.首先让我们来想这么一个场景:(写画板中的代码)
//如果不想看代码,请直接看代码之间的注释
/** * 显示画板窗体的方法 */ public void showDrawUI(){ //设置标题 this.setTitle("畫板窗口"); //设置大小 this.setSize(600,600); //设置 this.setResizable(false); java.awt.FlowLayout fl=new java.awt.FlowLayout(); this.setLayout(fl); //从窗体上得到一个画布对象 //画布本身在JFrame里面已经有了 java.awt.Graphics g = this.getGraphics(); g.setColor(java.awt.Color.BLACK); //设置关闭时推出进程 this.setDefaultCloseOperation(3); //设置窗体可见 this.setVisible(true); //给画板窗体加鼠标监听器 DrawListener dl = new DrawListener(g); this.addMouseListener(dl); }
那么对于上述的代码放到主函数中运行以后,在g.setColor();这一行会报空指针异常,无疑,在这一行中只有g这个引用变量调用了方法,那么说明g这个引用是空的,空指针异常的分析到此也就告一段落了,接下来我们要找到g到底是引用了什么东西,致使它是空的呢,答案就在上一行,g=this.getGraphics();这说明什么,说明了根本就没有得到这个画布对象。为什么没有得到画布对象呢?继续往上推,我们发现this.setVisible(true);这一行代码被放到之后,在窗体没有设置可见之前是得不到画布滴,同学,这个细节你知道吗?不知道的话赶快记在你的笔记里吧!!