面向过程:事物比较简单,可以用线性的思维去解决
面向对象:事物比较复杂,使用简单的线性思维无法解决
共同点:都是解决问题的一种思维方式;二者相辅相成,并不是对立的。
解决复杂问题、方便我们分析整个系统;具体到微观操作,仍然使用面向过程方式来处理。
对象和类的概念:
对象:是具体的事物
类:是对对象的抽象
eg:
类是一个图纸,对象是根据该图纸制造多个实物;
类是上海大众汽车,对象就是大家购买的一辆辆具体上海大众汽车。
创建对象:
类名 对象名 = new 类名();
Person p1 = new Person();
类的属性或者叫成员变量
作用范围:整个类体
定义格式:[修饰符] 属性类型 属性名 = [默认值];
在定义成员变量时可以对其初始化,
如果不对其初始化,Java使用默认的值对其初始化。
基本数据类型 | 默认值 |
---|---|
boolean | false |
double | 0.0d |
float | 0.0f |
long | 0L |
int | 0 |
short | 0 |
byte | 0 |
char | null |
内存分析:
栈:
存放:局部变量
先进后出,自下而上储存
方法执行完毕,自动释放空间
堆:
存放:new出来的对象
需要垃圾回收器来回收
方法区:
存放:类的信息(代码)、static变量、字符串常量等
this关键字:
作用:
this表示的是当前对象本身,更准确的说,this代表当前对象的一个引用;
普通方法中使用this:
区分类成员属性和方法的形参
调用当前对象的其他方法
位置:任意
包:
为什么需要package?
为了便于管理类:合适的类位于合适的包!
为了解决类的重名问题。
package怎么用?
通常是类的第一句非注释性语句
为什么需要import?
如果不使用import,我们如果用到其他包的类时,只能这么写:java.util.Date,代码量太大,不利于编写和维护。通过import可以导入其他包下的类,从而可以在本类中直接通过类名来调用。
import java.util.Date;
如果导入两个相同的类,只能使用包名+类名来显示调用的相关类
java.util.Date date = new java.util.Date();