一、构造函数

1 构造函数的作用

给对应的对象进行初始化.

2 构造函数的格式

  修饰符 函数名(形式参数){  //函数名就是类名
函数体 }

举例说明:

class Perosn{
private int id;
private String name;
private int age; public Perosn(){ //无参构造器
cry();
}
public Perosn(int id, String name, int age) { //有参构造器
this.id = id;
this.name = name;
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
} public void cry(){
System.out.println("哇哇哇....");
} }

3 构造函数要注意的细节

 1.构造函数是没有返回值类型
 2.构造函数必须与类名一致
 3.构造函数并不是由我们手动调用的,而是在创建对应的对象时,jvm就好自动调用到相应的构造函数
 4.如果类没有显示的写一个构造函数时,那么java编译器会自动为该类添加一个无参的构造函数.
  javap 反编译工具使用的格式
         javap -c -l -p 类名
 5.如果类显示的写了一个构造函数时,那么java编译器则 不会在为该类添加一个无参的构造函数
 6.构造函数是可以在一个类中以函数重载的形式存在多个的

4 构造函数和普通函数的区别

1.返回值类型的区别:
     1.构造函数没有返回值类型的
     2.普通函数是有返回值类型,即使没有返回值,返回值类型也要写void
2.函数名的区别
     1.构造函数的函数名必须与类名一致
     2.普通函数的函数名只需要符号标识符的命名规范即可
3.调用方式的区别
    1. 普通函数是有我们创建对象来调用的,一个对象可以调用多次普通的函数(手动调用)
    2.构造函数是创建对象时,有jvm自动调用的
4.作用上的区别:
     1.构造函数的作用:用于初始化一个对象
     2.普通函数是描述一类事物的公共行为的

/*
1.描述一个员工类.员工具备的属性:id/name/age
具备的行为:工作
2.要求:一旦创建一个员工对象的时候,那么该员工对象就要对应的属性值
*/ class Employee{
int id;
String name;
int age;
//含参构造器
public Employee(int ids,String names,int ages){
id=ids;
name=names;
age=ages;
}
//无参构造器
public Employee(){ }
public void work(){
System.out.println(name+"好好工作,努力挣钱,赢取秋香");
}
}
class Demo3 {
public static void main(String[] args) {
//对应实例化对象,调用对应的构造器.
//无参对象
Employee e=new Employee();
//实例化一个含参的对象
Employee e=new Employee(1,"华安",24);
e.work();
System.out.println("编号:"+e.id+"\t"+"姓名:"+e.name+"\t"+"年龄:"+e.age);
}
}

二、构造代码块

1 构造代码块作用

给所有的对象进行统一的初始化。 (将所有构造方法中公共的信息进行抽取。);(给对象进行初始化。对象一建立就运行并且优先于构造函数。)

1.构造代码块的作用: 给对象进行统一的初始化
2.构造函数的作用: 给对应的对象初始化.
class Perosn{
private int id;
private String name;
private int age;
//构造代码块
{
cry();// 每个Person对象创建出来都会执行这里的代码
} public Perosn(){ //无参构造器
cry();
}
public Perosn(int id, String name, int age) { //有参构造器(函数)
this.id = id;
this.name = name;
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
} public void cry(){
System.out.println("哇哇哇....");
} }

2 构造代码块的格式

构造代码块的格式:
    {
    构造代码块...
    } 静态代码块的格式:
      static{
          代码...
          }

举例:

class Student{
String name;
static String country="中国"; /*//有参构造器
public Student(String name){
this.name=name; }
*/ //代码块
{
System.out.println("这是构造代码块");
} //静态代码块
static{
System.out.println("这是静态代码块");
} //构造函数
public Student(){
System.out.println("这是无参构造器"); }
} class Demo5{ public static void main(String[] args) {
Student s=new Student();
Student s1=new Student();
}
}

结果图:

注意: 静态代码块,代码块,构造器的运行顺序:静态代码块最先执行,并且只执行一次;其次到构造代码块,最后到构造函数(器)。代码块和构造函数对象的创建次数决定调用次数,代码块是先于构造器(函数)执行。

构造代码块:对于初始化功能来讲,一旦一个类创建一个对象,将先执行直接初始化和构造代码块,最后才执行构造器

代码块的类别:
        1.构造代码块
        2.静态代码块
        3.局部代码块:大括号位于方法之内.作用:缩短了局部变量的生命周期,节省了一点点内存

class Demo4 {
//无参构造器
public Demo4(){
System.out.println("好好学习,迎娶白富美");
}
//普通方法(函数)
public void m(){
System.out.println("迎娶校花");
}
//构造代码块
{
System.out.println("好好学习,天天向上,迎娶校花");
} public static void main(String[] args) {
Baby b=new Baby();
}
}
//结果:
  构造代码块先执行, 再执行构造函数

3 构造代码块与构造函数区别

构造代码块是给所有对象进行统一初始化, 构造函数给对应的对象初始化。

4 构造代码块要注意的事项

