java局部变量,为什么有的局部变量必须赋初值?而有的局部变量不用赋初值?例子1:
punlic Game()//构造方法
{
BufferedImage src=null;//局部变量必须赋初值
try
{
src=ImageIO.read(new File("1.jpg"));
}
catch(Exception e)
{}
……
}
例子2:
public void win()
{
int a; //局部变量定义时未赋初值也能正常运行
a=3;
}
java局部变量,为什么有的局部变量必须赋初值?而有的局部变量不用赋初值?
答案:1 悬赏:0
解决时间 2021-11-28 06:51
- 提问者网友:若相守£卟离
- 2021-11-27 06:58
最佳答案
- 二级知识专家网友:偏爱自由
- 2021-11-27 07:14
java中局部变量使用三部曲。第一,声明变量, 第二,赋值, 第三才能使用 .
局部变量使用前, 必须声明和赋值
下面写了8个例子。 你可以参考下
例一 不会出错
public void fun(){
int a; //只声明变量,不出错,但是不能使用,没有意义
}例二 : 不会出错 ,因为只声明了变量和对变量进行了赋值 ,并没有使用变量
public void fun() {
BufferedImage src;//这里不用赋初值,也不会出错
try {
src = ImageIO.read(new File("1.jpg"));
} catch (Exception e) {
}
}例三: 会出错.
因为进入try代码块,如果出异常了,那么src 就可能得不到初值, 就无法使用变量src
public void fun() {
BufferedImage src;
try {
src = ImageIO.read(new File("1.jpg"));
} catch (Exception e) {
}
System.out.println(src.getHeight()); // 这里的src可能得不到赋值,无法使用
}例四 不会出错
public void fun() {
BufferedImage src;
try {
src = ImageIO.read(new File("1.jpg"));
System.out.println(src.getHeight());// 如果能执行到这里,说明没有抛出异常.src已经获得了赋值,所以可以使用
} catch (Exception e) {
}
}例五 :
public void fun() {
int b;
if ("".equals("12")) {
b = 5;
}
System.out.println(b); // 因为条件不一定为true ,所以b有可能无法获得值
}例六
public void fun() {
int c;
if (true) { // 直接写了true, 所以也不出错了,因为一定能给c赋值了
c = 5;
}
System.out.println(c);
}例七
public void fun() {
int d;
if ("1".equals("1")) {// if else代码块里都对变量进行了赋值,也不会报错
d = 5;
}else {
d=6;
}
System.out.println(d);
}例八
public void fun() {
BufferedImage src; // 没有赋初值 , 但不会报错 ,try和catch无论走哪条路都能src赋值
try {
src = ImageIO.read(new File("xyz.jpg"));
} catch (Exception e) {
src = new BufferedImage(300, 200, BufferedImage.TYPE_INT_RGB);
}
System.out.println(src.getHeight());
}
局部变量使用前, 必须声明和赋值
下面写了8个例子。 你可以参考下
例一 不会出错
public void fun(){
int a; //只声明变量,不出错,但是不能使用,没有意义
}例二 : 不会出错 ,因为只声明了变量和对变量进行了赋值 ,并没有使用变量
public void fun() {
BufferedImage src;//这里不用赋初值,也不会出错
try {
src = ImageIO.read(new File("1.jpg"));
} catch (Exception e) {
}
}例三: 会出错.
因为进入try代码块,如果出异常了,那么src 就可能得不到初值, 就无法使用变量src
public void fun() {
BufferedImage src;
try {
src = ImageIO.read(new File("1.jpg"));
} catch (Exception e) {
}
System.out.println(src.getHeight()); // 这里的src可能得不到赋值,无法使用
}例四 不会出错
public void fun() {
BufferedImage src;
try {
src = ImageIO.read(new File("1.jpg"));
System.out.println(src.getHeight());// 如果能执行到这里,说明没有抛出异常.src已经获得了赋值,所以可以使用
} catch (Exception e) {
}
}例五 :
public void fun() {
int b;
if ("".equals("12")) {
b = 5;
}
System.out.println(b); // 因为条件不一定为true ,所以b有可能无法获得值
}例六
public void fun() {
int c;
if (true) { // 直接写了true, 所以也不出错了,因为一定能给c赋值了
c = 5;
}
System.out.println(c);
}例七
public void fun() {
int d;
if ("1".equals("1")) {// if else代码块里都对变量进行了赋值,也不会报错
d = 5;
}else {
d=6;
}
System.out.println(d);
}例八
public void fun() {
BufferedImage src; // 没有赋初值 , 但不会报错 ,try和catch无论走哪条路都能src赋值
try {
src = ImageIO.read(new File("xyz.jpg"));
} catch (Exception e) {
src = new BufferedImage(300, 200, BufferedImage.TYPE_INT_RGB);
}
System.out.println(src.getHeight());
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