【面向过程与面向对象】
面向过程只能解决简单的问题,列出解决问题的步骤即可,但功能很大的时候,就不能用这种思想;
面向对象能够更加方便地管理资源,将属性与方法封装到类里,而方法始终需要用到面向过程的思想;
类可以看做是一个模板(抽象),系统根据类的定义来选出对象;
【类】
class 类名{
属性;
int a;
方法;
void fun(){
}
类名(){//构造函数;创建对象时执行;
}
~类名(){//析构函数;销毁对象时执行;
}
}
【容易造成内存泄露的操作】
1.创建大量无用的对象
比如,我们在需要大量拼接字符串时,使用了String而不是StringBuilder;
String str = "";
for(int i=0; i<10000; i++){
str+=i;//相当于产生了10000个String对象;
}
2.静态集合类的使用
像HashMap、Vector、List等的使用最容易出现内存泄露,这此静态变量的生命周期和应用程序一致,所有的对象Object也不能被释放;
3.各种连接对象(IO流对象、数据库连接对象、网络连接对象)未关闭;
IO流对象、数据库连接对象、网络连接对象等连接对象属于物理连接,和便盘或者网络连接,不使用的时候一定要关闭;
4.监听器的使用
释放对象时,没有删除相应的监听器;
【创建对象】
1.分配对象空间,并将对象成员变量初始化为0或空;
2.执行属性值的显式初始化;
3.执行构造函数;
4.返回对象的地址给相关的变量;
构造方法用于对象的初始化,静态初始化用于类的初始化操作;
【参数传递】
java中,方法中所有参数都是“值传递”;
基本数据类型参数的传值:传递的值的副本,副本改变不会影响原件;
引用类型参数传值:改了副本指向地址对象的值时,也意味着原参数指向对象的值也发生改变;
【包机制】
包机制是java中管理类的重要手段,开发中,我们会遇到大量同名的类,通过包我们很容易对解决类重名的问题,也可以实现对类的有效管理;包对于类的作用相当于文件夹对于文件的作用;
1.通常是第一句非注释性语句;
2.包名:域名倒着写即可,再加上模块名,便于内部管理类;
注意:
1.写项目时都要加包,不要使用默认的包;
2.com.li和com.li.car,这两个包没有包含关系,是两个独立的包;
使用的时候,直接导入,方法如下:
import xxx.类名
如果是多个类,可以import xxx.*;
【与C++对比】