java变量作用域、操作符

一、变量作用域

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

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 00000000 00001100)到(00000000 00000000 00000000 00000110)

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

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

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

    结果(00000000 00000000 00000000 00001100)到(00000000 00000000 00000000 00000110)

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

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

    结果(00000000 00000000 00000000 00001100)到(01000000 00000000 00000000 000001)

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

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

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

    结果(00000000 00000000 00000000 00001100)到(00000000 00000000 00000000 00011000)

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

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

    结果(10000000 00000000 00000000 00001100)到(10000000 00000000 00000000 000110000)

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值