摘要: 计算d 1 + 1/2 - 1/3 + 1/4 + 1/5 - 1/6+ ··· ±1/m 分母能被3整除的时候为"-"号 @date 3/13/2013 @CocoonFan 阅读全文
posted @ 2013-03-13 02:08 Cocoon 阅读(416) 评论(0) 推荐(0) 编辑
摘要: 计算 1 + 1/2 + 1/3 + ··· + 1/m n+1 @date 3/12/2013 VC++ 6.0 阅读全文
posted @ 2013-03-12 01:52 Cocoon 阅读(571) 评论(0) 推荐(0) 编辑
摘要: List集合代表一个元素有序,可重复的集合,集合中每个元素都有其对应的顺序索引。List集合默认按元素的添加顺序设置元素的索引,第一个索引默认为0,之后的递增。   List集合中的常用操作元素的方法:     · void add(int index, Object element): 将元素element插入到元素的index处;     · boolean addAll(int index, Collection c): 将集合c 所包含的所有元素都插入到List集合的index处     · Object get(int index):返回集合index索引处的元素;     · int indexOf(Object o):返回对象o在List集合中第一次出现位置的索引     · inr lastIndexOf(Object o):返回对象o在List集合中最后一次出现位置的索引     · Object remove(int index):删除并返回index所引处的元素     · Object set(int index, Object elem 阅读全文
posted @ 2013-03-12 00:50 Cocoon 阅读(242) 评论(0) 推荐(0) 编辑
摘要: 上面的输出结果可能有点让人觉得意外,从输出的结果可知输出的内容已经重复了(有两个-3),但是因为HashSet把他们添加到了不同的地方,所以HashSet完全可以容纳两个相同的元素。   但是当我们试图删除count为-3的R对象的时候,HsahSet会计算出该对象的hsahCode值,从而找出该对象在集合中保存的位置,然后把此处的对象与count为-3的R对象通过equals()方法进行比较,如果相等就删除该对象-----HashSet只有第三个元素才满足该条件(第一个元素实际上是存的count值为5的R 对象对应的位置,所以第三个元素会被删除)。   因此在修改HashSet集合中的对象时,应该考虑到,修改有可能导致该对象与集合中的其他对象相等,从而导致HashSet无法准确访问该对象。 同样的情况也会发生在TreeSet中,如果向TreeSet中添加一个可变对象后,后面的程序修改了改可变对象的成员变量,这将导致与其他对象的大小顺序发生改变,但是TreeSet不会再次调整他们的顺序,甚至可能导致这两个对象通过compareTo(Object obj)方法比较返回0.下 阅读全文
posted @ 2013-03-11 20:38 Cocoon 阅读(340) 评论(0) 推荐(0) 编辑
摘要: HashSet是Set接口的典型实现,HashSet按Hash算法来存储集合中的元素,因此具有很好的存取和查找性能。   它具有如下特点:     · 不能保证元素的排列顺序,顺序可能发生变化     · HashSet不是同步的     · 集合的元素值可以为null     · HashSet判断两个元素相等的标准是两个对象通过equals()方法比较相等,并且两个对象的hashCode()方法返回的值也相等   下面的程序提供了A、B、C三个类分别重写了equals()、hashCode()两个方法或者全部: 阅读全文
posted @ 2013-03-11 15:26 Cocoon 阅读(287) 评论(0) 推荐(0) 编辑
摘要: 在编程的时候,常常需要集中存放多个数据。我们可以使用数组来存放这些数据,但是数组有一个缺点:数组的长度是不可变的,数组的空间开辟太大会造成浪费,开辟的空间太小又不够用。这时候就可以使用集合了。   为了保存数量不确定的数据和保存具有映射关系的数据,Java提供了集合类。所有的集合类都在 java.util包下。   Java的集合类主要由两个接口派生出:Collection和Map.这两个接口又包含了一些子接口或者实现类。 下图是java 集合体系 阅读全文
posted @ 2013-03-11 01:12 Cocoon 阅读(1029) 评论(0) 推荐(0) 编辑
摘要: 闭包是一种能背调用的对象,他保存了创建它的作用的信息,Java中可以把非静态内部类当成面向对象领域的闭包。   回调就是某个方法一旦获得内部内对象的引用后,就可以在合适的时候反过来调用外部类的实例方法。   假设有这样的一个场景:     一个人,首先他是一个程序员,他的工作是敲代码。但是他除了是以为程序员之外,他还是一名教师,他的工作还可以在讲台上讲课。   那么怎么来实现这个场景呢?   首先,我们可以定义两个类(或者接口),分别叫Teacher 和 Programmer ; 然后定义另一个类叫TeacherProgrammer,这个类继承了Teacher和Programmer,可以使用一个内部类通过闭包和回调来实现两种不同的工作方式。   下面是一种实现的方式: 阅读全文
posted @ 2013-03-10 01:18 Cocoon 阅读(357) 评论(0) 推荐(0) 编辑
摘要: 接口是从多个相似的类中抽象出来的规范,接口不提供任何实现。它体现的是一种规范和实现分离的设计哲学。     · 接口可以是public 或者省略,不能用其他访问修饰符修饰     · 接口应与类名采用相同的命名规则     · 一个接口可以有多个直接的父接口,但接口只能继承接口,不能继承类     · 接口里面包含成员变量,但只能是常量用 static final 修饰,缺省时系统会自动添加static final     · 接口里面的方法只能是抽象方法用public abstract 修饰,缺省时系统会自动补全     · 接口里不允许定义静态方法     · 一个类可以继承一个父类,并同时实现多个接口,implements 部分必须放在 extends后面     · 一个类实现了一个或多个接口之后,这个类必须完全实现这些接口里所定义的去全部抽象方法;否则,该类也必须定义为抽象类   下面看一个实现接口的类: 阅读全文
posted @ 2013-03-08 01:51 Cocoon 阅读(274) 评论(0) 推荐(0) 编辑
摘要: ========================   当我们想创建一个实例后,要求该实例的成员不再发生改变的时候,就需要使用不可变类(immutable).   创建自定义的不可变类,应遵守如下规则:     · 使用private 和 final修饰该类的成员变量     · 提供带参数构造器,用于传入参数来初始化对象的成员变量     · 为该类提供getter方法,但不要提供setter方法     · 如果有必要重写Object 类的hashCode和equals方法   下面的程序试图定义一个不可变类(Person),但因为包含一个引用类型的成员,且这个引用是可变类,所以导致了Person类也变成了可变类: 阅读全文
posted @ 2013-03-07 15:31 Cocoon 阅读(329) 评论(0) 推荐(0) 编辑
摘要: 如果一个类始终只能创建一个实例,则这个类被称为单例类。   在一些特殊的情况下,要求不允许自由创建该类的对象,而只允许为该类创建一个对象。为避免其他类自由创建该类的实例,我们可以把类的构造器使用private修饰从而把该类的所有构造器隐藏起来。   但是,一旦把该类的构造器隐藏起来,就需要提供一个public方法作为该类的访问点,用以创建该类的对象,且该方法必须用static修饰(因为调用该方法之前还不存在对象,因此调用该方法的不可能是对象,只能是类)。   除此之外,该类还必须缓存已经创建的对象,因为此类需要使用一个成员变量来保存曾经创建过得对象,因为该成员变量需要被上面的静态方法访问,故该成员变量必须使用static修饰。   下面是一个实例: 阅读全文
posted @ 2013-03-07 00:58 Cocoon 阅读(272) 评论(0) 推荐(0) 编辑
摘要: 我们经常用System.out.println()来打印一些基本类型的数据,比如 int i = 5; System.out.println(i); 很明显这样做是没有任何问题的。如果打印对象会出现什么情况呢? class Person{ private String name; public Person(String name){ this.name = name; } public void info(){ System.out.println("此人的名字是:" + this.name); } } public class PrintObject { public static void main(String[] args) { Person p = new Person("小三"); System.out.println(p);//打印对象 } } 阅读全文
posted @ 2013-03-06 10:36 Cocoon 阅读(427) 评论(0) 推荐(0) 编辑
摘要: ------------《疯狂Java讲义精粹》读书笔记-------------- 先猜一猜下面的代码会输出什么吧: 什么!没搞错吧~~~ 怎么不是输出两个true? 时尚这与Java的Integer类的设计有关,查看java.lang.Integer类的源代码: 阅读全文
posted @ 2013-03-06 02:14 Cocoon 阅读(225) 评论(0) 推荐(0) 编辑
摘要: Java 是面向对象的语言,它既保留了8中基本数据类型,也提供了8中相对应的包装类(Wrapper Class): 8个包装类除了Character之外可以传入相应的值来初始化,也可以传入字符串初始化。 包装类对象和基本类型变量的转化关系如下: 阅读全文
posted @ 2013-03-06 01:48 Cocoon 阅读(336) 评论(0) 推荐(0) 编辑
摘要: 用法:   (类型变量 instanceof 类|接口) 作用:   instanceof 操作符用于判断前面的对象是否是后面的类,或者其子类、实现类的实例。如果是则返回true 否则就返回false。 注意:   · instanceof前面的操作数的编译时类型要么与后面的类相同,要么与后面的类具有父子继承关系否则会引发编译错误。 一个简单的例子: 阅读全文
posted @ 2013-03-05 02:13 Cocoon 阅读(246) 评论(0) 推荐(0) 编辑
摘要: Java引用变量有两个类型:     · 编译时类型(由声明该变量时使用的类型决定)     · 运行时类型(由实际赋给该变量的对象决定)   当编译时类型和运行时类型不一致,就可能出现多态(Polymorphism)。往往是相同类型的变量、调用同一个方法时呈现出多种不同的行为特征。 看下面这个例子: 阅读全文
posted @ 2013-03-05 01:42 Cocoon 阅读(323) 评论(0) 推荐(0) 编辑
摘要: 取石子游戏 Time Limit: 1000MS Memory Limit: 10000K Description 有两堆石子,数量任意,可以不同。游戏开始由两个人轮流取石子。游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子;二是可以在两堆中同时取走相同数量的石子。最后把石子全部取完者为胜者。现在给出初始的两堆石子的数目,如果轮到你先取,假设双方都采取最好的策略,问最后你是胜者还是败者。 Input 输入包含若干行,表示若干种石子的初始情况,其中每一行包含两个非负整数a和b,表示两堆石子的数目,a和b都不大于1,000,000,000。 Output 输出对应也有若干行,每行包含一个数字1或0,如果最后你是胜者,则为1,反之,则为0。 阅读全文
posted @ 2013-03-03 17:39 Cocoon 阅读(203) 评论(0) 推荐(0) 编辑
摘要: Big Number Time Limit: 1000MS Memory Limit: 65536K Description In many applications very large integers numbers are required. Some of these applications are using keys for secure transmission of data, encryption, etc. In this problem you are given a number, you have to determine the number of digits in the factorial of the number. Input Input consists of several lines of integer numbers. The first line contains an integer n, which is the number of cases to be tested, followed by n line 阅读全文
posted @ 2013-03-03 14:46 Cocoon 阅读(186) 评论(0) 推荐(0) 编辑
摘要: The 3n + 1 problem Time Limit: 1000MS Memory Limit: 10000K Description Problems in Computer Science are often classified as belonging to a certain class of problems (e.g., NP, Unsolvable, Recursive). In this problem you will be analyzing a property of an algorithm whose classification is not known for all possible inputs. Consider the following algorithm: 1. input n 2. print n 3. if n = 1 then STOP 4. if n is odd then n 阅读全文
posted @ 2013-03-02 19:10 Cocoon 阅读(569) 评论(0) 推荐(0) 编辑
摘要: THE DRUNK JAILER Time Limit: 1000MS Memory Limit: 10000K Description A certain prison contains a long hall of n cells, each right next to each other. Each cell has a prisoner in it, and each cell is locked. One night, the jailer gets bored and decides to play a game. For round 1 of the game, he takes a drink of whiskey,and then runs down the hall unlocking each cell. For round 2, he takes a drink of whiskey, and then runs down the hall locking every other cell (c 阅读全文
posted @ 2013-03-02 00:14 Cocoon 阅读(435) 评论(0) 推荐(0) 编辑
摘要: 先回顾一下C语言中的两种读入数据的方式 —— scanf("%s", str)和gets(str)     · scanf(("%s", str)遇到空白字符(空格、制表符、换行符)变结束输入,之后读入的数据将继续停留在缓冲区。     · gets(str) 遇到换行符后结束输入,而最后的'\n'被替换成了'\0',输入缓冲区不会继续保存换行符,因此不会对后面的输入造成影响。 下面写一段代码测试: 阅读全文
posted @ 2013-03-01 13:31 Cocoon 阅读(388) 评论(0) 推荐(0) 编辑