关闭

温故而知新(二)Java基础:变量类型和、修饰符、运算符

标签: java变量类型修饰符运算符
43人阅读 评论(0) 收藏 举报
分类:

java变量类型

  1. 类变量:独立于方法之外的变量
  2. 实例变量:独立于方法之外的变量,不过没有static修饰
  3. 局部变量:类的方法中的变量
        static int test=0;    // 类变量
        String str="This is 实例变量";  // 实例变量
        public void method(){

            int i =0;  // 局部变量

        }

局部变量

  • 局部变量声明在方法、构造方法、语句块中

  • 局部变量在方法、构造方法、语句块中 被执行的时候创建,执行完就被销毁了

  • 访问修饰符不能用于局部变量

  • 局部变量只在方法、构造方法、语句块中可见

  • 局部变量实在栈上分配的

  • 局部变量没有默认值,所以局部变量被声明后,必须初始化才可以被调用

    Test:

public class Test {

    public static void main(String[] args) {  

            Test test=new Test();
            test.variable();
    }
    public void variable(){
          String yes_init = "this is 局部变量";
          System.out.println("有初始化的局部变量: " + yes_init);
          /**         
           * String no_init;
           * System.out.println("无初始化的局部变量: " + no_init);//这里会报错:提示你初始化这个局部变量
           * */

       }
}


----------

实例变量

  • 实例变量声明在一个类中,存在于方法、构造方法、语句块之外
  • 当对象被实例化后,每个实例变量的值就跟着确定了
  • 实例变量在对象被创建的时候创建,对象销毁的时候跟着销毁
  • 在方法、构造方法、语句块中引用可以获取实例变量的信息
  • 访问修饰符可以 修饰实例变量
String str="This is 实例变量";  // 实例变量

类变量(静态变量)

  • 类变量也称为静态变量,在类中以static关键字声明,但必须在方法构造方法和语句块之外

  • 无论一个类创建了多少个对象,类只拥有类变量的一份拷贝。

  • 静态变量储存在静态存储区。经常被声明为常量,很少单独使用static声明变量。

  • 静态变量在程序开始时创建,在程序结束时销毁。

//test是静态的私有变量
   private static String test;

静态变量和实例变量区别

  • 静态变量属于类,该类不生产对象,通过类名就可以调用静态变量。

  • 实例变量属于该类的对象,必须产生该类对象,才能调用实例变量。

    二者在程序运行时的区别:

    1. 实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。
  • 静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。


修饰符

  • 主要分为两类:访问修饰符、非访问修饰符

访问控制修饰符

  • 默认的,也称为 default,在同一包内可见,不使用任何修饰符

  • 私有的,以 private 修饰符指定,在同一类内可见。

  • 共有的,以 public 修饰符指定,对所有类可见。

  • 受保护的,以 protected 修饰符指定,对同一包内的类和所有子类可见。

访问控制和继承
  • 父类中声明为 public 的方法在子类中也必须为 public。

  • 父类中声明为 protected 的方法在子类中要么声明为 protected,要么声明为 public,不能声明为 private。

  • 父类中声明为 private 的方法,不能够被继承。


非访问修饰符

  • static修饰符:用来创建类方法和类变量
  • final修饰符:final修饰的变量就是常量,不可修改。修饰的类不能被继承,方法不能重新定义
  • abstract :用来创建抽象类和抽象方法。
  • synchronized 修饰符,主要用于线程的编程

  • synchronized :

//synchronized 关键字声明的方法同一时间只能被一个线程访问。synchronized 修饰符可以应用于上面的四个访问修饰符。
public synchronized void showDetails(){
}

运算符

算术运算符

这里写图片描述

  • ++前缀自增自减法(++a,–a): 先进行自增或者自减运算,再进行表达式运算。
  • 后缀自增自减法(a++,a–): 先进行表达式运算,再进行自增或者自减运算
int a = 3;//定义一个变量;
            int b = 3;
            int c = 2*++a;
            int d = 2*b++;
            System.out.println("自增运算符前缀运算后a="+a+",c="+c);
            System.out.println("自增运算符后缀运算后b="+b+",d="+d);

//日志:自增运算符前缀运算后a=4,c=8
//自增运算符后缀运算后b=4,d=6

关系运算符

A=5;B=10;
这里写图片描述


逻辑运算符

这里写图片描述


条件运算符(?:)

条件运算符也被称为三元运算符。该运算符有3个操作数,并且需要判断布尔表达式的值。该运算符的主要是决定哪个值应该赋值给变量。

  • 条件表达式?表达式1:表达式2。
  • 问号前面的位置是判断的条件,判断结果为bool型,为true时调用表达式1,为false时调用表达式2。
int a ,b;//定义一个变量;
            a=10;
         b=(a==5) ? 30 : 50;

          System.out.println("三元运算符"+b+"");//结果50
    }

instanceof 运算符

该运算符用于操作对象实例,检查该对象是否是一个特定类型(类类型或接口类型)。

  • 注意:熟悉android列表多种行视图的一定经常用到这个

  • 格式:

( Object reference variable ) instanceof  (class/interface type)
//运算符左侧变量所指的对象,是操作符右侧类或接口(class/interface)的一个对象,那么结果为真。

例如:

Cat a=new Cat();
 boolean result =  a instanceof Cat ;//结果返回的为true

//或者:表达式左边被比较的对象兼容右边的数据类型,返回的也是true
String name = "Tom";
boolean result = name instanceof String; // 由于 name 是 String 类型,所以返回真
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:19359次
    • 积分:673
    • 等级:
    • 排名:千里之外
    • 原创:48篇
    • 转载:3篇
    • 译文:0篇
    • 评论:6条