面向对象之变量
这里写的就是以后自己的学习标准
变量就是申请内存来存储值。也就是说,当创建变量的时候,需要在内存中申请空间。
内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据。
因此,通过定义不同类型的变量,可以在内存中储存整数、小数或者字符。
Java 的两大数据类型:
- 内置数据类型
- 引用数据类型
即内置变量和引用变量。
一、内置数据类型(基本数据类型)
- 形如int a;
java内置数据类型:
int a = 10;
定义变量,分配存储空间 存储字面量。
这就是个初始化的过程。
这不是指向!a的存储空间就是存"10"。
int b=11;
a=b;
现在是传值!a的存储空间存"11",b的存储空间存"11"。
注意:内置数据类型(基本数据类型)的值就是值。
二、引用数据类型
在Java中,引用类型的变量非常类似于C/C++的指针。引用类型指向一个对象,指向对象的变量是引用变量。这些变量在声明时被指定为一个特定的类型,比如 Employee、Puppy 等。变量一旦声明后,类型就不能被改变了。
·对象、数组都是引用数据类型。
数组是引用数据类型详见《数组详解》。
——菜鸟教程
- 形如Integer a;
Integer a = new Integer(3);
声明引用变量 实例化对象
新创建的Integer对象的引用可以赋值给Integer(引用变量的简称,以后都可以这样简称)变量。(是引用赋值给变量)。
引用变量a存储单元存放的是对象的引用。
(变量a的值是一个“引用”值)
new是在内存中开辟了一块空间(实例化),创建一个对象。然后让引用变量a的值(引用值的简称,以后都可以这样简称)指向它(对象)。 引用在此处就是Integer对象的引用。
声明:声明一个引用变量,包括引用变量名称和类型。
实例化:使用关键字new来创建一个对象。
初始化:使用new创建对象时(即实例化时),会调用构造方法初始化对象。
类是对象的模板,当使用类实例化一个对象时,相当于用模板复制了一个实例,如果创建多个对象,则会复制多个实例,当修改其中一个实例时,不会影响到其它实例。
变量a的值是一个引用值,它(引用)指向在上面示例中生成的类Integer的实例对象。
有个例子:
package com.array;
public class ArrTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Student[] stu=new Student[3];
Student a=new Student();
a.setStuNo("112");
a.setAge(12);
stu[0]=a;
System.out.println(stu[0]);
a.setStuNo("33");
System.out.println(stu[0]);
//这个代码证明传递引用,不论哪个引用变量导致内存中对象变了,
//其余的引用变量的"值"都会变
}
}
输出结果:
学生编号=112, stuName=null, gender=null, age=12, score=0
学生编号=33, stuName=null, gender=null, age=12, score=0
注意:引用数据类型是传值引用,一处引用导致内存中的对象变了,所有引用变量的值指向的对象都变。(本来就是同一个对象!)