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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨华东 中级黑马   /  2012-10-8 10:56  /  1922 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨华东 于 2012-10-8 11:00 编辑

public class Test7
{
public static void main(String[] args)
{
  
}
public static void function_1(int a,int b)
{
  System.out.println(a+b);//a,b是局部变量编译通过
}
public static void function_2()
{
  int a,b;
  System.out.println(a+b);//a,b也是局部变量但是编译失败!!!不是说默认初始值为0吗?为什么啊??
}

public static int function_3(int c)
{
  return c;//此时c是局部变量,编译通过。
}
public static int function_4()
{
  int c;
  return c;//此时c也是局部变量,但是编译失败!!!默认初始值难道在确定的某些位置上才生效吗?求解释。。
}
}

7 个回复

倒序浏览
类的成员,JVM会自动给它们赋初始值。
boolean类型赋值为false
引用类型赋值为null
其它的赋值为0

而局部变量,JVM不会给它们赋初始值不初始化而是直接使用是会出错的。
回复 使用道具 举报
在函数的参数位置是上,在调用函数的时候会传递值进来。。
回复 使用道具 举报
葬天 发表于 2012-10-8 11:08
类的成员,JVM会自动给它们赋初始值。
boolean类型赋值为false
引用类型赋值为null

你说不能直接使用 那你看看 第四个函数  我直接使用了  没报错啊???
回复 使用道具 举报
杨华东 发表于 2012-10-8 11:11
你说不能直接使用 那你看看 第四个函数  我直接使用了  没报错啊???

参数变量是何时调用函数何时传值,所以值还会变化,
方法内部的变量一旦定义不赋值使用的话就没有值,所以会编译报错
回复 使用道具 举报
局部变量如果没有使用不初始化,编译是可以通过的;如果使用了,不初始化编译不通过报错;
这里你的function_2()里报错是因为 System.out.println(a+b);这一句使用了a 、b所以会编译不通过,如果你不使用a、b,就不会报错
function_4()还是这个问题,return c ,用到c了所以编译不通过,报错
而成员变量中,在你的程序中比如private int a ;这个可以选择不初始化,java会自动帮你初始化成初始值0;
这里function_1(int a,int b)         function_3(int c)    里的参数都是局部变量,所以java自动会为你初始化,编译通过,不会报错

回复 使用道具 举报
function_1(int a,int b)里的参数是形参,一般由外部函数调用噶,属于值传递,一般不说是局部变量。
另外,为了可读性更好,实例变量应该初始化,并且局部变量必须初始化,这是为了使其他的程序员思路更清楚,也就是说,不管在哪儿,哪种 Java 环境中,源代码都可以被编译,即便是有一天谁都不知道代码的编写者是谁的时候。
回复 使用道具 举报
看看..........顶
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马