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修饰的代码块(赋值.输出操作等).类中静态语句块仅在类加载时被执行一次 如 ...
随机推荐
- 【MediaElement】WPF视频播放器【3】
一.前言 对于<MediaElement>前两章介绍了差不多了,其实好的界面还需要UI工程师的配合,比如帮忙设计下按钮的样式等等.同样视频本身也需要吸引人,不然做的再好的播放器也没用.之后 ...
- 【BZOJ4596】黑暗前的幻想乡(矩阵树定理,容斥)
[BZOJ4596]黑暗前的幻想乡(矩阵树定理,容斥) 题面 BZOJ 有\(n\)个点,要求连出一棵生成树, 指定了一些边可以染成某种颜色,一共\(n-1\)种颜色, 求所有颜色都出现过的生成树方案 ...
- Git 自动补全
如果你用的是 Bash shell,可以试试看 Git 提供的自动补全脚本. http://git-scm.com/download 下载 Git 的源代码,进入contrib/completion ...
- ASCLL表
ASCII码表完整版 ASCII值 控制字符 ASCII值 控制字符 ASCII值 控制字符 ASCII值 控制字符 0 NUT 32 (space) 64 @ 96 . 1 SOH 33 ! 65 ...
- HDU--2962
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2962 分析:最短路+二分. #include<iostream> #include< ...
- count distinct
SELECT COUNT(DISTINCT Customer) AS NumberOfCustomers FROM Orders
- JAVA Remote Object
RMI(Remote Method Invocation)远程方法调用是一种计算机之间利用远程对象相互调用实现双方通讯的一种通讯机制.使用这种机制,某一台计算机上的对象可以调用另一台计算机上的对象来获 ...
- OpenCV---模糊操作
推文:图像平滑处理(归一化块滤波.高斯滤波.中值滤波.双边滤波) 推文:图像的平滑与滤波 模糊操作 三种模糊操作方式 均值模糊 中值模糊 自定义模糊(可以实现上面两种模糊方式) 原理: 图像处理:基础 ...
- [LeetCode] Gas Station,转化为求最大序列的解法,和更简单简单的Jump解法。
LeetCode上 Gas Station是比较经典的一题,它的魅力在于算法足够优秀的情况下,代码可以简化到非常简洁的程度. 原题如下 Gas Station There are N gas stat ...
- mysql \G
mysql 命令区分大小写.ego (\G) Send command to mysql server, display result vertically. go (\g) ...