java变量作用域、操作符

来源:互联网 发布:软件开发人员保密协议 编辑:程序博客网 时间:2024/06/08 18:08

一、变量作用域

    程序的基本功能是处理数据,在程序中我们又是用变量来表示数据的,之前我们说过变量的使用及命名规则,下面我们说说变量的作用域

1、变量的使用有一个作用域的问题,作用域是指他存在的范围,只有在这个范围中,程序才能访问。

2、作用域决定了变量的生命周期。变量的生命周期是指从一个变量被创建并分配内存空间开始,到这个变量被销毁并清除其所占的内存空间的过程。当一个变量被定义时,它的作用域就被确定了。

按照作用域的不同,变量分为以下类型

a:局部变量

   a.1位置:定义在方法内部或方法的一个代码块内部

   例:

    public void method1() {int a = 0;                      //局部变量,作用域为整个method01方法;        {            int b = 0;                   //局部变量,作用域为所处的代码块;           b = a;        }        b = 20;                         //编译出错,b不能被访问;    }
   a.2局部变量没有默认值,使用前必须先初始化

   a.3生命周期

   例:

    public class Sample {        public int add() {           int addResult = 1;           addResult = addResult+2;           return addResult;        }        public int subtract() {           int subResult = 1;           subResult = subResult-2;           return subResult;                                          }        public static void main(String[] args) {           Sample s = new Sample();           s.add();//开始局部变量addResult的生命周期,位于Java栈区;                //结束局部变量addResult的生命周期,退回到main方法;           s.subtract();//开始局部变量subResult的生命周期,位于Java栈区;                     //结束局部变量subResult的生命周期,退回到main方法;        }    }    在Sample实例调用add方法后,局部变量addResult的生命周期就开始,并且addResult位于Java栈区。    执行完毕Sample实例的add方法,局部变量addResult的生命周期就结束了,退回到main方法;

b:成员变量(实例变量)

    b.1位置:在类中声明,作用域是整个类

    b.2:实例变量有默认值,使用之前无需初始化

    b.3生命周期

    例:

    class Calculate {        private int num1 = 0;        private int num2 = 0;        public int add() {            int result = num1 + num2;            num1 = num1+1;            num2 = num2+2;            return result;        }        public static void main(String[] args) {        Calculate t1 = new Calculate();//开始实例变量num1,num2的生命周期,num1,num2位于堆区            t1.add();        }        //执行完毕Calculate类的main方法,结束Calculate实例及它的实例变量num1,num2的生命周期,        //卸载Calculate类,Java虚拟机运行结束    }

c:方法参数

    位于方法或者构造方法的参数,它的作用域是整个方法或者构造方法。

d:异常处理参数

    和方法参数很相似,差别在于前者是传递参数给异常处理代码块,而后者是传递参数给方法或者构造方法。异常处理参数是指catch(Exception e)语句中的异常参数"e",它的作用域是紧跟着catch(Exception e)语句后的代码块。

二、操作符

1:赋值操作符

   =   :   int x=0,i=1,j=1;
   *=  :   这里的"*="由操作符"*"和"="复合而成,它等价于 a=a*b; 这种复合操作符能使程序变得更加简洁。
   /=  :   a/=b 等价于 a=a/b;
   %=  :   a%=b 等价于 a=a%b;
   ...  

2:比较操作符

    >   :   大于
    >=  :   大于等于
    <   :   小于
    <=  :   小于等于
    以上操作符只适用于整数类型和浮点数类型;  

    instanceof: 判断一个引用类型所引用的对象是否是一个类的实例。该操作符左边是一个引用类型,右边是一个类名或接口名。形式如下:

    obj instanceof ClassName
    或者
    obj instanceof InterfaceName

    例如:
    String a = "zs";
    System.out.println(a instance String);             //输出true;

3:相等操作符

    ==  :   等于
    !=  :   不等于

    既可以是基本类型,也可以是引用类型

4:数学运算操作符  

    +   :   数据类型值相加或字符串连接;

    a. 数据类型值相加;
        int    a=1+2;    //a值为3;

    b. 字符串连接

        System.out.println(1+2+"a");          //输出3a

        System.out.println(1+2.0+"a");        //输出3.0a
        System.out.println(1+2.0+"a"+true);   //输出3.0atrue
        System.out.println("a"+1+2);          //输出a12
        System.out.println(1+"a"+2);          //输出1a2

    /   :   整除, 如操作数均为整数,运算结果为商的整数部分

        int a1=12/5;                          //a1变量的取值为2

        double a7=12/5.0;                     //a7变量的取值为-2.4

    %   :   取模操作符, 如操作数均为整数,运算结果为商的整数部分

        int a2=13%5;                              //a2变量的取值为3
        double a3=1%5;                            //a3变量的取值为1.0

5:移位操作符

    >>  :  算术右移位运算,也称做带符号右移位运算

    int a1 = 12 >> 1;                         //a1变量的取值为6;

    对12右移一位的过程为:舍弃二进制数的最后一位,在二进制数的开头增加一位符号位,由于12是正整数,因此增加的符号位为0

    结果(00000000 00000000 0000000000001100)到(00000000 00000000 0000000000000110)

    >>> :  逻辑右移位运算,也称为不带符号右移位运算

    int a1 = 12 >>> 1;                          //a1变量的取值为6;

    对12右移一位的过程为:舍弃二进制数的最后一位,在二进制数的开头增加一个0。

   结果(00000000 00000000 0000000000001100)到(00000000 00000000 0000000000000110)

    int a2 = -12 >>> 2;                         //a2变量的取值为1073741821

    对-12右移二位的过程为:舍弃二进制数的最后二位,在二进制数的开头增加二个0。

   结果(00000000 00000000 0000000000001100)到(01000000 00000000 00000000000001)

    << :  左移位运算,也称为不带符号左移位运算

    int a1 = 12 << 1;                          //a1变量的取值为24;

    a. 对12左移一位的过程为:舍弃二进制数的开头一位,在二进制数的尾部增加一个0

    结果(00000000 00000000 0000000000001100)到(00000000 00000000 0000000000011000)

    int a2 = -12 << 2;                         //a2变量的取值为-48; 

    对-12左移二位的过程为:舍弃二进制数的开头二位,在二进制数的尾部增加二个0

   结果(10000000 00000000 0000000000001100)到(10000000 00000000 00000000000110000)

6:位运算操作符

    &   :   与运算,对两个操作元的每个二进制位进行与运算,运算规则为:1&1->1, 1&0->0, 0&1->0, 0&0->0;   
    |   :   或运算,对两个操作元的每个二进制位进行或运算,运算规则为:1|1->1, 1|0->1, 0|1->1, 0|0->0;
    ^   :   异或运算,对两个操作元的每个二进制位进行或运算,运算规则为:1^1->0, 1^0->1, 0^1->1, 0^0->0;两个值相同,为0, 不同为1;
    ~   :   取反运算, ~1->0, ~0->1;

7:逻辑操作符

    &&  :   左边的布尔表达式的值为false, 整个表达式值肯定为false, 此时会忽略执行右边的布尔表达式。
    ||  :   左边的布尔表达式的值为true, 整个表达式值肯定为true, 此时会忽略执行右边的布尔表达式。

8:条件操作符

    布尔表达式 ? 表达式1 : 表达式2

    如果布尔表达式的值为true, 就返回表达式1的值, 否则返回表达式2的值

    int score = 61;
    String result = score>=60?"及格":"不及格";//返回结果为及格



0 0
原创粉丝点击