Loading...
整个面对对象编程,究其核心是分层理论。即任何负责的事物都是由一个又一个简单构成,通过将多个简单合成成一个复杂,并向上提供接口。然后构成更复杂的事物。同样是分层。通过继承达到的分层是金字塔状的分层。越往下继承(层数越多),新继承的类就会越多;而与之相对的关联达到的分层。则像千层饼一样,每一层都差不多大。关联的耦合比继承要低得多。继承是一件确定的关系。继承了哪个父类就是哪个(而且一般为单继承)。...
抛砖引玉int x = 10; int y = 10; String str1 = new String("abc"); String str2 = new String("abc"); String str3 = "abc"; String str4 = "abc"; System.out.println(x ...
简介归并排序(Merge Sort)是建立在归并操作上的一种有效,稳定的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。一般步骤1. 二分递归法-分治法2. 线性迭代示例代码链表排序,采用二分递归 // 采用归并排序...
核心技能null/nil 异常处理dummy node 哑巴节点快慢指针插入一个节点到排序链表从一个链表中移除一个节点翻转链表合并两个链表找到链表的中间节点哑巴节点适用于头节点可能被删除的场景。下面示例代码是哑巴节点用于删除头节点。 ListNode dummy_node = new ListNode(-1); // head节点为头节点。 dummy_node.next = head; ...
Java的非基本类型只能在堆中申请内存,并且由垃圾收集器管理其生命周期。不需要程序员控制其生命周期。C++的非基本类型可以在堆中申请内存,然后由程序员控制其生命周期(手动调用析构函数delete)。也可以在栈中申请内存,由程序栈控制其生命周期,非基本类型对象的生命周期与当前程序栈相同,程序栈空时,会自动调用对象的析构函数。为何Java鼓励在堆中申请内存呢? 为何c++在堆中申请内存如此普遍呢...