1.java编译器在编译一个java源文件的时候,会把成员变量提到一个类的最前端
    2.成员变量初始化工作其实都在构造函数中执行的
    3.一旦java编译器编译之后,那么构造代码块的代码就会被移动到构造函数中执行,是在构造函数之前执行的,构造函数中的代码最后执行的
    4.成员变量的初始化与构造代码块的代码是按照当前代码的顺序执行的

/*
需求:统计一个类被使用多少次创建对象,该类对外显示被创建的次数
*/ class Emp{
static int flag=0;//计数器
String name;
//构造代码块
{
flag++;//
}
//含参的构造器
public Emp(String names){
name=names;
}
//无参构造器
public Emp(){
} }
class Demo5
{
public static void main(String[] args)
{
Emp e=new Emp("土豆");
Emp e1=new Emp("土豆");
Emp e2=new Emp("土豆");
System.out.println(e.flag);
}
}

原创作者:DSHORE

作者主页:http://www.cnblogs.com/dshore123/

原文出自:http://www.cnblogs.com/dshore123/p/8717718.html

欢迎转载,转载务必说明出处。(如果本文对您有帮助,可以点击一下右下角的 推荐,或评论,谢谢!

 
 
 
G
M
T
 
检测语言
世界语
中文简体
中文繁体
丹麦语
乌克兰语
乌兹别克语
乌尔都语
亚美尼亚语
伊博语
俄语
保加利亚语
僧伽罗语
克罗地亚语
冰岛语
加利西亚语
加泰罗尼亚语
匈牙利语
南非祖鲁语
卡纳达语
印地语
印尼巽他语
印尼爪哇语
印尼语
古吉拉特语
哈萨克语
土耳其语
塔吉克语
塞尔维亚语
塞索托语
威尔士语
孟加拉语
宿务语
尼泊尔语
巴斯克语
布尔语(南非荷兰语)
希伯来语
希腊语
德语
意大利语
意第绪语
拉丁语
拉脱维亚语
挪威语
捷克语
斯洛伐克语
斯洛文尼亚语
斯瓦希里语
旁遮普语
日语
格鲁吉亚语
毛利语
法语
波兰语
波斯尼亚语
波斯语
泰卢固语
泰米尔语
泰语
海地克里奥尔语
爱尔兰语
爱沙尼亚语
瑞典语
白俄罗斯语
立陶宛语
索马里语
约鲁巴语
缅甸语
罗马尼亚语
老挝语
芬兰语
苗语
英语
荷兰语
菲律宾语
葡萄牙语
蒙古语
西班牙语
豪萨语
越南语
阿塞拜疆语
阿尔巴尼亚语
阿拉伯语
韩语
马其顿语
马尔加什语
马拉地语
马拉雅拉姆语
马来语
马耳他语
高棉语
齐切瓦语
  世界语
中文简体
中文繁体
丹麦语
乌克兰语
乌兹别克语
乌尔都语
亚美尼亚语
伊博语
俄语
保加利亚语
僧伽罗语
克罗地亚语
冰岛语
加利西亚语
加泰罗尼亚语
匈牙利语
南非祖鲁语
卡纳达语
印地语
印尼巽他语
印尼爪哇语
印尼语
古吉拉特语
哈萨克语
土耳其语
塔吉克语
塞尔维亚语
塞索托语
威尔士语
孟加拉语
宿务语
尼泊尔语
巴斯克语
布尔语(南非荷兰语)
希伯来语
希腊语
德语
意大利语
意第绪语
拉丁语
拉脱维亚语
挪威语
捷克语
斯洛伐克语
斯洛文尼亚语
斯瓦希里语
旁遮普语
日语
格鲁吉亚语
毛利语
法语
波兰语
波斯尼亚语
波斯语
泰卢固语
泰米尔语
泰语
海地克里奥尔语
爱尔兰语
爱沙尼亚语
瑞典语
白俄罗斯语
立陶宛语
索马里语
约鲁巴语
缅甸语
罗马尼亚语
老挝语
芬兰语
苗语
英语
荷兰语
菲律宾语
葡萄牙语
蒙古语
西班牙语
豪萨语
越南语
阿塞拜疆语
阿尔巴尼亚语
阿拉伯语
韩语
马其顿语
马尔加什语
马拉地语
马拉雅拉姆语
马来语
马耳他语
高棉语
齐切瓦语
         
 
 
 
文本转语音功能仅限200个字符
 
  选项 : 历史 : 反馈 : Donate 关闭

java基础8 构造函数和构造代码块的更多相关文章

  1. 黑马程序员——JAVA基础之构造函数,构造代码块

    ------- android培训.java培训.期待与您交流! ---------- 构造函数特点: 1.  函数名与类名相同 2.  不用定义返回值类型 3.  不可以写return语句 构造函数 ...

  2. java基础-静态,非静态(构造)代码块,类加载

    static block and non-static block(constructor block) [toc] 想来想去,先来一题比较好 public class Foo { public st ...

  3. java面向对象(二)构造函数和构造代码块

    面向对象 类成员 1.成员变量 属性 数值类型的基本数据类型默认值是 0 成员变量在任何方法中都能访问,和声明先后没有关系 2.成员函数 方法 3.定义方式 class 类名{成员变量:成员函数} / ...

  4. Java 基础 面向对象之关键字内部类代码块修饰符

    final final概念 继承的出现提高了代码的复用性,并方便开发.但随之也有问题,有些类在描述完之后,不想被继承,或者有些类中的部分方法功能是固定的,不想让子类重写.可是当子类继承了这些特殊类之后 ...

  5. 【Java基础】继承中的代码块和构造方法的执行顺序探索

    本文讲述有关一个类的静态代码块,构造代码块,构造方法的执行流程问题.首先来看一个例子 /** * Created by lili on 15/10/19. */ class Person{ stati ...

  6. java基础-表达式,语句和代码块

    浏览以下内容前,请点击并阅读 声明 表达式 表达式由变量,操作符和方法调用组成,表达式的返回值类型由表达式中的元素(如操作符,变量等)决定如: cadence = 0 上述代码将返回一个int类型的值 ...

  7. 5.1JAVA基础复习——JAVA中的静态代码块、构造代码块、构造函数、局部代码块区别

    构造代码块: 在类中定义可以给所有对象进行初始化.局部代码块: 在方法中定义属性的生命周期.静态代码块: 在类中定义用于给类调用时属性的初始化 构造函数与构造代码块的区别: 构造函数是给对应的对象进行 ...

  8. 关于java构造函数,静态代码块,构造代码块,和普通代码块相关总结(一)

    构造函数.构造代码块和静态代码块容易混淆,它们的执行条件和执行顺序也常常容易犯迷.这里就针对这些问题说一下我个人的一些理解,顺便对这部分内容做个小结. 一.构造函数 格式:类名(参数1,参数2,-){ ...

  9. Java类中代码的执行顺序 静态代码块>构造代码块>构造方法

    一:静态代码块 注意是代码块,不是静态函数.函数要调用才执行,代码块加载就执行,一般是静态变量的声明与初始化.被static修饰的代码块(赋值.输出操作等).类中静态语句块仅在类加载时被执行一次 如 ...

随机推荐

  1. 【CF813E】Army Creation(主席树)

    [CF813E]Army Creation(主席树) 题面 CF 洛谷 翻译 by ppl 见洛谷 题解 考虑最多只会有\(K\)个相同的数 那么,也就是说,如果一个数会被选 那么,和它相等的数中,在 ...

  2. ZJOI 2017 day2 4.27

    明天就要比赛啦,今天早点休息. 既然是随便扯,首先就是yyzx的wifi(宁波的这种wifi系统我第一次见,要打开任意一个浏览器,才能跳出界面,网还是挺快的) 上午是学车的翁伊嘉&猪猪侠讲课, ...

  3. 洛谷U14200 Changing 题解 【杨辉三角】

    题目描述 有nnn盏灯环形排列,顺时针依次标号为1⋯n1\cdots n1⋯n.初始时刻为000,初始时刻第iii盏灯的亮灭aia_iai​给定,000表示灭,111表示亮.下一时刻每盏灯的亮灭取决于 ...

  4. 【Python简介】

    一.Python的简介 1.什么是python? Python(发音:[ 'paiθ(ə)n; (US) 'paiθɔn ]),是一种面向对象的解释性的计算机程序设计语言,也是一种功能强大而完善的通用 ...

  5. Communications link failure;;The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.

    Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure::The ...

  6. python基础----封装、封装与扩展性

    从封装本身的意思去理解,封装就好像是拿来一个麻袋,把小猫,小狗,小王八,还有egon和alex一起装进麻袋,然后把麻袋封上口子.但其实这种理解相当片面 首先我们要了解 要封装什么 你钱包的有多少钱(数 ...

  7. 【DP】【P5007】 DDOSvoid 的疑惑

    Description 给定一棵以 1 为根的有根树,定义树的一个毒瘤集为一个集合,并且集合中任意两个元素之间不存在祖先与后代关系. 定义一个毒瘤集的毒瘤指数为集合内所有元素的价值之和 要求给定树的所 ...

  8. Linux之执行命令操作20170330

    介绍一下Linux系统中的代码执行shell等命令的几种操作方式: 一.标准流管道popen 该函数的原型是FILE * popen(const char* command, const char * ...

  9. Lua弱表Weak table

    定义:弱表的使用就是使用弱引用,很多程度上是对内存的控制. 1.weak表示一个表,它拥有metatable,并且metatable定义了__mode字段. 2.弱引用不会导致对象的引用计数变化.换言 ...

  10. Spring容器简介

    Spring 是面向 Bean 的编程(BOP,Bean Oriented Programming),提供了 IOC 容器通过配置文件或者注解的方式来管理对象之间的依赖关系. 控制反转模式(也称作依赖 ...