面向对象编程(OOP)
面向对象(OOP Object Orient Programming)是java编程的核心思想。
三大特性:封装,继承,多态
主要组成:类;对象;属性;动作(方法)
类:对某一类有相同特征的事物的抽象,或者说具有同种属性和行为的对象的集合,比如电力机车。
对象:表示现实中该类事物的个体,是类的具体实现,比如和谐号动车组就是电力机车的一个对象。
属性:该类事物的共有特征,实际就是变量,但又和变量有点区别,比如电力机车具有功率大,运行速度高,加速快,自身负重低,清洁环保,能源利用率高等属性。
动作(方法):该类事物共有的功能,比如可以电力机车可以牵引车厢,通电工作等。
它们四者的关系:
1.类中包含属性和方法;
2.对象由类创建出(类实例化出对象);
3.对象中可以表现出具体的属性值和方法
小练习:建立一个完整的类:
package com.xiaobai;
//建立一个电力机车类
public class electricLocomotive {
//类的属性
//型号
public String model;
//速度
public int velocity;
//功率
public double power;
/**类的功能(方法)
* 方法的语法:
* [访问修饰符] 返回值类型 方法名([数据类型 变量名,…]){
* ……
* }
* 1.访问修饰符可写可不写;
* 2.返回值类型:如果方法执行完不返回数据,写void
* 如果要返回数据,写对应的数据类型
* 3.方法名遵循驼峰原则,见名之意
* 4.参数列表:可以不需要参数,也可以设计参数,写法:
* 数据类型 变量名(就是变量声明),多个的用逗号隔开即可
*/
public void transportation() {
System.out.print("运输");
public void dissipation(){
System.out.print("吃电");
}
}
}
JVM内存划分
程序计数器:记录cpu该去执行线程中哪条指令,说白了就是内存和cpu进行通信不需要我们去关心
本地方法栈:jvm调用操作系统的方法的区域,如操作系统支持的复制和粘贴不需要我们去关心
方法栈:执行方法,保存局部变量
方法区:存储了每个类的信息(包括类的名称、方法信息、字段信息)、静态变量、常量以及编译器编译后的代码等
堆:用来存储对象本身的以及数组
其实在java编程过程中,我们主要是针对对象在编程,因此还需要理解对象在JVM中的运行原理。
成员变量和局部变量
成员变量:类中的变量
局部变量:方法内部的变量就是局部变量
成员变量 | 局部变量 | |
位置 | 类 | 方法内部 |
作用范围 | 当前类中所有非静态方法 | 当前方法 |
初始值 | 默认初始化 | 需要初始化 |
内存位置 | 堆 | 栈 |
生命周期 | 伴随着对象的存在而存在 | 弹出栈之后就挂了 |
当成员变量和局部变量重名时,就使用就近的局部变量,
也可以通过 this.属性 来强制使用成员变量
还有个匿名对象,比较鸡肋,只能用一次的家伙。
今天还学了好多,和人约好了去玩一小会,来不及在这里记录了,明天再接再励。