相机相机= Camera.open();为什么单独写错是错的?

时间:2014-08-03 07:17:40

标签: java android camera

Camera  camera=Camera.open();  //that's Right,but if you write separately, it's wrong

Camera  camera;
camera=Camera.open();

//reason: Syntax error on token ";", , expected


    Button btn1;
    btn1.setOnClickListener(new OnClickListener(){
        boolean sum=true;
        Camera camera; //Syntax error on token ";", , expected
        camera=Camera.open();
        Parameters parameter;
        public void onClick(View V)
        {
            if(sum)
            {               
                camera.startPreview();
                parameter=camera.getParameters();
                parameter.setFlashMode(Parameters.FLASH_MODE_TORCH);
                camera.setParameters(parameter);
            }
            else
            {
                //camera.stopPreview();
                parameter=camera.getParameters();
                parameter.setFlashMode(Parameters.FLASH_MODE_OFF);
                camera.setParameters(parameter);
            }
            sum=!sum;
        }
    });

1 个答案:

答案 0 :(得分:3)

camera=Camera.open();是一个赋值语句。语句只能出现在方法中。 camera=Camera.open();在方法外部无效,原因相同System.out.println("Hello");在方法外无效。

Camera camera;是一个字段声明。它们只能出现在类和外部方法中。它们与赋值语句完全不同。

Camera camera = Camera.open();是一个具有默认值的字段声明。就语言而言,它仍然与赋值语句完全不同。它相当于将字段声明为Camera camera;,然后在构造函数中分配camera = Camera.open();