关于java基础知识点的拾遗一

1、 生存空间
大多数过程式(procedural)语言都有所谓的"生存空间(scope)"的概念.这个概念决定了在某一范围内的所有变量名称的可视性(visibility)和寿命.在C、C++、java之中,生存空间由两个成对大括号决定,例如:
{
Int x=12;
/*only x available*/
{
Int q=26;
/*both x & q available*/
}
/* only x available*/
/* q out of scope*/
}
生存空间内所定义的变量,都只能用于生产内空间结束之前.但是,C和C++中一个特殊的用法在java中已经被摒弃.
{
Int x=12;
{
Int x=96; /*illegal*/
}
}
在java中,编译器会认为变量x已经被定义过了.这种在C和C++中"将较大生存空间中的变量遮蔽起来"的能力,java是不提供的.Java设计者认为,这么做容易导致对程序的误解和混淆.
2、 数据成员
当class的某个成员属于基本型别(primitive type)时,即使你没有为它提供初值,java仍保证它有一个缺省值.但是,只有当变量身份是"class内的成员"时,java才保证为该变量提供初值.这能确保隶属基本型别的那些数据成员,百分之百会有初值(这是java不同于C++的地方),因而得以减少许多bug发生几率.不过语言所提供的初值对你的程序而言,或许根本牛头不对马嘴,甚至可能不合法.所以最好养成习惯,明确为你的变量指定初值.
在某个函数定义区内你这么写:
Int x;
X便有可能是任意值(就和C、C++中一样),不会被自动设为零.使用x之前,你得给它一个适当的值.如果忘记这么做,java编译器会在编译时发出错误信息,告诉你该变量可能尚未初始化.这是C++不会发生的事情.(许多C++编译器会针对未初始他的变量给予警告,但java将这种情况视为一种错误.)
3、 关键字static的妙用
在设计某个类时,其实就是在描述其对象的外观长相及行为举措.除非以new来产生对象,否则并不存在任何实质的对象.产生对象之际,存储空间才会分配出来,其函数才可供外界使用.
有两种情况,是上述方式不能解决的.第一,你希望不论产生了多少个对象,或在不存在对象的情形下,那些特定数据的存储空间都只有一份.第二,你希望某个函数不要和类的对象捆绑在一起.
通过static关键字,我们可以轻松的解决这两个问题.当函数被声明为static时,它就不再被局限于所属的类对象上.所以,即使不产生任何对象,外界还是可以调用其static函数.这跟C++里的全局函数非常相似.对于non-static数据或函数,必须知道它们隶属于哪个对象,才有办法运作.

转载于:https://www.cnblogs.com/521taobao/archive/2012/03/17/2402494.html

猜你喜欢

转载自blog.csdn.net/weixin_34114823/article/details/93355961