-Java基础-构造器

1.构造器

构造器就是类创建对象的初始化方法。它的名字与类名相同。 假设没有写有构造器的情况下,虚拟机会自动加上一个没有参数的构造器,如果【学Java,到凯哥学堂kaige123.com】写有构造器,那么虚拟机就不会在加上构造器了。

public class Test1 { public Test1() {
		System.out.println("我是构造器!");
	}
}

2.构造器重载

构造器就是一个方法,所以它和普通的方法一样也可以做方法重载,换句话说就是构造器的重载。 和方法重载一样构造器重载就是多个一样名字参数类型和参数的个数不同的多个构造器。

public class Test1 { public Test1() {
		System.out.println("先脱去衣服");
	} public Test1(String name) {
	} public Test1(int name) {
	}
}

2.实例块 实例块就是一个划分的代码区域。{ 代码 } 1.它是在构造器之前执行。 2.它和属性初始化一同执行。 3.一个类中可以有很多个实例块。

  1. 执行过程是按照顺序从上到下执行。
public class Test3 {
	{
		System.out.println("我是实例块!");
	}
}

3.this this用3种用法: 1.表示当前的对象。 假设在一个方法中传入的参数名为a1,在实例中也有一个变量叫做a1.如果方法中的参数a1想赋值给类中的a1。则就需要到this关键字。因为java如果遇到同名的变量就会默认用和你最近的参数。

public class Test4 {
	String name; // 重名了 使用的规则是 就近原则 public Test4(String name) { this.name = name;
	}
} 2.当前对象返回 public Test4 getTest4() { return this;
	}

3.构造器转发

注意:静态属性和静态方法参数重名怎么办? 这时就不能用this了。因为this是当前对象。 既然是静态成员那就直接类名点属性名就可以了。 例如:

static String address; static void method(String address) { Test4.address = address;
	}

4.静态块 static{} 是类加载的时候和静态属性一起执行的。也是按顺序从上往下执行。

5.类的加载 1.在声明静态属性但并没有使用属性时,不会对类进行加载。 使用静态属性时才会对类进行加载。 2.声明或使用常量时都不会对类进行加载。 因为常量的内存【学Java,到凯哥学堂kaige123.com】和类成员的内存不在同一内存内。 3.使用静态方法或new肯定会加载类。 4.//加载类 class.forName( 包名.类名 )

怪题:

main方法中,new Test1();,然而Test1类中又new Test1,因为new对象的时候肯定会加载类,然而加载类其实就是加载静态属性,所以这就成了死循环。报出方法嵌套调用溢出的错误。 java.lang.StackOverflowError

时间: 2024-10-07 03:17:29

-Java基础-构造器的相关文章

Java基础03 构造器与方法重载(转载)

