Java再谈_变量
2021-01-27 13:15
标签:理解 stat 代码 子类 默认 地址 静态变量 object类 传递 Java通过[类型 变量名]的方式声明了一个变量。 当我们声明一个变量的时候,相当于在内存中为它指定了一个地址,通过变量我们可以访问到它代表的这块内存空间。 我们可以理解成,变量里存的就是它代表的这块内存空间里存储的值。 Java中的变量,根据作用域不同,可以分为三类: 如果不对变量进行初始化,Java不会给局部变量指定默认值,对静态变量和实例变量会指定初始值。 数值型为0,布尔型为false,引用型为null。 这里首先明确一个概念。 方法签名里的参数叫做形参,它们相当于只声明而没有初始化的变量。 调用方法时,括号里的参数叫做实参。 调用方法的过程。 有这么一句话,对于学习Java的人来说是比较熟悉的。 基本类型传递值,类类型传递引用。(引用是什么?就是地址啊,通过它可以访问对象啊。) 打个比方,声明一个变量,相当于开了个房(咳!咳咳咳!)。 基本类型的变量,存进去的就是个娃娃(0101这种二进制数);而类类型呢,存进去的是一个钥匙(地址)。 当把变量当做实参传递给方法的时候,基本类型给了你一个娃娃的复制品,而类类型给了你一把复制的钥匙。实际上它们给你的都是他们房间里放的东西的复制品。(也就是变量内存中存的数据的拷贝) 对于基本类型来说你用的只不过这些房间里东西的复制品,所以,这些房间里方的东西该是什么还是什么。这就是为什么对于基本类型来说,在方法中怎么操作形参的值,都不会影响到外边实参的值。 再说说类类型哈,你拿到复制好的钥匙,去开了那个房间的门,发现里边是个美女......然后你改变了这个房间里的状态,当有人用房间里的钥匙开了这个房间的门之后,看到的肯定是你改变后的状态呀。这就是为什么当我们传递一个类类型给方法时,方法内部修改这个对象的属性时,会影响实参所代表的对象的原因。 有人说,我在方法内部再创建一个对象给形参,会不会影响外面的实参呢?当然不会,你只不过是换了一把钥匙而已,不影响实参房间中存的那把钥匙。 有点乱,总结下: 在Java中有静态变量和实例变量。 静态变量的初始化可以在声明变量的同时初始化,也可以在静态代码块中初始化。这时会根据声明的顺序执行。 实例变量的初始化同理,不过比静态变量多一个在构造方法中初始化。构造方法是最后执行的,所以会以构造方法中的值为准。 如果引入继承的话,执行的顺序为 因为Java会先加载类,此时执行静态代码块中的内容。再执行父类的创建,最后执行子类的创建。 Java再谈_变量 标签:理解 stat 代码 子类 默认 地址 静态变量 object类 传递 原文地址:https://www.cnblogs.com/keathBlog/p/12844919.html1. 变量里存的什么
int a;// 这时只声明了一个变量,还没有初始化,Java是不能使用未初始化的变量的。
int b = 10;// 在声明变量的同时对它进行初始化。
Object c = new Object();// 声明了一个对象类型的变量,并通过new操作符创建了一个Object类型的实例,并将这个实例的引用赋给了变量c。
2. 变量的区别
默认值
3. 变量传给方法的是什么
4. 变量的初始化顺序
public static int a = 10;
static {
a = 20;
}// 最终a = 20
static {
b = 20;
}
public static int b = 10;// 最终b = 10
引入继承
上一篇:python日志模板
下一篇:Python之Word转PDF