Java:类的构造函数
类的构造函数
- 类的构造函数特点:
1. 构造函数也称为构造方法,构造函数名和类名相同。
2. 构造函数不能有返回值,也不能用void声明。
- 构造函数的返回值问题:
/**
@author zst
@version 1.0 */
public class A{
/*
下面三个函数的函数名都和类名相同,但都不是构造函数
三个函数都满足重载的特点,所以可以同时存在同一个类中
*/ //不是构造函数,
public void A(){
System.out.println("调用了返回值为void,函数名为A的函数");
} //不是构造函数
public int A(int i){
System.out.println("调用了返回值为int,函数名为A的函数");
return i;
} //不是构造函数
public String A(String s){
System.out.println("调用了返回值为String,函数名为A的函数");
return s;
} }/**
@author zst
@version 1.0 */
public class ConstructorTest{
public static void main(String[] args){ A aa = new A(); //这里调用的构造方法是系统默认的为空的构造方法 aa.A();
aa.A(0);
aa.A("hello"); } }
/*
输出:
调用了返回值为void,函数名为A的函数
调用了返回值为int,函数名为A的函数
调用了返回值为String,函数名为A的函数
*/
- 构造函数调用
/**
@author zst
@version 1.0 */
public class A{
public A(){
System.out.println("调用了无参构造函数创建对象"); } public A(int i)
{
System.out.println("调用了一个参数的构造函数创建对象"); } public A(int i,int j)
{
System.out.println("调用了两个参数的构造函数创建对象");
} }
/**
@author zst
@version 1.0 */
public class ConstructorTest02{
public static void main(String[] args){ A aa1 = new A(); A aa2 = new A(0); A aa3 = new A(1,2); } }
/*
输出:
调用了无参构造函数创建对象
调用了一个参数的构造函数创建对象
调用了两个参数的构造函数创建对象
*/
- 在创建对象时,数据成员的初始化赋值问题
| 数据成员类型 | 默认初始化 |
| byte | 0 |
| short | 0 |
| int | 0 |
| long | 0L |
| float | 0.0F |
| double | 0.0D |
| char | '\u0000' (表示为空) |
| boolean | false |
| 引用类型 | null |
/**
@author zst
@version 1.0 */
public class A{
//没有初始化的数据成员
private int i;
private String s;
private double d; //初始化的数据成员
private float f = 11.1f;
private boolean b = false; //无参构造函数
public A(){ } public void f(){ System.out.println("没有初始化的数据成员,系统赋予默认值");
System.out.println(i);
System.out.println(s);
System.out.println(d); } public void g(){
System.out.println("初始化的数据成员,初始化的值是有效的");
System.out.println(f);
System.out.println(b); } //有参构造函数,修改初始化时的值,数据成员最终的值是修改后的值
public A(float f,boolean b)
{
f = f;
b = b; System.out.println("在构造函数中修改数据成员的初始化值,数据成员最终的值为修改后的值");
System.out.println(f);
System.out.println(b);
} }
/**
@author zst
@version 1.0 */
public class ConstructorTest03{
public static void main(String[] args){ A aa1 = new A();
aa1.f();
aa1.g(); A aa2 = new A(99.9f,true); } }
/*
输出:
没有初始化的数据成员,系统赋予默认值
0
null
0.0
初始化的数据成员,初始化的值是有效的
11.1
false
在构造函数中修改数据成员的初始化值,数据成员最终的值为修改后的值
99.9
true
*/
/**
@author zst
@version 1.0 */
public class A{
//没有初始化的数据成员
private int i;
private String s;
private double d; //无参构造函数
public A(){ } public void f(){ System.out.println("没有初始化的数据成员,系统赋予默认值,可以直接使用");
System.out.println(i);
System.out.println(s);
System.out.println(d); } public void g()
{
int i = 100; //局部变量:在使用之前必须要初始化,否则编译出错
System.out.println("局部变量使用之前必须要初始化 " + i);
} }
/**
@author zst
@version 1.0 */
public class ConstructorTest04{
public static void main(String[] args){ A aa1 = new A();
aa1.f();
aa1.g(); } }
/*
输出:
没有初始化的数据成员,系统赋予默认值,可以直接使用
0
null
0.0
局部变量使用之前必须要初始化 100 */
Java:类的构造函数的更多相关文章
- Java 类的实例变量初始化的过程 静态块、非静态块、构造函数的加载顺序
先看一道Java面试题: public class Baset { private String baseName = "base"; // 构造方法 public Baset() ...
- Java提高篇——静态代码块、构造代码块、构造函数以及Java类初始化顺序
静态代码块:用staitc声明,jvm加载类时执行,仅执行一次构造代码块:类中直接用{}定义,每一次创建对象时执行.执行顺序优先级:静态块,main(),构造块,构造方法. 构造函数 public H ...
- [改善Java代码]建议40:匿名类的构造函数很特殊
建议40: 匿名类的构造函数很特殊 在上一个建议中我们讲到匿名类虽然没有名字,但可以有一个初始化块来充当构造函数,那这个构造函数是否就和普通的构造函数完全一样呢?我们来看一个例子,设计一个计算器,进行 ...
- [改善Java代码]使用匿名类的构造函数
建议39: 使用匿名类的构造函数 阅读如下代码,看看是否可以编译: public class Client { public static void main(String[] args) { Lis ...
- java类的结构(属性、方法、构造函数)
一.类的定义形式类定义的一般形式如下 [类定义修饰符] class <类名> { //类体 [成员变量声明] [构造函数] [成员方法] } 前面说过,在描述java语法时,方括号中 ...
- java类定义、变量类型、构造函数
1.java类class的定义 所有java程序都以类class为组织单元,java类由属性和方法组成,下面看例子: public class Phone{ //属性 String company ...
- java基础42 File类的构造函数及其方法
本文知识点(目录): 1.IO流(Input Output) 2.IO流技术的运用场景 3.File类的构造函数(方法) 4.File类的一些常用方法 5.实例(解析File类 ...
- java类的初始化和构造函数
本人小白一枚,看java类的初始化的时候好晕的说,我觉着书上尽管说的对.但总认为有些信息没说出来,没说清楚,看了好多文章博客的,如今有些感悟,来小写下总结,也算是为以后再次复习种个好果子. 先摘一下书 ...
- java类中,成员变量赋值第一个进行,其次是静态构造函数,再次是构造函数
如题是结论,如果有人问你Java类的成员初始化顺序和初始化块知识就这样回答他.下面是代码: package com.test; public class TestClass{ // 成员变量赋值第一个 ...
随机推荐
- 24. Swap Nodes in Pairs 链表每2个点翻转一次
[抄题]: Given a linked list, swap every two adjacent nodes and return its head. Example: Given 1->2 ...
- ubuntu中的环境变量
写这句话,给自己提个醒吧,添加路径(所谓的环境变量):系统会去相应的目录中找可执行文件,到时候只要输入命令名字,可以不用输入完整的路径
- Nodejs初识随笔
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境. Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又高效. Node.js 单线程运行,不 ...
- 在桌面创建robotframework Ride的快捷方式启动RIDE
安装后robotframework-ride 后,每次启动时都要在Dos命令下启动 ,下面是创建快捷方式启动操作如下: 1.进入到python的安装目录的/Scripts目录下,找到ride.py文件 ...
- Verilog HDL小练习
5s内15Hz4个LED闪烁,再两秒熄灭,循环往复. 引入en,可以使得4个LED灯全亮,以及恢复周期变化. module led(clk_27MHZ, en, led1, led2, led3, l ...
- Spring MVC 的国际化和本地化
国际化: i18n 本地化: l10n java.util.Locale 类表示一个语言区域.一个 Locale 对象包含 3 个主要元件:language.country.variant java. ...
- python 根据字符串内数字排序
当我们使用python给一个由字符串组成的列表排序时,常常会排成这样 [‘10a’, ‘11b’, ‘1c’, ‘20d’, ‘21e’, ‘2f’] 这样的形式 ,然而我们想要 [ ‘1c’,‘2f ...
- Html5学习笔记:图片上传
图片上传是业务需求中常见的功能,最基础的是单图片的上传.比较复杂的多图片上传,都是基于单图片上传. Form表单上传 h5的原生表单上传图片,代码如下: <!DOCTYPE html> & ...
- 你会跟谁结婚zz
正文 咱们日课去年有篇文章叫<你会跟谁结婚?>,提到经济学家的数据显示,现在美国的婚姻中“强强联合”的现象越来越严重,高收入者和高收入者结婚,高学历者和高学历者结婚. 经济学家很无奈,我们 ...
- ABP框架系列之二十:(Dependency-Injection-依赖注入)
What is Dependency Injection If you already know Dependency Injection concept, Constructor and Prope ...