Java基础07-构造函数与this

原创 2012年03月30日 22:03:02

一.构造函数-Constructor
 1.构造函数
  a.函数名和类名相同
  b.没有返回值类型 (注意: 区别于void!)
  c.new关键字创建对象时自动调用
    
  注意:
   a.构造函数可以重载;
   b.可以定义与类名相同的方法.
  
 2.什么时候使用构造函数
  当我们想在创建对象的时候就执行一段代码, 就可以把这段代码放在构造函数中
  例如对成员变量的赋值, 定义构造函数, 接收参数, 在执行构造函数的时候, 就可以对成员变量赋值了
  
 3.构造函数的调用
  a.当new关键字创建对象的时候调用
  b.在其他构造函数的第一条语句中使用this()形式调用
  
 4.自动生成构造函数
  一个类如果没写任何构造函数, 那么会自动生成一个. 这个自动生成的构造函数没有参数, 也没有任何代码.
  
  注意:
   如果写了一个有参的构造函数, 就不会自动生成无参的了.
  
 5.构造函数的访问权限
  通常情况下都是public的, 在别的类中可以创建该类对象
  某些特殊情况下我们定义了一个类, 不希望别人创建对象, 那么就可以用private修饰构造函数.
  
二.局部变量和成员变量
 1.局部变量:
  LocalVariable, 方法中定义的变量.
  
 2.成员变量:
  Field, 类中定义的变量
  
 3.重名问题:
  局部变量可以和成员变量同名.
  但是局部变量不能和局部变量同名. 成员变量不能和成员变量同名
  
 4.访问问题:
  在方法中直接以一个变量名形式访问的时候, 会先找局部变量, 再找成员变量.
  如果存在局部变量, 直接访问局部的, 如果没有局部的才找成员的, 如果成员的也没有, 才会报错.
  使用"this.变量名"形式访问一个变量, 可以直接找到成员变量
  
三.this关键字
 1.构造函数中
  可以使用"this(参数)"形式调用其它构造函数
  
 2.普通函数中
  this代表调用当前函数的对象
  通常在set方法和构造函数中都会使用, 当局部变量和成员变量同名时访问成员变量
 
 3.内部类中
  访问外部类的成员时,使用"外部类名.this.成员名"进行访问
  
四.函数的参数传递
 1.基本数据类型
  基本数据类型的数据由于是存储在栈内存中的, 传入函数中函数中的变量是一个新的值, 函数中改变调用处不变.
 
 2.引用数据类型
  引用数据类型的数据是存储在堆内存中的, 变量记住的是地址, 在调用函数时函数中传入的也是地址, 两边指向同一个对象, 一边改变两边都变.
  
五.代码块
 1.什么是代码块
  a.在类中用"{}"可以定义一个代码块
  b.代码块在创建对象的时候执行
  
 2.代码块和成员变量赋值的顺序
  一个类中如果定义了成员变量, 在创建对象的时候就会初始化, 这个默认的初始化是在代码块之前做的. 基本数据类型等于0, 引用数据类型等于null.
  如果代码中对成员变量赋了值, 也定义了代码块, 这两部分的顺序是按照定义的先后而决定的
  如果代码块写在了赋值的前面, 那么是先初始化, 再代码块, 再赋值
  如果代码块卸载了赋值的后面, 那么是先初始化, 再赋值, 再代码块 
 
六.static关键字
 1.static用于修饰类的成员:
  静态变量
  静态方法
  静态代码块
  静态内部类
  
 2.静态变量
  a.类加载后就初始化
  b.所有对象共享
  c.可以用"类名.变量名"访问
  
七.思考题
 海滩上有一堆桃子, 有五只猴子来分.
 第一只猴子发现了桃子, 将桃子分成了5份, 发现多了1个, 吃了. 拿走了一份.
 第二只猴子也来到海滩发现了桃子, 也是将桃子分成5份, 发现多了1个, 吃了. 又是拿走一份.
 五只猴子都是这么做的. 问: 海滩上最初有多少个桃子? 


 public static void sum()
 {
  int count=0;
  int total=1;
  while(count<=99999){
   count=total;
   for(int j=0;j<5;j++)
   {
    count=count*5+1;    
   }  
   System.out.println(count);
   total++;
  } 
 }

Java中构造函数详解

构造函数:创建构造对象时调用的函数。 作用:可以给对象经行初始化。(创建对象都必须要通过构造函数初始化)...
  • zhouxianling233
  • zhouxianling233
  • 2016年06月08日 14:38
  • 4157

java中构造函数与一般函数的区别

构造函数:1,构造函数名必须和类名一样,
  • linkedin_22019181
  • linkedin_22019181
  • 2014年10月28日 14:12
  • 1561

java构造函数和一般函数的区别

构造函数:用于给对象进行初始化,是给与之对应的对象进行初始化,它具有针对性,函数中的一种。 特点:1. 该函数的名称和所在类的名称相同。2. 不需要定义返回值类型。3. 该函数没有具体的返回值。 ...
  • ykyorky
  • ykyorky
  • 2017年03月24日 10:38
  • 1046

黑马程序员_学习笔记07-构造函数

------- Windows Phone 7手机开发、.Net培训、期待与您交流! -------
  • HengJiuDeSuiYue
  • HengJiuDeSuiYue
  • 2014年06月12日 00:06
  • 269

js构造函数与JAVA构造函数

构造函数对我们再熟悉不过了。但是,要是提到JS的构造函数,未必有很多人经常用到。下面是我自己对JS构造函数与JAVA构造函数区别的一点看法:先看两段JS构造函数的代码: script language...
  • woai_432
  • woai_432
  • 2008年03月02日 16:08
  • 2340

Java重载、覆盖与构造函数

/** * 拷贝构造函数---Copyf t2 = new Copyf(t1);就不会在调用默认构造函数了。 * 复制clone和引用 * 重载和覆盖都是子类对父类而言 * override可...
  • yutiannanjingjiangsu
  • yutiannanjingjiangsu
  • 2013年08月16日 19:17
  • 979

js核心基础之构造函数constructor

在js中,可以利用构造函数来创建特定类型的对象,其中,有一些原生的构造函数,Object、Array、等等,所以,当type of Object时,返回的是function。此外,我们还可以创建自定义...
  • zhy13087344578
  • zhy13087344578
  • 2017年08月03日 15:34
  • 173

读书总结——《分布式java应用 基础与实践》

拜读了大神多年前的著作,收获良多。这也是我开始写博客的初衷,哪怕仅仅学到了1% ,也以文字记录下来,对自己是个促进。以后也会继续坚持将学习的书籍摘要或心得记录下来。 这本书出版于2010年,距今已6...
  • sosfnima
  • sosfnima
  • 2016年07月21日 16:12
  • 1531

黑马程序员——构造函数与set方法

1,下面这两个的区别,构造函数初始化和set在下面代码中有何不同?为什么?    Person(String name)         {           this.name = name;  ...
  • u012808922
  • u012808922
  • 2015年06月27日 10:32
  • 482

Java_浅谈构造函数、构造代码块与静态代码块的用法

构造函数、构造代码块和静态代码块容易混淆,它们的执行条件和执行顺序也常常容易犯迷。这里就针对这些问题说一下我个人的一些理解,顺便对这部分内容做个小结。 构造函数 格式:类名(参数1,参数2,…){构造...
  • yeziyfx
  • yeziyfx
  • 2014年06月22日 09:21
  • 2693
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java基础07-构造函数与this
举报原因:
原因补充:

(最多只允许输入30个字)