原文见:https://www.sxt.cn/Java_jQuery_in_action/object-oriented.html
1、java 面向对象特性:封装、继承、多态,封装了数据和功能。面向过程特性:封装,只封装了功能。
2、类:class,对具体事物的抽象,是同一类对象的模板;对象:Object,具体的事物。
3、类规则:一个.java文件中有且只有一个public class,可以有多个class,类名需要和文件名保持一致,类中有属性(不初始化就会使用默认值)、方法、构造器,可以用UML图表示类。
4、面向对象的内存分析:java虚拟机的内存可以分为三个区域:栈(Stack)、堆(heap)、方法区(method area)
1. 栈描述的是方法执行的内存模型。每个方法被调用都会创建一个栈帧(存储局部变量、操作数、方法出口等)
2. JVM为每个线程创建一个栈,用于存放该线程执行方法的信息(实际参数、局部变量等)
3. 栈属于线程私有,不能实现线程间的共享!
4. 栈的存储特性是“先进后出,后进先出”
5. 栈是由系统自动分配,速度快!栈是一个连续的内存空间!
1. 堆用于存储创建好的对象和数组(数组也是对象)
2. JVM只有一个堆,被所有线程共享
3. 堆是一个不连续的内存空间,分配灵活,速度慢!
method area
1. JVM只有一个方法区,被所有线程共享!
2. 方法区实际也是堆,只是用于存储类、常量相关的信息!
3. 用来存放程序中永远不变或唯一的内容。(类信息【Class对象】、静态变量、字符串常量等)
5、构造器(constructor)
6、垃圾回收机制
7、内存泄漏
8、对象创建的实质过程
这就是可以使用this的原因,在执行构造函数前已经分配好了空间,this可以指代当前对象,也因此this不能用于静态。
9、static--静态初始化块
10、传值:值传递、引用传递,具体可以看https://baijiahao.baidu.com/s?id=1614769568984126810&wfr=spider&for=pc
11、包:管理类(同名类), com.gao和com.gao.car,这两个包没有包含关系,是两个完全独立的包。只是逻辑上看起来后者是前者的一部分。
11、import语句,当导入同名类,需要在前面加上包名和类名。如果选择导入.*,会降低编译速度,不会降低运行速度。静态导入:导入指定类的静态属性
原文:https://www.cnblogs.com/zhangxiaolei0/p/13027681.html