网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.FileSystemObject 示例代码.
.基础应用:java web三层架构配置入.
.用导航组件来构建动态 Portal 菜.
.跟你分享—— .Net项目制作安装程.
.采用多线程制作动画.
.如何使用Java布局器?.
.使用EJB 3.0简化企业级Java开发一.
.Java入门:理解构造器 (转).
.JAVA学习笔记swing JFrame窗口学.
.用RMI开发基于Java的企业分布式应.
.《Java编程思想》(第二版)第07章.
.DBCP连接池测试用例(8月修正版).
.Java多媒体框架设计自动播放机实.
.JBuilder2005单元测试之JUnit框架.
.Java高级学习:Java代码编写的30条.
.J2ME与Web Service-KSOAP的快速上.
.getUTCMinutes 方法.
.浅谈Java串行端口技术协议.
.在JBuilder 9上使用Struts 1.1的.
.ubound 方法.

Java:默认变量初始化

发表日期:2008-1-5



  在 Java(TM) 编程语言中,变量的初始化依靠于其所在的上下文。请看下面代码:
  int x;
  Dog fido;
  假如 x 和 fido 都是实例变量,他们就分别被自动初始化为 0 和 null 。null 是一个非凡的字面值,它能赋值给任何引用变量。
  一般说来,假如实例变量在定义的时候没有被显式的初始化,那么 Java 将变量自动初始化为 "似零" 的值,具体值由变量的数据类型决定:
  Java:默认变量初始化


  请看下面这段程序:
  
   public class TestVariableInit {
   public static void main(String[] args) {
  TestClass tc = new TestClass();
  System.out.println("tc.iStr = " + tc.iStr);
  System.out.println("tc.i = " + tc.i);
   }
  }
  class TestClass {
   int i; // instance variable
   String iStr; // instance variable
  }
  TestVariableInit 产生输出:
  D:\>java TestVariableInit
  tc.iStr = null
  tc.i = 0
  有些书上说,这种默认初始化在所有的情况下都适用,例如,一个局部变量(在方法体内声明的变量),但是局部变量假如没有显式初始化,根据所在 Java 环境不同,编译器会给出一个警告或者是报出一个错误。
  实际情况是,以前有些Java环境对局部变量不提供初始化,也不给出警告或者错误,在这种情况下,值是垃圾,这可能造成非常难于诊断的运行错误。
  在 Sun 微系统公司发布的 Java 开发包(JDK)中,编译器将在未初始化的局部变量的引用位置处报错。假如我们将 TestVariableInit 中的 main() 方法修改入下:
   public static void main(String[] args) {
  TestClass tc = new TestClass();
  String lStr; // local variable
  int i; // local variable
  System.out.println("tc.iStr = " + tc.iStr);
  System.out.println("tc.i = " + tc.i);
  System.out.println("lStr = " + lStr);
  System.out.println("i = " + i);
   }
  试图编译 TestVariableInit 会产生下面的输出:
  D:\>javac TestVariableInit.java
  TestVariableInit.java:8: Variable lStr may not
  have been initialized.
  System.out.println("lStr = " + lStr);
                 ^
  TestVariableInit.java:9: Variable i may not
  have been initialized.
  System.out.println("i = " + i);
                ^
  2 errors
  对于此类情况,Java 环境保证给出一个默认值,但是不答应你使用它,真是可笑!(假如一棵树掉到森林里,假如没有人听到落地声难道说它就没有发出声音吗?)
  大部分的程序员都赞成为了可读性更好,实例变量应该初始化,并且局部变量必须初始化,这是为了使其他的程序员思路更清楚,也就是说,不管在哪儿,哪种 Java 环境中,源代码都可以被编译,即便是有一天谁都不知道代码的编写者是谁的时候。
上一篇:Java:不再只能用于服务器 人气:384
下一篇:Java的字符串操作 人气:1917
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