- 博客(17)
- 收藏
- 关注
原创 java学习---复用类与多态(一)
复用代码是java重要的功能之一,多态则是面向对象程序语言的一大基本特征。 复用类通过两种方法实现:①组合,是在新类中产生现有类的对象;②继承,采用现有类的形式并在其中添加新代码。 (一)重载与覆写 (1) 方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。重载Overloading是一个类中多态性的一种表现。
2016-03-07 21:48:26
474
原创 java学习---访问权限控制
控制对成员的访问权限有两个原因:(一)为了使用户不要触碰那些他们不该触碰的部分,这些部分对于类内部的操作是必要的,但它并不属于客户端程序员所需接口的一部分;(二)是为了让类库设计者可以更改类的内部工作方式,而不必担心这样会对客户端程序员产生重大的影响。
2016-03-04 17:10:57
404
原创 java学习---初始化与清理
初始化和清理是涉及安全的两个问题。很多程序的错误源于初始化,而忘记清理则会导致内存泄露。 java通过构造器来保证初始化,通过“垃圾回收器”释放内存。 (一)java构造器 java构造器类似于c++的构造函数,可以确保初始化。若未显式创建一个构造器,java编译器会自动创建一个默认构造器(即不接受任何参数的构造器)。一旦你定义了一个构造器,编译器就不会帮你创建默认构
2016-03-03 18:13:20
404
原创 java学习---控制执行流程
java使用了c的所有流程控制语句,涉及的关键字包括if-else,while,do-while,for,return,breake,continue,switch等。 除此之外,java还有两个特殊语句。 ①Foreach语法 是一种用于数组和容器的更加简洁的for语法,例如: for(char c:"hello,world!") System.o
2016-03-01 21:06:08
367
原创 java学习---操作符
java是建立在c++基础上的,所以java中的操作符大多数与c++类似,这里总结一些容易混淆的地方。 (一)equals和==的区别 个人理解,equals比较的是对象的实际内容,==比较的是对象的引用,通过例子很容易理解: class equal{ public static void main(String[] args){
2016-02-29 21:00:34
348
原创 java学习(一)
从今天开始,按照《Thinking in java》这本书学习java,初步计划每天看20页,周末每天看50页。争取在50天内看完本书第一遍。 现在对今天所看内容稍作总结。 ①oop编程思想:万物皆为对象;程序是对象的集合,它们通过发送消息来告知彼此索要做的;每个对象都有自己的由其他对象所构成的存储;每个对象都拥有其类型;某一特定类型的所有对象都可以接收同样的消息。 ②每个对象都
2016-02-26 21:30:34
309
原创 c++实现八大排序方法(一)
1、直接插入排序#includeusing namespace std;int main(){int a[10] = { 23, 4, 5, 66, 12, 3, 9, 777, 56, 1 };int m,i,j;for (i = 1; i {m = a[i];for (j = i - 1; a[j] > m&&j >= 0; --j)a[j + 1]
2015-09-18 22:21:44
683
原创 c++实现两个大整数相加(一)
巨大的整数,比如100位、200位的整数无法用已有的整数类型来表示,那么,怎么求两个大整数的和?可以采用最原始的方法:逐为相加的方法。因此,我们可以把两个大整数作为两个字符串,字符串从后往前将对应位进行相加,相加的和存入新的字符串,再将新字符串逆序输出即可:#include#includeusing namespace std;int main(){string s1,
2015-09-12 14:02:19
20476
3
原创 快速排序的实现---数据结构学习(六)
快速排序(QuickSort)是对起泡排序的一种改进。它的基本思想是,通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。实现方法如下:#includeusing namespace std;void sort(int a[], int i, int j){if (i
2015-08-20 10:14:57
1197
原创 控制台下改变背景或字体颜色
用 system("color 0A"); 其中color后面的0是背景色代号,A是前景色代号。各颜色代码如下: 0=黑色 1=蓝色 2=绿色 3=湖蓝色 4=红色 5=紫色 6=黄色 7=白色 8=灰色 9=淡蓝色 A=淡绿**=淡浅绿色 C=淡红色 D=淡紫色 E=淡黄色 F=亮白色 2.改变下一个输出或者输入字体和背
2015-08-09 14:26:50
506
原创 求最大子序列和--体会算法的魅力
算法,即我们解决问题的策略。优秀的算法可以简化复杂的问题,大大减少计算机运行的时间。以求最大子序列和为例初步体会算法的威力。给定一个数值数组啊a[10]={ 3, -1, 5, -3, 2, 5, -6, 4, 1, -2 },要求它的最大子序列和。最简单的想法是:从第一个元素开始依次计算每一项子序列,然后找出最大值即可。这种方法容易想到,也是可行的,可通过如下代码实现:#includ
2015-08-07 21:46:32
441
原创 队列的实现---数据结构学习(五)
队列是一种特殊的链式存储结构,具有“先进先出”的特点,对队列进行操作,只能在队列的尾部(rear)进行插入操作,在队列的头部(front)进行删除。判断队列是否为空的条件是rear=front。生活中队列思想的应用广泛存在,例如排队等待服务,数据处理等。下面,将简单实现队列的初始化、插入删除以及输出队列元素的操作。实现代码如下。#includeusing namespace std;
2015-08-04 22:18:45
512
原创 栈的实现--数据结构学习(四)
栈是一种特殊的链表,具有“先进后出”、“后进先出”的特点,它的插入和删除操作只能在栈的顶部进行。生活中的很多场景具有这种特点,例如火车的调度,碗的叠垒等。利用栈可完美解决这一类问题。本文简单实现了栈的初始化、插入、删除、输出操作,代码如下。#include#include#includeusing namespace std;struct stacks{int da
2015-08-04 16:19:36
345
原创 双向链表的实现---数据结构学习(三)
双向链表的每个节点包含两个指针(prior和next),分别指向该节点的直接前驱和后继。双向链表可方便的实现对一个节点前驱节点的访问。本文简单实现了双向链表的初始化、插入、删除和输出操作,具体实现方法如下:#includeusing namespace std;struct node{int data;node *prior;node *next;};nod
2015-08-02 21:10:16
405
原创 双向链表的实现---数据结构学习(三)
在单链表中,每个节点只有一个指针指向它的直接后继,访问数据时只能沿着指针向前访问。若要访问某一节点的前驱节点,只能从头开始访问。为解决这一问题而引出了双向链表的概念。双向链表中的每个节点包含两个指针(prior和next)分别指向它的前驱和后继,从一个节点出发既可以访问它的后继节点,也可访问它的前驱节点。可大大节省访问前驱节点的时间。本文主要实现双向链表的初始化、插入、删除和输出操作。实现
2015-08-02 19:25:33
761
原创 单向循环链表的简单实现--数据结构学习(二)
单向循环链表与单链表类似,不同之处在于:单链表尾指针为NULL,单向循环链表尾指针指向头结点。当需要判断链表是否结束时,单链表的判断方法是判断尾指针是否为空,单向循环链表则是判断尾指针是否指向头结点。以下是单向循环链表的简单实现和输出。#includeusing namespace std;struct node{int data;node *next;};no
2015-08-01 22:23:55
690
原创 单链表的实现---数据结构学习(一)
线性表的链式存储结构即为单链表,单链表可方便的进行插入、删除,但不具备随机存储的特点。具体的实现如下:(包括初始化,插入,删除,输出和求链表长度)#includeusing namespace std;int getlen();struct node{int data;node *next;};node *head;void init(){nod
2015-08-01 22:18:15
393
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人