Java中的初始化与清理

本文详细介绍了Java中的构造器使用,包括无参构造器、带参数构造器,以及重载的概念。还讨论了this关键字在方法内部的作用,静态方法的特点,以及变量和数组的初始化方法。此外,文章还提到了Java编程中的一些面试题和学习资源。
摘要由CSDN通过智能技术生成

public class Thinking_test {

public static void main(String []args){

for(int i=0;i<5;i++){

new Test();

}

}

}

Output:

初始化…

初始化…

初始化…

初始化…

初始化…

每当我们创建对象(new Test();)时,将会为对象分配存储空间,并调用相应的构造器,这样就保证了在操作对象之前,对象已经被初始化了。

不接受任何参数的构造器叫做默认构造器(无参构造器),当编写一个类时,如果你的类中没有构造器,那么编译器会自动帮你创建一个这样类型的构造器。同样构造器也是可以带有参数的,在构造器中带有参数可以方便我们指定如何创建对象。

例:

class Test{

Test(int i){

System.out.println(“初始化”+i+“…”);

}

}

public class Thinking_test {

public static void main(String []args){

for(int i=0;i<5;i++){

new Test(i);

}

}

}

Output:

初始化0…

初始化1…

初始化2…

初始化3…

初始化4…

值得注意的是,如果Test(int i)是Test类中唯一的构造器,那么编译器将不会允许你以其他任何方式创建Test对象。

重载


在同一个类里可以有多个同名函数,但是每一个同名函数都有着独一无二的参数类型列表,这样我们就可以通过不同的参数组合调用同一个名字的参数,这种形式叫方法重载

class Tree{

int height;

Tree(){

System.out.println(“播种”);

}

Tree(int initHeight){

height=initHeight;

System.out.println(“种植一棵”+initHeight+“米的数”);

}

void info(){

System.out.println(“树的高度是”+height+“米”);

}

void info(String s){

System.out.println(s+“: 树的高度是”+height+“米”);

}

}

public class Thinking_03_test1 {

public static void main(String []args){

Tree t=new Tree(10);

t.info();

t.info(“重载方法”);

new Tree();

}

}

Output:

种植一棵10米的数

树的高度是10米

重载方法: 树的高度是10米

播种

重载之后,如果传入的实参类型并非任意一个重载函数需要的类型,但经过非窄化转换仍能匹配所有的重载函数需要的参数类型,这个参数就会类型提升为更接近它的那一个函数需要的参数类型,参与运算。

this关键字


假设你希望在方法内部获得当前对象的引用,就可以使用this关键字, this关键字只能在方法内部使用,代表当前函数所属对象的一个引用。

3.1 在构造器中调用构造器:

在一个构造器中调用另一个构造器,必须使用this(构造器参数);的形式,一个构造器中只能通过这种方法调用一次别的构造器,且这个调用要放在函数最开始。

注意:除构造器外,编译器禁止其他任何方法中调用构造器

例:

class Flower{

int petalCount =0;

String s =“初始化”;

Flower(){

this(“hi”,47);

System.out.println(“无参构造函数”);

}

Flower(int petals){

petalCount=petals;

System.out.println(“petalCount=”+petalCount);

}

Flower(String ss){

s=ss;

System.out.println(“s=”+s);

}

Flower(String s,int petals){

this(petals);

this.s=s;//this()不能出现两次

System.out.println(“字符串和数字”);

}

void printPetalCount(){

System.out.println(“petalCount=”+petalCount+“,s=”+s);

}

}

public class Thinking_03_test1 {

public static void main(String []args){

Flower x=new Flower();

x.printPetalCount();

}

}

Output:

petalCount=47

字符串和数字

无参构造函数

petalCount=47,s=hi

this还有另一种用法。当参数与数据成员名字相同时,使用(this.名称)表示数据成员。

3.2 static方法:

static方法就是没有this的方法,static 方法不需要实例化,其在JVM刚加载的时候就编译过了。在程序的运行过程中随时可以调用,不需要去实例化某个对象然后再去调用,可以直接用类名去调用,直到结束释放内存,且静态方法内部只能调用类静态变量,不能调用非静态方法,且任意一个对象对静态方法进行修改,其他调用该静态方法也会相应修改

初始化


4.1 成员初始化

Java尽力保证:所有变量在使用前都得到恰当的初始化。对于方法的局部变量,Java以编译时错误的形式来贯彻这种保证。

如:

void test(){

int i;

i++;

}

就会得到一条错误信息(i not initialized),来告诉你i没有初始化。当然对于基本数据类型的数据成员,编译器会为这些成员赋一个默认值。如果我们在定义一个对象的引用时,不将其初始化,此引用就会获得一个特殊值null。

如果我们想为某个变量初始化,可以使用直接提供初值的方式,如:

boolean bool=false;

char ch='x';

int i=100;

double d=3.14;

同样对于类(以Test类为例)可以像下面这样创建一个对象并初始化它:

Test t=new Test();

4.2 数组初始化

数组只是相同类型的,用一个标识符号名称封装到一起的一个对象序列或基本类型序列,数组是通过方括号下标操作符[ ]来定义和使用的。其定义的方法为:int [] al;int al [];

数组的初始化方式主要包括一下几种:

1.静态初始化1:

数据类型 [ ] 数组名称 = {元素1,元素2,元素3…}

2.静态初始化2:

数据类型 [ ] 数组名称 = new 数据类型[ ]{元素1,元素2,元素3…}

3.动态初始化:

数据类型 [ ] 数组名称 = new 数据类型[数组长度]

所有数组都有一个固有成员,可以通过它获知数组中含有多少个元素,这个成员就是length
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后

如果觉得本文对你有帮助的话,不妨给我点个赞,关注一下吧!

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!
a获取)**

img

最后

如果觉得本文对你有帮助的话,不妨给我点个赞,关注一下吧!

[外链图片转存中…(img-FkMOPScY-1711783922000)]

[外链图片转存中…(img-W9Jj03LV-1711783922000)]

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!

  • 26
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值