5.24课堂笔记之局部变量&全局变量

引用类型和变量:

数据类型:基本类型、引用类型

基本类型:8种
特点:对象仅存放一个数或单个数据

十进制:
八进制:以0开头,如 012
十六进制:以0x或者0X开头,如0x12


计算中的数据类型转换:
整形+实型 -> 整形
Double + X = double
Float + long = long

10 / 0 -> Exception
10/0.0 ->NaN
Char(127~-128)


数值间的强制类型转换会损失精度,如double 1.934 = int 1

== 比较两个数的实际地址,而string.equal()


接口不能创建对象,但是可以创建变量,存放实现接口类的地址

Java中的构造方法只要创造了一个,就会覆盖掉默认的无参构造方法,没写的话只有一个默认的无参构造方法

若不对外提供构造方法,可显式声明构造方法,再将其声明为private


Student s = null ;

在栈中创建Student 类型的变量 s,值默认为垃圾值,手动设置为null。该变量仅为该对象的句柄,并不是对象本身,真正的对象没用名字,仅仅在栈中分配引用空间,还未创建对象。

s = new Student(“Name”);    
  1. 在堆区为属性顺序开辟空间,堆区中的值默认为null

  2. 为方法在堆区开辟空间,值为该类的该方法在方法区中的引用,此时已可调用 this

  3. 调用有参构造方法,将对象的this指针给构造方法,并传递属性值:

    Public Student(String name){
        this.name = name;
    }
    

在这个引用型变量中,s是变量,句柄,引用,地址,指针,值,真正的对象没用名字

Student s2 = null;
s2 = s;

s与s2同时指向一个对象,Java中只有值传递,没用地址传递等。此步骤即将s中存放的值:指向原对象的地址给了s2,指向同一对象,对s2的操作会印象s的值

1


只有方法,没有属性的对象:充血模型
只有属性,没有方法的对象:贫血模型


局部变量:

局部变量在方法区的语句块中定义。

局部变量在调用时,在方法相应的栈的工作区间中开辟空间;

不会自动初始化,为垃圾值,工作空间仅自己方法可以使用,是由方法使用的

局部变量作用范围仅存在于语句块或方法内有效

局部变量会在方法执行完毕后立即释放

局部变量可以为引用类型或者基本类型


全局变量:

先在方法区中加载GlobalVar类

当加载时就会在方法区的静态数据区开辟空间,并且立即将该区域与类进行静态绑定,调用默认初始化。

此时没有对象,仅类可以访问该对象

New的时候,在主线程的主方法栈帧中创建局部变量gv1,之后在堆区中创建实例全局变量k

在堆中开辟MethodA()和B,把对象的地址给gv1,对象和变量均为GlobalVar类型

带有静态全局变量的类的对象,将自动拥有该静态全局变量的引用,并且有和该静态全局变量同名的变量i,在堆区存储类的引用

Gv1.k = 20.5;
GlobalVar Gv2 = new GlobalVar();
  1. 在堆区 开辟K、MethodA、MethodB

  2. 在堆区开辟i

  3. k设为20.5

  4. 调用gv1.k


静态全局变量没有this指针,只有实例全局变量有

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值