关闭

JAVA学习笔记之构造函数和初始化块

标签: 构造函数和初始化块内存分配java实例对象
416人阅读 评论(0) 收藏 举报
分类:

构造函数的功能:用来初始化对象的成员变量的方法。 一般初始化的都是实例变量。很少情况下给静态变量初始化

构造函数是不写返回值的。

创建对象是调用构造函数将对象的成员变量给初始化啦。

定义构造函数的要义

  1. 构造函数名要与类名相同。

  2. 构造函数没有返回值,所谓的没有返回值就是不写返回值。

  3. 构造函数一般用public修饰,不能用static修饰。

构造函数其实是有返回值的:他的返回值返回值就是刚刚被初始化的当前对象的引用。


默认的构造函数

默认构造函数也叫无参构造函数,或者缺省的构造函数,就是程序员不主动构造构造函数,编译器就会自动提供一个无参的构造函数。

如果程序员在类中已经有一个构造函数,如果程序员不提供一个无参的构造函数,那么编译器是不会提供一个无参的默认构造函数。

This访问属性的时候, 如果方法中定义的实例变量和局部变量相同,这时候会把同名的实例变量隐藏起来,如果想要访问这个与局部变量相同的实例变量就是用this.属性名。

This表示正在调用的该方法的对象。

This访问构造函数提示系统使用已有的两个参数的构造函数来初始化成员变量,放在第一行。如果类中没有两个参数的构造函数,否则 // this(sno,age)

This是可以访问静态变量属性的。 即可以访问private static int age; this.age = 10;

Class{

1.成员变量

2.成员方法

3.构造函数

}

对于初始化块:在多个构造函数里,有相同的语句时,就可以吧相同的代码写到初始化代码块里

普通初始化代码块优先于构造函数执行。每当构造一个对象调用构造函数时,就会先于构造函数执行一遍初始化代码块。

作用:也是用来初始化对象的成员的(主要是实例变量)。

初始化块和构造函数的区别: ?

给类的成员变量初始化的几种方法:

在声明时初始化: private int age = 10;

使用构造函数: 在构造函数中初始化

在初始化代码块中初始化

使用get()和set()取得和赋值成员变量。 这不能叫初始化,只能叫赋值!

使用new创建对象的步骤以及内存分配图:

1.给对象的实例变量分配空间,静态变量不会给其分配空间,并默认初始化。基本数据类型默认为0或者0.0,引用数据类型默认为null;

2.成员变量声���时初始化,初始化块中又进行初始化 (按照由上到下的顺序执行(写代码的顺序));

3.最后是使用构造函数初始化。


以下是我自己将对象初始化内存分配的图析:

http://p1.pstatp.com/large/ca300053cced577377f



          有什么问题可以给我留言。

          我的微博http://weibo.com/laokuzai  安卓派,关注android最新资讯

          微信:zhuj8989,加微信畅聊android技术



1
0
查看评论

jAVA中静态初始化块、初始化块和构造方法的理解

在Java中,有两种初始化块:静态初始化块和非静态初始化块。它们都是定义在类中,用大括号{}括起来,静态代码块在大括号外还要加上static关键字。 非静态初始化块: 作用:给对象进行初始化。对象一建立就运行,且优先于构造函数的运行。 与构造函数的区别:非静态初始化块给所有对象进行统一初始...
  • u011554611
  • u011554611
  • 2014-05-21 00:16
  • 2260

java中静态初始化块,实例初始化块,构造函数区别

public class People { public static int num=0;//静态变量 String name; static//静态初始化块 { System.out.println(num+":静态初始化块"); ...
  • yilip
  • yilip
  • 2014-12-17 20:51
  • 4857

Java类的初始化顺序 (静态变量、静态初始化块、变量、初始化块、构造器)

我们大家都知道,对于静态变量、静态初始化块、变量、初始化块、构造器,它们的初始化顺序以此是(静态变量、静态初始化块)>(变量、初始化块)>构造器。我们也可以通过下面的测试代码来验证这一点:  Java代码  public class InitialOrderTes...
  • caomiao2006
  • caomiao2006
  • 2016-05-29 19:10
  • 1190

静态块、动态块、构造函数、继承函数等的执行顺序

不涉及继承 静态代码块, 动态代码块 ,构造函数 package demo01; public class Demo02 {     public Demo02(){        ...
  • wuzhuang12
  • wuzhuang12
  • 2016-12-28 22:05
  • 455

Java之构造函数与初始化块

先看看这个有意思的代码: 看看最后a会输出多少呢? public class Sample{    static int a=1;    static...{ a=2;}    static ...{  a=4;}...
  • sanjiuailuoluo
  • sanjiuailuoluo
  • 2011-12-20 16:03
  • 722

浅谈 JAVA中静态初始化块和非静态初始化块的区别

众所周知在JAVA编程语言中有两种初始化块: 静态初始化块非静态初始化块 他们到底有什么区别呢?今天就浅谈一下JAVA中静态初始化块和非静态初始化块的区别 静态初始化块 定义:         static{} 执...
  • heqingsong1
  • heqingsong1
  • 2012-04-28 12:00
  • 6701

Java中初始化块的真实作用

对于普通的类而言,可以放在初始化块中的初始化工作其实完全可以放到构造函数中进行,只不过有时会带来些许不便,如有多个构造器,就要在多个地方加上初始化函数完成初始化工作,而如果放到初始化块中的话则只要写一次即可。显然,使用初始化块的代码比不使用初始化块的代码要更简洁。但是,如果只是这一点便利的话,还不足...
  • Bettarwang
  • Bettarwang
  • 2014-05-27 10:36
  • 2968

java类的初始化块/执行顺序,实例化对象数据赋值

java里初始化一个类的对象,通过初始化快或者构造方法进行数据赋值。与其相关的执行代码有这么几种: 静态初始化块 初始化块 构造方法 静态初始化块 静态初始化块只在类加载时执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量。 非静态初始化块 非静态初始化块在每次初始化实例...
  • calmspeed
  • calmspeed
  • 2015-04-13 23:19
  • 1692

Java中初始化块和静态初始化块的区别

http://www.cnblogs.com/woshijpf/articles/3632489.html 在Java中,有两种初始化块:静态初始化块和非静态初始化块. 静态初始化块:使用static定义,当类装载到系统时执行一次.若在静态初始化块中想初始化变量,那仅能初始化类变量,...
  • hotdust
  • hotdust
  • 2016-06-29 09:39
  • 582

Java学习笔记之初始化块(代码块)

类的第四个成员:初始化块(代码块)【属性、方法、构造器】 1.代码块如果有修饰的话,那么只能使用static 2.使用static修饰的叫静态代码块,没有使用static的叫非静态代码块。 非静态代码块: 1、可以对类的属性(静态的 & 非静态的)进行初始化操作,同时可以调用...
  • u012815527
  • u012815527
  • 2015-04-01 13:01
  • 251
    个人资料
    • 访问:5910次
    • 积分:179
    • 等级:
    • 排名:千里之外
    • 原创:11篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类