Chinaunix首页 | 论坛 | 博客
  • 博客访问: 69950
  • 博文数量: 43
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 420
  • 用 户 组: 普通用户
  • 注册时间: 2014-06-27 15:04
个人简介

记录,分享

文章分类

全部博文(43)

文章存档

2017年(24)

2015年(1)

2014年(18)

我的朋友

分类: Java

2014-06-27 16:24:17


1. 用new关键字创建对象并赋值给引用变量的过程:
a.为对象分配内存空间。将对象的成员变量自动初始化为默认值。
b.如果对象的成员变量在类内部声明时被显式初始化,则其值赋给属性。
c.调用构造方法。
d.返回对象的引用。

2. 变量的初始化及默认值:
(1)成员变量的初始化:不惯程序有没有显式进行初始化,虚拟机都会先自动给他初始化为默认值,规则如下
  • 整数型:0
  • float:0.0f
  • double:0.0d
  • char:”\u0000“
  • boolean:false
  • 引用类型(数组也是引用类型):null
  • 数组对象里的元素:分别初始化为相应类型的默认值
(2)局部变量的初始化:局部变量声明之后,虚拟机不会走动给他初始化为默认值,因此对于局部变量,必须先进行显式初始化,再使用它。


3. 静态变量和实例变量的生命周期分别与类生命周期和对象生命周期相同。
    静态变量位于方法区,而实例变量位于堆区。


3. 在一个方法内,允许存在与成员变量同名的局部变量或参数。此时,成员变量被屏蔽,可通过this关键字来访问。

4. 尽量将局部变量的作用域最小化,以增加代码的可读性。

5. 变量的赋值和类型转换

(1)基本变量类型转换
  • 自动类型转换:低位类型->高位类型(如int->long)
  • 强制类型转换:高位类型->低位类型(如long->int)
(2)引用变量类型转换:
  • 自动转换:将子类变量赋值给直接或间接父类变量(如Dog变量赋给Animal变量)
  • 强制转换:将父类赋值给子类或间接子类(如Animal变量赋值给Dog变量)
编译阶段 —— 对于引用类型变量,编译器值根据变量被显式声明的类型区编译。在引用类型变量之间赋值时,两边的变量必须在继承树的同一个分支上,否则编译报错。
运行阶段 —— 在运行时,虚拟机将根据引用变量实际引用的对象进行转换。
    Animal cat = new Cat();
    Dog dog = (Dog)cat;    //编译可以通过,但运行时抛出ClassCastException
阅读(471) | 评论(0) | 转发(0) |
0

上一篇:JAVA笔记_多态

下一篇:JAVA笔记_继承

给主人留下些什么吧!~~