默认值小陷阱
来源:互联网 发布:win10防火墙设置21端口 编辑:程序博客网 时间:2024/06/08 07:30
首先看一个小程序:
public class DefaultTest {public static void main(String[] args) {int num;System.out.println(num);}}
这个程序首先是编译通不过的,所以不能打印出想象中的0.
分析:num的初始值是0不假,但是这个num是main方法的局部变量,系统根本没有给它赋予默认值的机会。所以这是错误的。也就是说即使一个变量有初始值,那也得让系统有给它赋值的机会(比如,初始化的时候)。有默认的初始值和已经给变量赋值是两个不同的概念.Java为所有的成员变量提供了默认初始化,局部变量需要自己初始化.此处定义的num是局部变量,在编译时是不会被默认初始化的,必须得显示的进行初始化才行;如果是实例变量的话,就会在编译的时候进行默认的初始化,即为0。
所以要输出num的默认值0,正确的写法应可以是以下三种方式:
public class DefaultTest {public static void main(String[] args) {int num =0 ;System.out.println(num);}}
public class DefaultTest {int num;public static void main(String[] args) {DefaultTest test = new DefaultTest();System.out.println(test.num);}}
public class DefaultTest {static int num;public static void main(String[] args) {System.out.println(num);}}
0 0
- 默认值小陷阱
- ruby中Hash的默认值小陷阱
- 陷阱!python参数默认值
- 陷阱!python参数默认值
- Python函数参数默认值的陷阱
- find的小陷阱
- extern的小陷阱
- parseInt 小陷阱
- Flex的小陷阱
- Python小陷阱
- scanf () 小陷阱。
- C小陷阱 (1)
- 小程序大陷阱
- 开发中的小陷阱
- Java标识符小陷阱
- js小陷阱汇总
- Python函数参数默认值的陷阱和原理深究
- Python函数参数默认值的陷阱和原理深究
- UVA 10815 (暑假-字符串(2) -D - Andy's First Dictionary)
- 导入数据库时出现ORA-01435: 用户不存在
- Ceilometer Distributed Alarm
- 正则表达式
- Codeforces 371C Hamburgers
- 默认值小陷阱
- 【SPOJ】Can you answer these queries IV【线段树】
- SQL高级
- UVA10557
- 医学影像处理软件之Image Orientation相关介绍
- Python xlrd、xlwt、xlutils修改Excel文件
- codeforces 237C.Primes on Interval
- Connect them - ZOJ 3204 最小生成树
- 设计模式之观察者模式