文章目录
JAVA面向对象—类和对象基本概念
本文参考内容: 牛客网,此内容仅为本人的学习知识总结。
什么是对象
一 。两种变成思想:
- 面向过程:分析出解决问题的步骤,然后用函数逐一实现每一步,再一次调用这些函数。
- 面向对象:分析出系统中应包含哪些物体/事物/对象,以及它们之间的关系,再用特定于法描述这些对象和关系。
二。如何运用面向对象思想
三。类和对象的关系
- 类:抽象的,不是具体的实例。用于描述一批对象的信息
- 对象:具体的,是根据类的描述,由JVM创建出来的一个实例,这个过程叫做实例化。
- 举例:人:类 perth:对象
- 类是自定义的数据类型,通过这个类创建对象,实际上就是初始化这种类型的变量。
自定义的数据类型不能直接引用,只能用 new 初始化。
如何定义类
1. 如何描述对象
属性:对象的静态特征;用变量来描述,这样的变量叫成员变量。
行为:对象的动态特征;用方法来描述,这样的变量叫成员方法。
- 定义成员变量
语法:修饰符 数据类型 变量名 = 初始值; 不初始化就会给默认值 - 定义成员方法
语法:修饰符 返回类型 方法名(参数列表){…} 注:成员方法不能被static关键字修饰 没有返回类型用void,此事无需return
2.成员变量不初始化
当成员变量不初始化(不赋值)直接打印输出时,JVM会给它默认值,不同类型的默认值不同。
实例:
Game.java:
package nowcoder3.part02;
/*
* 成员方法详解
* */
public class Game {
public static void main(String[] args) {
Car c = new Car();
System.out.println(c.brand);
System.out.println(c.color);
System.out.println(c.maxSpeed);
}
}
Car.java:
package nowcoder3.part02;
public class Car {
//成员变量
String brand;
String color;
int maxSpeed;
}
运行结果:
不同类型的默认值:
3. 如何定义类:
实列:
Game.java:
package nowcoder3.part01;
//游戏类
public class Game {
public static void main(String[] args) {
//创建一个赛车
Car c = new Car();
//访问成员变量
c.brand="宝马";
c.color="黑色";
System.out.println(c.brand);
System.out.println(c.color);
System.out.println(c.maxSpeed);
//访问成员方法
c.run();
//再创建一个对象
Car r = new Car();
r.brand = "大奔";
r.color = "绿色";
System.out.println(r.brand);
System.out.println(r.color);
System.out.println(r.maxSpeed);
r.run();
//直接打印对象
System.out.println(c);
System.out.println(r);
}
}
Car.java:
package nowcoder3.part01;
//赛车类
public class Car {
//成员变量
String brand;
String color;
int maxSpeed = 500;
//成员方法
void run(){
System.out.println("Running...");
}
}
运行结果:
因为两个对象的哈希码值(地址)并不同,所以这是两个对象。
成员方法详解
- 成员方法可以直接访问当前类的所有成员变量;
- 成员方法可以直接访问当前类的所有成员方法;
- 成员方法参数可以是基本数据类型,也可以是引用数据类型,包括自定义的类型。
实例:
Game.java:
package nowcoder3.part02;
/*
* 成员方法详解
* */
public class Game {
public static void main(String[] args) {
Car c1 = new Car();
c1.brand="宝马";
c1.color="黑色";
c1.maxSpeed=666;
c1.run();
Car c2 = new Car();
c2.brand="奔驰";
c2.color="红色";
c2.maxSpeed=999;
c2.run();
}
}
Car.java:
package nowcoder3.part02;
public class Car {
//成员变量
String brand;
String color;
int maxSpeed;
//行驶
void run(){
//方法内声明的变量是局部变量,只能在方法内访问
//调用成员变量
System.out.println(color + brand +"速度是" + maxSpeed);
//调用成员方法
startup();
speedup();
stop();
}
//启动
void startup(){
System.out.println(brand+"启动!");
}
//加速
void speedup(){
System.out.println(brand+"加速!");
}
//刹车
void stop(){
System.out.println(brand+"刹车!");
}
}
运行结果:
JVM内存模型
JVM启动时会向系统申请一块内存,它将这块内存划分为若干个子区域,用以存放不同形式的。数据。
1. 堆:
堆用于存储引用类型的数据;
这些数据相互之间是无序的; .
堆中数据是可以反复使用的;
JVM会定期清理堆中的垃圾数据;
2. 栈:
栈以方法为单元存储数据,这样的单元叫方法栈帧;
栈中存放的数据是有序的,遵循着先进后出的规则;
方法调用结束后,它占有的方法栈帧将会立刻释放;
注意:出栈入栈顺序不同
3. 栈和堆的关系:
对象的创建过程
通过实例理解:
public static void main(String[] args) {
Car c = new Car();
c.brand="宝马";
c.color="黑色";
c.maxSpeed=500;
c.run();
}
1. 创建对象:
Car c = new Car();
3步 main()入栈—>创建对象—>赋值
2. 访问成员变量
c.brand="宝马";
c.color="黑色";
c.maxSpeed=500;