java构造方法,对象的创建过程,数据类型的引用

简介: java构造方法,对象的创建过程,数据类型的引用

什么是构造方法

一个特殊的方法

语法:

public 类名(){ }

定义在类的内部,其他方法外部。用来创建对象给属性赋值

构造方法的特点:

构造方法没有 返回值类型(连void都没有)


方法名必须和类名相同(一个类中要想用多个构造方法只能用重载)


构造方法不允许手工调用,在对象构造过程中(通过 new 关键字创建对象时)自动调用1次;(好比人类中的剪脐带,只在出生的时候剪一次)


构造方法可以重载


当没有手动添加构造方法时,系统会默认添加无参构造


当添加有参构造方法时,将不再自动添加无参构造


作用:给实例中的对象赋值;

在现实生活中,很多事物一出现,就天生具有某些属性和行为。比如人一出生,就有年龄、身高、体重、就会哭;汽车一出产,就有颜色、有外观、可以运行等。这些,我们就可以将这些天然的属性和行为定义在构造函数中,当new实例化对象时,也就具有这些属性和方法了,没必要再去重新定义了,从而加快了编程效率。

构造方法的示例程序:

class Dog{
  //定义类的属性;
  String name;
  int age;
  double score;
  boolean sexual;
//构建无参构造函数
  public Dog(){}
  //构建有参构造函数
  public Dog(String n,int a,double s,boolean sex){
    name = n;
    age =a;
    score =s;
    sexual=sex;
  }
  //定义一个带一个参数的方法
  public void play(String n){
    System.out.println(name+"play");
  }
  //定义一个带三个参数的方法
  public void play(String n,int a,boolean sex){
    System.out.println("叫"+n+"的,"+a+"岁了;是"+(sex ? "公":"母")+"的;");
}
}
public class TestClass{
  public static void main(String[] args) {
    //对方法的声明,并赋值;
    Dog d= new Dog("小黄",3,58.0,true);
    //调用构造方法;
    //d.play();
    d.play("小黑",10,true);
  }
}

对象的创建语法:

`类名 对象名 = new 类名();`

对象的创建过程:

  1. 分配空间 所有的实例变量被赋予默认值;
  2. 初始化属性 所有的实例变量被赋予初始值,第二次为属性赋值的机会;
  3. 调用构造方法 实例变量常常被第三次赋值

属性的使用:

为属性赋值:

对象名.属性名 = 字面值;

s.name = “zs”;


取值:


数据类型 变量名 = 对象名.属性名; String name = s.name;

System.out.println(对象名.属性名);


方法的使用:

对象名.方法名(实参);

数据类型的引用:

变量按照类型划分

  • 8种简单数据类型:简单变量; 存值;
  • 对象变量(引用): 存对象的地址;

Java中参数 的传递规则:

  • 简单类型的参数 传值
  • 对象类型的参数 传地址 传引用 实参和形参指向同一对象

什么是引用?

对象类型的变量称之为引用

类名 引用名 = new 构造方法名(实参);

注意:引用数据类 必须 和 对象类型保持一致

引用的特点:

1,引用中存储的是对象在堆空间中的首地址

2,对象在堆空间中是相互独立的

3,引用的声明 Student s;

4,引用之间相互赋值,赋的是首地址

5,如果引用中存储的是null,使用引用会运行报错 空指针异常:java.lang.NullPointerException

6,引用的应用: 应用于参数、返回值、数组


目录
相关文章
|
23天前
|
安全 Java 编译器
Java对象一定分配在堆上吗?
本文探讨了Java对象的内存分配问题,重点介绍了JVM的逃逸分析技术及其优化策略。逃逸分析能判断对象是否会在作用域外被访问,从而决定对象是否需要分配到堆上。文章详细讲解了栈上分配、标量替换和同步消除三种优化策略,并通过示例代码说明了这些技术的应用场景。
Java对象一定分配在堆上吗?
|
15天前
|
存储 缓存 Java
大厂面试必看!Java基本数据类型和包装类的那些坑
本文介绍了Java中的基本数据类型和包装类,包括整数类型、浮点数类型、字符类型和布尔类型。详细讲解了每种类型的特性和应用场景,并探讨了包装类的引入原因、装箱与拆箱机制以及缓存机制。最后总结了面试中常见的相关考点,帮助读者更好地理解和应对面试中的问题。
39 4
|
13天前
|
存储 消息中间件 NoSQL
使用Java操作Redis数据类型的详解指南
通过使用Jedis库,可以在Java中方便地操作Redis的各种数据类型。本文详细介绍了字符串、哈希、列表、集合和有序集合的基本操作及其对应的Java实现。这些示例展示了如何使用Java与Redis进行交互,为开发高效的Redis客户端应用程序提供了基础。希望本文的指南能帮助您更好地理解和使用Redis,提升应用程序的性能和可靠性。
30 1
|
26天前
|
Java API
Java 对象释放与 finalize 方法
关于 Java 对象释放的疑惑解答,以及 finalize 方法的相关知识。
45 17
|
19天前
|
Java 程序员 数据库连接
Java执行顺序大揭秘:静态块、非静态块和构造方法谁先谁后?
本文详细介绍了Java中的初始化块,包括静态初始化块和非静态初始化块的概念、执行顺序和实际应用场景。通过具体示例,帮助读者理解这两种初始化块的区别和使用场景,让面试官对你刮目相看。
26 0
Java执行顺序大揭秘:静态块、非静态块和构造方法谁先谁后?
|
26天前
|
存储 安全 Java
Java编程中的对象序列化与反序列化
【10月更文挑战第22天】在Java的世界里,对象序列化和反序列化是数据持久化和网络传输的关键技术。本文将带你了解如何在Java中实现对象的序列化与反序列化,并探讨其背后的原理。通过实际代码示例,我们将一步步展示如何将复杂数据结构转换为字节流,以及如何将这些字节流还原为Java对象。文章还将讨论在使用序列化时应注意的安全性问题,以确保你的应用程序既高效又安全。
|
28天前
|
存储 Java 关系型数据库
[Java]“不同族”基本数据类型间只能“强转”吗?
本文探讨了不同位二进制表示范围的计算方法,重点分析了Java中int和char类型之间的转换规则,以及float与int类型之间的转换特性。通过具体示例说明了显式和隐式转换的条件和限制。
35 0
[Java]“不同族”基本数据类型间只能“强转”吗?
|
1月前
|
存储 Java 数据管理
Java零基础-Java对象详解
【10月更文挑战第7天】Java零基础教学篇,手把手实践教学!
29 6
|
1月前
|
Oracle Java 关系型数据库
重新定义 Java 对象相等性
本文探讨了Java中的对象相等性问题,包括自反性、对称性、传递性和一致性等原则,并通过LaptopCharger类的例子展示了引用相等与内容相等的区别。文章还介绍了如何通过重写`equals`方法和使用`Comparator`接口来实现更复杂的相等度量,以满足特定的业务需求。
24 3
|
1月前
|
设计模式 Java 测试技术
Java零基础-构造方法详解
【10月更文挑战第5天】Java零基础教学篇,手把手实践教学!
22 1