java中的变量

知识点框架:

字面量

   字面量说得通俗一点就是数据,例如:123, "中国",false,3.14等等。在我们的现实生活中每天都会与数据打交道,今天买了50块钱的水果,水果重3.2公斤,今天明明是星期一,你却说是星期二,显然你在说谎 (false)。计算机最厉害的地方就在于处理数据的能力,一门编程语言首先要能够表示数据,才能去处理数据,所以在java中通过字面量来表示数据。

   为了满足生活中需要,数据就会被分类,根据数据的类别,就有了不同的数据类型。

数据被分为:整型,浮点型,字符型,布尔型,字符串等。

整型:(整数)1   100     1000       10000

浮点型:(小数)3.14 ,1.0 ,3.1

字符型:(单个文字,字符)'a' ,  '国'

布尔型:(真假)true,false

字符串型:(多个字符)"欢迎来到中国"

public class ConstTestDemo {
    public static void main(String[] args) {
        System.out.println("我爱中国");
        System.out.println(110);
        System.out.println(3.14159);
        System.out.println("不好好学习,就要回家卖红薯");
        System.out.println(true);
        System.out.println(false);
        System.out.println('男');
        System.out.println('A');
        System.out.println("ab");
    }
}

注意:Java中规定字符型字面量必须用英文状态下的单引号括起来,字符串型字面量则是采用英文状态下双引号括起来。

  这个是用IDEA演示的,编译报错了。因为在java语言中字符型只能是单个字符,多个字符则是字符串,应该使用英文状态下的双引号括起来。以上程序中编译器检测到 'ab' 之后,发现以单引号开始,会认为后面是一个字符,于是去a后面找另一半单引号,结果未找到结束的单引号(因为结束的单引号在b后面),所以编译器报错,提示信息是'' 未结束的字符文字 ''。

变量概述:

  变量是内存当中存储数据最基本的单元,将数据放到内存当中,给这块内存空间取一个名字,这就是变量。

  变量就是内存当中的一块空间,这块空间有类型,名字,数据(值),这也是变量必须具备的三个要素。

变量的本质就是一块内存空间,而数据类型则是决定这个变量内存空间的大小。

变量里面存储的数据需要和数据类型保持一致。

  变量,就是可以发生改变的量,即:内存中存储的数据可以发生改变:例如:

public class ConstTestDemo2 {
    public static void main(String[] args) {
        int age = 18;
        age = 20;
        System.out.println(age); //20
    }
}

变量的使用:

使用变量之前先声明变量,语法格式:

                                      数据类型 变量名;

public class ConstTestDemo2 {
    public static void main(String[] args) {
        int age;
        System.out.println(age);
    }
}

   可以看到上述代码中 age 变量的三要素只具备了两个要素:数据类型和变量名,缺少了字面(变量里面没有存储数据),这个变量是不能够访问的。像IDEA这样的编译器连编译都通过不了,如下图的红色箭头这样。

运行结果:

得出结论:在java语言中,变量必须先声明,在赋值才能访问;采用“ =”进行赋值。

赋值语法格式:

                                             变量名 = 值; 

需要注意的是值的数据类型必须和变量的数据类型保持一致。例如:

  java当中允许一次声明多个同类型的变量:

public class ConstTestDemo2 {
    public static void main(String[] args) {
        int a = 10, b = 20, c = 30;
        System.out.println(a);   //10
        System.out.println(b);   //20
        System.out.println(c);   //30
    }
}

  将代码稍微改动一下,这是修改之后的代码:

public class ConstTestDemo2 {
    public static void main(String[] args) {
        int a,b,c = 100;
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
    }
}
//修改后的代码编译不能通过,可以自行尝试一下
//定义了三个变量分别叫 a ,b,c,并且给c 赋值为100
//此时a,b 都没有赋值,不满足变量的三要素,也就是说,在访问之前要给变量赋值才能访问

变量的分类:

  变量根据位置不同可以分为;局部变量和成员变量。在方法体当中声明的变量以及方法的参数都是局部变量。在方法体外且在类体内部声明的变量叫成员变量,成员变量如果使用static关键字修饰则称为静态变量,如果没有static关键字修饰则称为实例变量。

public class ConstTestDemo3 {
    int a = 20; //实例变量
    static int b = 100;//静态变量

    public static void sum(int a, int b) { //局部变量

    }

    public static void main(String[] args) {
        int c = 50; //局部变量
    }
}

变量的作用域:

局部变量只有在方法体内部有效,方法执行的时候局部变量的内存才会被分配(类似一个婴儿出生),当方法执行结束之后,局部变量的内存就会被释放(类似于一个老人去世)。例如:

public class ConstTestDemo4 {
    public static void main(String[] args) {
        int age = 24;
    }

    public static void fun() {
        System.out.println(age);
    }
}

//首先给出结论,这段代码编译都是不能通过的
// 找不到符号:变量age
//原因分析因为age 是局部变量,出了main函数就被释放了,
//被释放了之后就不复存在,当在fun函数里面去访问的时候就找不到这个变量age,
//即编译器的运行结果:找不到符号:变量age
  

那如果将age 声明为静态变量,代码如下:

public class ConstTestDemo4 {
    static int age = 24;

    public static void main(String[] args) {
        System.out.println("main age" + "=" + age);
    }

    public static void fun() {
        System.out.println("fun age" + "=" + age);
    }
}

运行结果

 

为什么只有main方法当中输出了age,因为main()函数是程序的入口,而fun()函数没有手动的去调用它,所以就不会被执行到

在同一个作用域之中:变量名不能重复:

public class ConstTestDemo5 {
    public static void main(String[] args) {
        int a = 1;
        int a = 1;
    }
}

//连编译都不通过

局部变量和成员变量同名时,遵循 '' 就近原则 '' 局部变量优先:

public class ConstTestDemo5 {
    static int a = 10;

    public static void main(String[] args) {
        int a = 1;
        System.out.println(a);  //1
    }

    public static void fun() {
        System.out.println("fun" + "=" + a); //10
    }
}

  • 46
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值