千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:沈阳千锋IT培训  >  技术干货  >  Java变量详解

Java变量详解

来源:千锋教育
发布人:lx
时间: 2023-03-02 17:30:00

  Java变量详解你了解吗?我们学习任何一门编程语言时,一般学习的第一个知识都是关于变量的定义,只有学习了变量的定义我们才能继续往下学习其他的内容。变量虽然看似简单,但越是基础的内容就越难理解,比如你知道变量的值都存放在哪里吗?传递变量时是传递的值还是数据地址你清楚吗?......如果这些你都不清楚,那就让老师来带你学习Java变量,咱们来真正的认识它。

Java变量详解

  一. 变量的含义

  首先,我们要知道什么是变量。官方的定义是变量是内存中一块区域,用于存放数据。其实更容易理解的说法是变量就是一个名字,你刚买了一条小狗,想给他起个名字叫旺财,旺财就是变量。你新买了一只猫,想叫它阿花,阿花就是一个变量。所以这是第一层含义,变量就是个名字。

  其次,我们要知道变量表达的具体含义。上面我们新买的狗叫旺财,当你下次叫旺财的时候,一定是叫的那条狗,你唤阿花的时候,一定是唤的那条猫。我们一旦给一个具体的事物起了一个名字,下次再使用时,一定代表的是具体事物。

  第三,如果你买的那条狗,十几年过去了,他的寿命结束,你可以继续买一条狗,还叫它旺财,也就是说我们可以为同一个名字指定不同的值。同理就像我们的年龄一样,今年18岁明年19岁,它是可以改变的。

  这些都是我们在现实中遇到的具体问题,但是java的开发者,他们也是人,也是生活在这个世界上,他的想法一定和我们平常人没有太大的区别,只是他们把这种现象设计成语法定义在了java中,以下面的例子说明。

  //现实中

  狗 旺财 = 刚买的那条狗;

  //意思有一个名字叫旺财,它是一条狗,它就是我刚买的那条狗

  //程序中

  int age = 18;

  //意思是有一个名字叫age,它是一个int,它就是18

  上面两行语句其实所要表达的含义是一样的!

  二. 基本类型

  在上面代码中,我们看到一个单词是int,那么int是什么意思呢?其实它就像我们现实中的狗、猫、猪、羊一样,都代表一个物种,表示的是一种事物。int在java中表示的是整数,除了int还有其他的类型吗?答案是有的。在java中除了int表示整数,还有double表示小数,还有boolean表示对错,还是char表示字母和数字,这些类型在java中都被称作基本类型。

  int age = 18;

  double salary = 20000.0;

  boolean isAdult = true;

  char flag = 'A';

  这时我们可能会想到一个问题,我们现实中旺财,阿花表示的一个具体存在的狗,一个具体存在的猫。而在上面定义age、salary这些变量名表示的具体的数值是保存在哪里的呢?这个就需要从计算机存储原理上进行理解。老谢先跟大家简单地说一下,就是计算机的CPU会为每一个运行的java程序,分配一个块内存的空间,用于保存程序在运行中产生的变量及其值。而java又把这块内存的区域分成堆、栈等几个部分,类似我们家里有主卧、次卧、书房一样。我们上述的变量及其值就保存在栈这块内存的区域中,如下图:

  

 

  上图是基本类型的数据在内存中进行保存的形式,java规定所有基本类型的值都保存在栈内存中。

  三. 引用类型

  那java中除了基本类型的数据,还有其他类型的数据吗?答案是肯定的。除了基本类型的数据之外,还有其他类型的数据,比如引用类型。那么引用类型的数据值是保存在哪里的呢?我们用下面这个例子给大家做解释:

  public class Dog {

  String name;

  ing age;

  }

  上面代码定义了一个狗类,表示狗这种类型的动物,我们可以根据这个类来创建一只具体的狗,在java是这样表示的:

  Dog wangcai = new Dog();

  这里wangcai就是一个变量,它表示我们创建的一个具体的狗(对象),它在内存中的表示形式是这样的:

  

  我们会发现我们创建的引用类型的值,也就是new的对象是存放在堆内存中的。没错,在java中所有引用类型变量表示的值都是存放在堆中的。

  四. 一道经典面试题

  那么知道了变量的值存放在何处,这对于编写程序有什么用处呢?我们来看这样一道经典的面试题:

  public class Demo {

  public static void main(String[] args) {

  int a = 8;

  changNum(a);

  Dog dog = new Dog();

  dog.age = 1;

  changDog(dog);

  System.out.print(a);

  System.out.print(dog.age);

  }

  public static void changNum(int a) {

  a = 10;

  }

  public static void changDog(Dog dog) {

  dog.age = 2;

  }

  }

  请问上面的代码中,最后打印输出的a的值,和dog.age的值分别为多少?

  如果我们想要理解这个题目,就必须知道变量的值保存在哪里,是如何进行传递的。简单地说,基本类型的值是保存在栈中,传递的值,值传递之后就和它没有关系了,不会影响原来的值。而引用类型传递的是堆中的对象,原来的变量在方法执行结束后,还依然指向堆中的对象,所以会影响原来的变量。所以上面问题的答案,分别打印出来的值是8和2。

  在java的学习中,任何一个知识点,其实都挺重要,一些看似简单的内容,如果揉碎了展开了,也会让你收获很多。希望大家在以后学习的过程中,能够深入理解和琢磨,而不是浮于表面,否则在面试中只会被虐的

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

为什么会出现ref?

2023-05-05

防抖和节流是什么?

2023-04-27

JS的原型与原型链是什么?

2023-04-20

最新文章NEW

什么是redux?

2023-05-05

vue的计算属性,特性,应用是什么?

2023-04-27

负载均衡原理是什么?

2023-04-25

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>