《java编程思想》---初始化和清理
构造器:
构造器去保证每个对象的初始化,在对象被初始化出来后,构造器自动被调用。
所有的对象都有构造器,如果不显示的创建构造器,系统会自动给你一个无参构造器
ClassName(){};
构造器的创建方法:
1.和类同名.
2.可以有参数
3.没有返回值
重载:
构造器重载应用,应用在对象不同的初始化方式。
重载的方法:
参数列表唯一性,可以改变顺序达到唯一性
this关键字:
代表当前对象的引用
使用方法:
1.非静态方法中使用
2.构造器中使用this
前提是在构造器中使用
在一个构造器中,当你给 this 一个参数列表时,它是另一层意思。它通过最直接的方式显式地调用匹配参数列表的构造器
3.静态方法是为类而创建的,不需要任何对象。事实上,这就是静态方法的主要目的,静态方法看起来就像全局方法一样,但是 Java 中不允许全局方法,一个类中的静态方法可以访问其他静态方法和静态属性
垃圾回收器:
垃圾回收器只知道回收new出来的对象
Finalize()方法,不是一种好方法,少用代价高。可以自己在finalize中写清除方法。
1.垃圾回收不等同于析构
2.对象可能不被垃圾回收
3.垃圾回收只与内存有关
牵扯到了本地调用。C的malloc和free
垃圾回收器通过重新排列对象,使堆内对象更紧凑,一边工作一边回收.实现了一种高速、有无限空间可分配的堆模型.
垃圾回收机制:
1.引用计数:简单但速度很慢。
2.自适应:停止-复制(找到存活对象,停止程序,复制活对象到另一个堆中,没有复制的当做垃圾处理。需要两个堆来回操作,维护开销大,要是没有辣鸡这个方法就不太好,用标记-清扫比较方便)
这块内容到JVM中再深究。
成员初始化:
对一个数据和对象,需要一个初始化值,否则会报错。
基本类型的成员变量会自动有一个初始值.
构造器初始化:
自动初始化,也就是定义基本类型或者new一个对象出来的时候会进行的自动初始化。
自动初始化会在构造器初始化之前
静态数据初始化:
静态不能用在局部变量中使用,只能作用于属性(字段/域)
初始化顺序是先静态后非静态
在加载静态时候,有时会串联起其他类的加载。
例如:
static Bowl bowl5 = new Bowl(5);
会串联起来bowl类的创建。
静态初始化只会在加载class时初始化一次
构造器会在静态初始化后执行
显示的静态初始化:
Static{
语句……
}
只会在类加载的时候执行一次,再次初始化的时候不再执行
非静态实例初始化:
语法:
{
语句….
}
用大括号把实例初始化的内容括起来,会在构造器之前执行。
因为这是非静态,所以保证在每次都会执行一次。
对于“匿名内部类”支持友好
数组初始化:
Int[] a1;
也可以int a1[];
Int[] a1={1,2,3,4,5} ;
Int[] a1= new int[20]
创建了一个非基本类型数组。如Integer类型的数组:
Integer[] a = new Integer(rand.nextInt(20))
需要赋值之后才算初始化完成
也可以用:
初始化非基本类型数组。
你甚至可以利用这种方法作为方法的参数传递出去
可变参数列表:
之前的做法:
显示的编写数组语法.
在JAVA5后,添加了可变参数:
不再需要显示的编写数组的语法,它根据参数的类型和个数进行判断,允许参数为0。
如果参数是基本数据元素,可变参数仍然会自动的把一堆元素转换到数组,如果元素已经是数组,不会执行转换。
枚举类型:
要点:switch中的结合
一般方法:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!