面向对象--类的成员之属性

1.类的成员之属性

语法:[访问权限修饰符] [修饰符] 类型 属性名;
属性的访问权限修饰符:private、默认、protected、public
修饰符:static、final、transient,volatitle

属性的类型:
	基本数据类型:
		整型:byte,short,int long 默认为0;
		浮点型:float double 没,默认0.0
		字符型:char 默认:'\u0000'
		布尔型:boolean 默认 false
	引用数据类型:
		类:默认值为null
		数组:数组的默认值为null,数组的元素依据其基本数据类型而定
		接口:默认值为null

代码示例:

class Demo{
	int n;
	byte b;
	short s;
	long l;
	float f;
	double d;
	char c;
	boolean bl;
	public void show() {
		System.out.println(n);
		System.out.println(b);
		System.out.println(s);
		System.out.println(l);
		System.out.println(f);
		System.out.println(d);
		System.out.println(c);
		System.out.println(bl);
	}
}

运行结果:

0
0
0
0
0.0
0.0

false

注意:这里的flase上面是空的,并不是因为char的默认值是空或空格,而是unicode编码的\u0000,unicode中的空格是\u0020

interface inter{
	
}
class Demo{
	String str;
	int[] arr;
	inter i;
	public void show() {
		System.out.println(str);//null
		System.out.println(arr);//null
		System.out.println(i);//null
	}
}

1.1.1数组的初始化

我们说的数组默认值,是指系统默认初始化值
数据的初始化和数组元素的初始化是两回事,看一下下面的例子
public void method() {
		int[] arr=new int[5];
		System.out.println(arr);
		System.out.println(arr[0]);
	}
[I@15db9742
0
分析整个method方法的执行过程:
	1. 调用method(),此时会创建一个栈帧,用于存放method()
	2. 执行new一个数组,此时会向堆空间申请一个连续的内存空间用于存放数组
		* 此时会首先获取到这个数组的数据类型
		* 例如上面的是int,那么在申请内存的时候就会将这段连续的内存空间全部初始化为int的默认值0
	3. 申请后arr这个变量就会和申请的数组内存空间进行一个关联,这个关联也就是地址([I@15db9742)
	4. 这个地址([I@15db9742)指向的只是这段内存空间的头,此时我们输出arr
	5. arr输出的结果就是内存空间的地址
	6. 输出arr[0],这就不得不解释一下数组索引是如何建立的?
		* 数组寻址:arr[i]=address+i*typesize
		* 例如int类型是4字节,address就会加上(i*4)个字节,就会指向下一个元素的位置

这样寻址也是为什么数组下标从0开始而不是1的原因,如果数组索引从1开始,那么寻址公式将会变成:

arr[i]=address+(i-1)*typesize
这样多一次运算

1.1.2变量

分类:
	1.成员变量(实例变量)
	2.局部变量
		相同点:
			1)声明方式相同:类型 变量名=初值;
				注意:成员变量可以加访问权限修饰符;但是局部变量不能加访问权限修饰符,局部变量只能用final修饰
		不同点:
			1)声明位置不同:
				成员位置:声明在类中方法外
				局部位置:方法中,或者方法的参数
			2)在内存中的存储位置不同
				成员变量:内存在堆中,成员变量在创建对象之后会有默认值
				局部变量:内存在栈中,必须初始化赋值,否则不可使用
			3)初始值不同:
				成员变量:在创建对象之后有初始值
				局部变量:没有初始值
			4)生命周期不同:
				成员变量:随着对象的创建而创建,对象的销毁而销毁
				局部变量:随着方法的调用而创建,方法的结束而销毁
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Carl·杰尼龟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值