A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 正哥敲代码 中级黑马   /  2016-8-7 22:51  /  444 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

12、静态变量和实例变量的区别?  
在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。
在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。
例如,对于下面的程序,无论创建多少个实例对象,永远都只分配了一个staticVar变量,并且每创建一个实例对象,这个staticVar就会加1;但是,每创建一个实例对象,就会分配一个instanceVar,即可能分配多个instanceVar,并且每个instanceVar的值都只自加了1次。
public class VariantTest{   
public static int staticVar = 0;   
public int instanceVar = 0;   
public VariantTest(){   
staticVar++;    i
nstanceVar++;
//下面是在一行
System.out.println(“staticVar=” + staticVar + ”,instanceVar=” + instanceVar);
  }
}
备注:这个解答除了说清楚两者的区别外,最后还用一个具体的应用例子来说明两者的差异,体现了自己有很好的解说问题和设计案例的能力,思维敏捷,超过一般程序员,有写作能力!
13、是否可以从一个static方法内部发出对非static方法的调用?
  不可以。因为非static方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方法调用,而static方法调用时不需要创建对象,可以直接调用。也就 是说,当一个static方法被调用时,可能还没有创建任何实例对象,如果从一个static方法中发出对非static方法的调用,那个非static方法是关联到哪个对象上的呢?这个逻辑无法成立,所以,一个static方法内部发出对非static方法的调用。 14、Integer与int的区别
1)整型:     使用int表示(32位)。  
2)字节型: 使用byte表示(从-128到127之间的256个整数)。
3)短整型: 使用short表示(16位)。
4)长整型: 使用long表示(64位)。  
5)单精度浮点型:使用float表示。所谓浮点型,指的是小数,也叫实数,例如:1.2。  6)双精度浮点型:使用double表示。双精度浮点型表示的数据范围比单精度数据类型大很多。
7)字符型:          使用char表示。所谓字符,就是单个的字符表示,例如字母a,或者中文张,外面用单引号包围,比如 char a = 'B'; char b = '王';
8)布尔类型: 使用boolean表示,布尔类型只有两种可能,分别为true或false。
int是java提供的8种原始数据类型之一。Java为每个原始类型提供了封装类,Integer是java为int提供的封装类。int的默认值为0,而Integer的默认值为null, 即Integer可以区分出未赋值和值为0的区别,int则无法表达出未赋值的情况,例如,要想表达出没有参加考试和考试成绩为0的区别,则只能使用Integer。在JSP开发中,Integer的默认为null,所以用el表达式在文本框中显示时,值为空白字符串,而int默认的默认值为0,所以用el表达式在文本框中显示时,结果为0,所以,int不适合作为web层的表单数据的类型。  在Hibernate中,如果将OID定义为Integer类型,那么Hibernate就可以根据其值是否为null而判断一个对象是否是临时的,如果将OID定义为了int类型,还需要在hbm映射文件中设置其unsaved-value属性为0。  另外,Integer提供了多个与整数相关的操作方法,例如,将一个字符串转换成整数,Integer中还定义了表示整数的最大值和最小值的常量。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马