显式初始化要求我们在写程序时就确定初始值,这有时很不方便.我们可以使用构造器(constructor)来初始化对象.构造器可以初始化数据成员,还可以规定特定的操作.这些操作会在创建对象时自动执行. 定义构造器 构造器(constructor)是一个方法.像普通方法一样,我们在类中定义构造器.构造器有如下基本特征: 构造器的名字和类的名字相同 构造器没有返回值 我们定义Human类的构造器: public class Test{    public static void main(String[

java基础之构造器以及static关键字

在java中,构造器是个很重要的东西,在每次调用类的时候我们都会用到构造器,比如说,请注意,new Car()..它就使用了构造器,当我们将这个对象实例化的时候jvm会自动调用其构造方法.(对象的实例化就是指创建一个对象 比如 Car c = new Car() 这就是实例化对象) 然后,我在简单的解释下构造器....构造器我们可以理解成它就是一个方法,用来初始化类中数据....至于为什么要使用构造器,还有构造器的用处我会在下文中说 首先,每当我们抽象完一个类后,这个类会自动生成一个(隐式)默认

【代码笔记】Java基础:类的继承(构造器)

在Java中,创建对象的格式为: 类名 对象名 = new 类名(): 如: 1 JFrame jf = new JFrame(); 一个对象被创建出来时,经常要先做一些事这个对象才能正常使用,也可以说是准备工作,比如给这个对象赋些初始值,或者先运行一些别的方法.这时候就需要一个“构造器”用于: 构造对象 初始化属性这样,把那些在创建时要做的事写在构造方法里,每次创建就会被执行一遍. 我们常见的一种Java格式: public 返回类型 方法名(参数){ } 如: 1 public void s

java 基础(二)

java 基础(二)java 基础(二) 2016-2-1 by Damon 61. 编写多线程程序有几种实现方式 Java 5以前实现多线程有两种实现方法:一种是继承Thread类:另一种是实现Runnable接口.两种方式都要通过重写run()方法来定义线程的行为,推荐使用后者,因为Java中的继承是单继承,一个类有一个父类,如果继承了Thread类就无法再继承其他类了,显然使用Runnable接口更为灵活. 补充:Java 5以后创建线程还有第三种方式:实现Callable接口,该接口中的

1.28 Java基础总结 ①方法重载②构造方法

1.28 Java基础总结 ①方法重载②构造方法 一.方法的重载在同一个类中,方法名相同,形参列表不同访问修饰符.返回类型和是否重载无关:按顺序对应的形参列表类型不同即可 二.构造器在类创建一个实例时被调用,构造方法只能用new关键字调用目的:初始化实例,初始化类属性(0,0.0,null,false)无返回值,和类名一致,用来构造对象作用:为对象分配内存, 创建并初始化成员变量(通过类创建,所以可以在static方法中调用构造方法) 返回引用,引用.属性:引用.方法(所以无返回值) 三.构造方

java基础问题总结

1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节.抽象包括两个方面,一是过程抽象,二是数据抽象. 2.继承: 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法.对象的一个新类可以从现有的类中派生,这个过程称为类继承.新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类).派生类可以从它的基类那里继承方法和实例变量,并

Java基础知识:Java知识简介

一.java基础语法: 一个Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作.下面简要介绍下类.对象.方法和实例变量的概念. 对象:对象是类的一个实例,有状态和行为.例如,一条狗是一个对象,它的状态有:颜色.名字.品种:行为有:摇尾巴.叫.吃等: 类:类是一个模板,它描述一类对象的行为和状态. 方法:方法就是行为,一个类可以有很多方法.逻辑运算.数据修改以及所有动作都是在方法中完成的. 实例变量:每个对象都有独特的实例变量,对象的状态由这些实例变量的值决定. 编写J

【Java基础】序列化与反序列化深入分析

一.前言 复习Java基础知识点的序列化与反序列化过程,整理了如下学习笔记. 二.为什么需要序列化与反序列化 程序运行时,只要需要,对象可以一直存在,并且我们可以随时访问对象的一些状态信息,如果程序终止,那么对象是肯定不会存在的,但是有时候,我们需要再程序终止时保存对象的状态信息,之后程序再次运行时可以重新恢复到之前的状态,如,玩家玩游戏退出时,需要保存玩家的状态信息(如等级.装备等等),之后玩家再此登入时,必须要恢复这些状态信息.我们可以通过数据库手段来达到这个保存状态的目的,在Java中,我

Java基础串理

今天抽了些时间翻阅资料复习一下Java部分基础知识,现整理笔记在此以备巩固. Java主要应用领域 –企业级应用:主要指复杂的大企业的软件系统.各种类型的网站.Java的安全机制以及它的跨平台的优势,使它在分布式系统领域开发中有广泛应用.应用领域包括金融.电信.交通.电子商务等. –Android平台应用:Android应用程序使用Java语言编写.Android开发水平的高低很大程度上取决于Java语言核心能力是否扎实. –移动领域应用,主要表现在消费和嵌入式领域,是指在各种小型设备上的应用,