java基础8 构造函数和构造代码块
一、构造函数
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 欢迎转载,转载务必说明出处。(如果本文对您有帮助,可以点击一下右下角的 推荐,或评论,谢谢!) |
检测语言 世界语 中文简体 中文繁体 丹麦语 乌克兰语 乌兹别克语 乌尔都语 亚美尼亚语 伊博语 俄语 保加利亚语 僧伽罗语 克罗地亚语 冰岛语 加利西亚语 加泰罗尼亚语 匈牙利语 南非祖鲁语 卡纳达语 印地语 印尼巽他语 印尼爪哇语 印尼语 古吉拉特语 哈萨克语 土耳其语 塔吉克语 塞尔维亚语 塞索托语 威尔士语 孟加拉语 宿务语 尼泊尔语 巴斯克语 布尔语(南非荷兰语) 希伯来语 希腊语 德语 意大利语 意第绪语 拉丁语 拉脱维亚语 挪威语 捷克语 斯洛伐克语 斯洛文尼亚语 斯瓦希里语 旁遮普语 日语 格鲁吉亚语 毛利语 法语 波兰语 波斯尼亚语 波斯语 泰卢固语 泰米尔语 泰语 海地克里奥尔语 爱尔兰语 爱沙尼亚语 瑞典语 白俄罗斯语 立陶宛语 索马里语 约鲁巴语 缅甸语 罗马尼亚语 老挝语 芬兰语 苗语 英语 荷兰语 菲律宾语 葡萄牙语 蒙古语 西班牙语 豪萨语 越南语 阿塞拜疆语 阿尔巴尼亚语 阿拉伯语 韩语 马其顿语 马尔加什语 马拉地语 马拉雅拉姆语 马来语 马耳他语 高棉语 齐切瓦语 |
世界语 中文简体 中文繁体 丹麦语 乌克兰语 乌兹别克语 乌尔都语 亚美尼亚语 伊博语 俄语 保加利亚语 僧伽罗语 克罗地亚语 冰岛语 加利西亚语 加泰罗尼亚语 匈牙利语 南非祖鲁语 卡纳达语 印地语 印尼巽他语 印尼爪哇语 印尼语 古吉拉特语 哈萨克语 土耳其语 塔吉克语 塞尔维亚语 塞索托语 威尔士语 孟加拉语 宿务语 尼泊尔语 巴斯克语 布尔语(南非荷兰语) 希伯来语 希腊语 德语 意大利语 意第绪语 拉丁语 拉脱维亚语 挪威语 捷克语 斯洛伐克语 斯洛文尼亚语 斯瓦希里语 旁遮普语 日语 格鲁吉亚语 毛利语 法语 波兰语 波斯尼亚语 波斯语 泰卢固语 泰米尔语 泰语 海地克里奥尔语 爱尔兰语 爱沙尼亚语 瑞典语 白俄罗斯语 立陶宛语 索马里语 约鲁巴语 缅甸语 罗马尼亚语 老挝语 芬兰语 苗语 英语 荷兰语 菲律宾语 葡萄牙语 蒙古语 西班牙语 豪萨语 越南语 阿塞拜疆语 阿尔巴尼亚语 阿拉伯语 韩语 马其顿语 马尔加什语 马拉地语 马拉雅拉姆语 马来语 马耳他语 高棉语 齐切瓦语 |
java基础8 构造函数和构造代码块的更多相关文章
- 黑马程序员——JAVA基础之构造函数,构造代码块
------- android培训.java培训.期待与您交流! ---------- 构造函数特点: 1. 函数名与类名相同 2. 不用定义返回值类型 3. 不可以写return语句 构造函数 ...
- java基础-静态,非静态(构造)代码块,类加载
static block and non-static block(constructor block) [toc] 想来想去,先来一题比较好 public class Foo { public st ...
- java面向对象(二)构造函数和构造代码块
面向对象 类成员 1.成员变量 属性 数值类型的基本数据类型默认值是 0 成员变量在任何方法中都能访问,和声明先后没有关系 2.成员函数 方法 3.定义方式 class 类名{成员变量:成员函数} / ...
- Java 基础 面向对象之关键字内部类代码块修饰符
final final概念 继承的出现提高了代码的复用性,并方便开发.但随之也有问题,有些类在描述完之后,不想被继承,或者有些类中的部分方法功能是固定的,不想让子类重写.可是当子类继承了这些特殊类之后 ...
- 【Java基础】继承中的代码块和构造方法的执行顺序探索
本文讲述有关一个类的静态代码块,构造代码块,构造方法的执行流程问题.首先来看一个例子 /** * Created by lili on 15/10/19. */ class Person{ stati ...
- java基础-表达式,语句和代码块
浏览以下内容前,请点击并阅读 声明 表达式 表达式由变量,操作符和方法调用组成,表达式的返回值类型由表达式中的元素(如操作符,变量等)决定如: cadence = 0 上述代码将返回一个int类型的值 ...
- 5.1JAVA基础复习——JAVA中的静态代码块、构造代码块、构造函数、局部代码块区别
构造代码块: 在类中定义可以给所有对象进行初始化.局部代码块: 在方法中定义属性的生命周期.静态代码块: 在类中定义用于给类调用时属性的初始化 构造函数与构造代码块的区别: 构造函数是给对应的对象进行 ...
- 关于java构造函数,静态代码块,构造代码块,和普通代码块相关总结(一)
构造函数.构造代码块和静态代码块容易混淆,它们的执行条件和执行顺序也常常容易犯迷.这里就针对这些问题说一下我个人的一些理解,顺便对这部分内容做个小结. 一.构造函数 格式:类名(参数1,参数2,-){ ...
- Java类中代码的执行顺序 静态代码块>构造代码块>构造方法
一:静态代码块 注意是代码块,不是静态函数.函数要调用才执行,代码块加载就执行,一般是静态变量的声明与初始化.被static修饰的代码块(赋值.输出操作等).类中静态语句块仅在类加载时被执行一次 如 ...
随机推荐
- Django新手图文教程-转发
转发自:http://www.cnblogs.com/Leo_wl/p/5824541.html 一.Django简介 百度百科:开放源代码的Web应用框架,由Python语言编写...... 重点: ...
- Zookeeper(三) Zookeeper原理与应用
一.zookeeper原理解析 1.进群角色描述 2.Paxos 算法概述( ZAB 协议) 分布式一致性算法 3.Zookeeper 的选主(恢复模式) 以一个简单的例子来说明整个选举的过程. ...
- 【codechef】Children Trips
Portal -->CC_Children Trips Solution (英文题解看得真爽qwq不过写的好详细啊ovo) 首先这题有一个很重要的条件就是边权是\(1\)或者\(2\),所以虽然 ...
- python基础----函数的定义和调用、return语句、变量作用域、传参、函数嵌套、函数对象、闭包、递归函数
1.函数的定义: 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也可 ...
- Spring MVC @CookieValue注解
@CookieValue的作用 用来获取Cookie中的值 @CookieValue参数 1.value:参数名称 2.required:是否必须 3.defaultValue:默认值 @Cookie ...
- 形态学及其他集合运算(Morphological and Other Set Operations)
摘 要:本实验主要实现形态学图像处理.主要验证图像集合的交并补运算.膨胀和腐蚀处理并利用图像集合的运算,实现形态学边界抽取算法并进行特征边界抽取.同时将膨胀和腐蚀扩展至灰度图像,编写函数实现灰度 ...
- STL源码分析-deque
http://note.youdao.com/noteshare?id=66f21dca07c1984f41848700021644fd
- 4.UiCollection API 详细介绍
一.UiCollection类介绍 UiCollection类两大功能:从集合中查找对象:获取某种搜索条件组件的数量 1.UiCollection类说明 1)UiCollection是UiObject ...
- 微信小程序,页面分享
onShareAppMessage: function () { return { title: '微信小程序联盟', desc: '最具人气的小程序开发联盟!', path: '/page/user ...
- 图论&数学:拉姆齐(Ramsey)定理
拉姆齐(Ramsey)定理是要解决以下的问题:要找这样一个最小的数n,使得n个人中必定有k个人相识或l个人互不相识 我们所知道的结论是这样的 6 个人中至少存在3人相互认识或者相互不认识. 该定理等价 ...