首页 > 编程语言 >Java--实例化

Java--实例化

时间:2024-08-10 15:17:59浏览次数:14  
标签:调用 Java 构造方法 -- 构造 实例 Student println public

目录

五种方法

无论哪一种方式必须经过的一步---调用构造方法。无论怎样构造函数作为初始化类的意义怎样都不会改变。

  • new语句创建对象,最常用创建对象的方法

  • 工厂方法返回对象,如:String str = String.valueOf();

  • 反射,调用java.lang.Calss或者java.lang.reflect.Constructor类的newInstance()的实例方法如:Objectobj=Class.forName("java.lang.Object").newInstance();

  • 调用对象的clone()方法。

  • 通过I/O流(包括反序列化),如运用反序列化手段,调用java.io.ObjectInputStream对象的 readObject()方法

构造器

定义

构造方法又叫做构造器与构造函数,(我们在idea中通常可以用快捷键Alt+Insert选择Constructor)

特点

构造方法与类名相同,没有返回值,连void都不能写

可以重载

如果一个类中没有构造方法,那么编译器会为类加上一个默认的构造方法 public 类名(){ }

如果手动添加了构造器,那么默认构造器就会消失

作用

构造方法在创建对象时调用,具体调用哪一个由参数决定。

构造方法的作用是为正在创建的对象的成员变量赋初值。

public class Test {

public static void main(String[] args) {
    
    //调用无参构造器
    Student s1 = new Student();
    //调用有参构造器
    Student s2 = new Student(15);
    System.out.println(s2.age);
    Student s3 = new Student(34, "小明");
    System.out.println(s3.name + ":" + s3.age);
  }
}
构造方法种this的使用

构造方法种可以使用this,表示刚刚创建的对象

构造方法种this可用于

  this访问对象属性

  this访问实例方法

  this在构造方法中调用重载的其他构造方法(要避免陷入死循环)

    只能位于第一行

    不会触发新对象的创建

public class Student {

public String name;
public int age;

public void eat() {
    System.out.println("eat....");
}
//构造器
//使用this()调用重载构造器不能同时相互调用,避免陷入死循环
public Student() {
    //this()必须出现在构造器的第一行,不会创建新的对象
    this(15);//调用了具有int类型参数的构造器
    System.out.println("默认构造器");
}
public Student(int a) {
    this.eat();
    eat();//this.可以省略
}
//this在构造器中表示刚刚创建的对象
public Student(int a, String s) {
    System.out.println("两个参数的构造器");
    this.age = a;
    this.name = s;
   }
}
public class Test {

    public static void main(String[] args) {
        Student s1 = new Student(15, "小明");
        System.out.println(s1.name + ":" + s1.age);
        Student s2 = new Student(12, "小红");
        System.out.println(s2.name + ":" + s2.age);
        
        Student s3 = new Student();
    }
}

标签:调用,Java,构造方法,--,构造,实例,Student,println,public
From: https://www.cnblogs.com/yangcurry/p/18352304

相关文章

  • 树的DFS序
    前置芝士:时间戳在树的优先深度遍历中,以每个节点第一次被访问的顺序,依次给予这\(N\)个节点\(1~n\)的整数标记该标记被称为时间戳。通常用\(dfn[x]\)表示\(x\)节点上的时间戳。树的DFS序定义:在树的深度优先遍历中,对于每个节点进入递归后以及即将回溯前各记录一次该......
  • 没有Rfkill情况设置Wifi启用
    网络镜像安装系统时CTRL+ALT+F3切换到命令行模式.echo"1">/sys/class/Rfkill/rfkill0/state进行启用该设备。echo1>会出错。state是状态,type会显示是wifi还是bluetooth,一般wifi有两个设备,一个是物理设备另一个是虚拟软件设备。只有上面完成了才能通过iplinksetdevi......
  • 阿斯蒂芬小技巧——枚举子集时间复杂度证明
    在写状压dp时,经常会见到如下句子:for(inti=0;i<(1<<n);i++){ for(intj=i;j!=0;j=(j-1)&i){ }}时间复杂度证明如下:单个\(x\)枚举子集复杂度易证(设\(y=log_2(x)\)):\[∑_{i=0}^{y}C^i_y\]使用二项式定理:\[(a+1)^n=∑_{i=0}^{n}C_n^i~a^i\]将上面的\(a\)......
  • Java SpringBoot实现PDF转图片
    不是单页图片,是多页PDF转成一张图片的逻辑。我这里的场景是PDF转成图片之后返回给前端,前端再在图片上实现签字,并且可拖拽的逻辑,就是签订合同的场景。但是这里只写后端多页PDF转图片的逻辑。先说逻辑,后面直接上代码,大致分为以下几步:读取PDF文件(我的代码里是将在线的URL转成Inp......
  • Convert类型转换
     staticvoidMain(string[]args){//Convert转换:不同数据类型之间的转换;//大前提:面儿上一定要过得去Console.WriteLine("请输入你的姓名:");stringstrName=Console.ReadLine();C......
  • python程序代码这样加密保护,你觉得可以吗?
    python程序代码很容易反编译,下面我体验了pyhton代码保护的好方法,方案支持windows与Linux系统,下面以linux系统为例进行加密演示。下载最新Linux平台开发工具包 http://chinadlp.com/?list-DriveDownload.html拷贝到有桌面的Ubuntu系统中解压:tar-xzfSentinel-LDK.tar.gz ......
  • 那年追过的开发者测试工具
    交付进度紧张,为什么还要花费精力写单元测试代码,如下是之前的笔记。写单元测试代码有什么好处为什么程序员讨厌写单元测试代码工欲善其事,必先利其器。使用Java语言交付项目时,需要掌握单元测试框架和Mock工具的使用。如下是当年交付项目过程中,使用过的测试框架和工具,可供参考......
  • 为了落地DDD,我是这样“PUA”大家的
    本文书接上回《先有鸡还是先有蛋?这是领域驱动设计落地最大的困局》https://mp.weixin.qq.com/s/lzAZXgchCg_VyLmyo2N18Q 故事背景2023年,我加入了一个全新的团队,担任技术Leader的角色,可以算做是“空降”吧,至今已经一年有余的时间了。到目前为止,团队已经完成了领域驱动设计实......
  • 详解linux后台、前台运行进程
    程序运行可以有2种前台运行程序运行在当前的终端,所有的信息都输出到屏幕上,占用你的终端,你也无法继续使用如果终端异常关闭,导致程序会自动退出后台运行不会占用你的终端,程序在系统后台跑着,你该干啥干啥,终端关了,程序也继续运行。后台运行命令命令集合command&#未启动......
  • 在 ThinkPHP 6 控制器中使用文件锁机制
    创建锁管理类首先,创建一个锁管理类来处理文件锁:namespaceapp\common\service;useException;classLockManager{private$lockFilePath;private$lockFile;publicfunction__construct($lockFilePath){$this->lockFilePath=$lockFileP......