复用代码是Java众多引人注目的功能之一。 可以通过创建新类来复用代码,而不必再从头开始编写。此方法的诀窍在于使用类而不破坏现有程序代码。有两种方法到达这一目的。 第一种非常直观:只需要在新类中产生现有类的对象。由于新类是有现有类的对象所组成,所以这种方法称为组合。该方法只是复用了现有程序代码的功能,而非它的形式。 第二种方法则细致一点,它按照现有类的类型来创建新类。无需改变现有类的形式,采用...
一开始我们做的都是「顺序编程」,但是有时候程序纯顺序执行的性能并不高,并且对于部分问题顺序执行程序并不能很好地解决。这时候「并发」就是一个很好的解决方案了,「并发」的含义其实很简单,即并行地执行程序中的多个部分。这些部分要么看起来在并发地执行(单处理器环境下通过竞争 cpu 时间片实现同时执行效果),要么在多处理器环境下真正同时执行。并发「具有可论证的确定性,但是实际上具有不可确定性」。这是研究并发问题...
1.Restaurantpackage Produce;import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;class Meal {privatefinalint orderNum;public Meal(int orderNum) {this.orderNum = orderNum;}@Overridepublic String toString() {return "Meal " + orderNum;}
}class WaitPerson implements Runnable {private Restaurant restaurant;public WaitPerson(Restaurant ...
75.JAVA编程思想——设计范式向大家介绍重要但却并不是那么传统的“范式”(Pattern)程序设计方法。在向面向对象程序设计的演化过程中,或许最重要的一步就是“设计范式”(Design Pattern)的问世。它在由Gamma,Helm 和Johnson 编著的《DesignPatterns》一书中被定义成一个“里程碑”(该书由Addison-Wesley 于1995 年出版)。那本书列出了解决这个问题的23 种不同的方法。我们准备伴随几个例子揭示出设计范式的基本概念。这或许...
编程代价高昂的主因:不安全的编程方式C++引入构造器(constructor),对象被创建时自动调用的特殊方法Java也采用构造器,同时引入垃圾回收器构造器确保初始化通过构造器,确保每个对象在被操作之前都能得到初始化构造器为什么要与类的名称相同?
任何名字都可能与类的某个成员名称相冲突需要让编译器知道该调用哪个方法来初始化这个对象(调用构造器是编译器的责任)实质上也就是沿用了C++的解决方法因此在编码风格(方法首字母小...
// Property.java import java.util.*; public class Property { public static void main(String[] args) { System.out.println(new Date()); Properties p = System.getProperties(); p.list(System.out); System.out.println("--- Memory Usage:"); Runtime rt = Runtime.getRuntime(); System.out.println("Total Memory = " + rt.totalMemory() + ...
基本类型无法做为类型参数代码如下:/*** */package test.thinkinjava.Generics;import java.util.ArrayList;
import java.util.List;/*** @author Luo* */publicclass Abc<T> {private List<T> list = new ArrayList<T>();private T element;@Overridepublic String toString() {return list.toString();}publicvoid addList(T element) {this.list.add(element);}public T getElement() {return element;}publicvoid setElement(...
吸血鬼数字:我最开始想的是把四位数拆开,然后进行自由组合然后相乘,最后比较得到结果,在网上去看了一些朋友的做法,让我大吃一惊啊,想到自己的算法也要好好看了 ,这样子下去是不行滴现贴出代码:package edu.cqu.main;import java.util.Arrays;/*** 问题描述:* 吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘而得到,而这对数字各包含乘积的一半位数的数字,* 其中从最初的数字中选取的数字可以任意排序。* ...
4.1 控制if-elseif(Boolean-expression)statement;
else if(Boolean-expression)statement;
elsestatement;switch选择语句switch(integral-selector) {case integral-value1 : statement; break;case integral-value2 : statement; break;case integral-value3 : statement; break;// ...default: statement;
}4.2 迭代循环语句/迭代语句while语句while(Boolean-expression)statementdo-while语句至少执行一次dostatement
while(Bo...
java 编程思想 22.11: java bean 案例代码 thinking in java 4免费下载:http://download.csdn.net/detail/liangrui1988/7580155package org.rui.swing.bean;import java.awt.Color;
import java.awt.event.ActionListener;
import java.awt.event.KeyListener;import org.rui.classts.Pet;
/*** 简单的bean* @author lenovo**/
public class Frog {private int jumps;private Color color;private Pet pet;private boolean jmpr...
一:?向上转型和向下转型面向对象中的转型只会发生在有继承关系的子类和父类中(接口的实现也包括在这里)。父类:人????子类:男人向上转型:?Person?p?=?new?Man()?;?//向上转型不需要强制类型转化向下转型:?Man?man?=?(Man)new?Person()?;?//必须强制类型转化?向上转型??子类创建对象时,可以使用向上转型的形式操作,方法程序的后期维护,??List队列也是使用的向上转型package com.wj.interfaceDemo;/***向上转型*/class People{ ...
在整个开发过程中,最重要的事情就是:不要将自己迷失!应该时刻提醒自己注意以下几个问题:(1) 对象是什么?(怎样将自己的项目分割成一系列单独的组件?)(2) 它们的接口是什么?(需要将什么消息发给每一个对象?)在确定了对象和它们的接口后,便可着手编写一个程序。出于对多方面原因的考虑,可能还需要比这更多的说明及文档,但要求掌握的资料绝对不能比这还少。整个过程可划分为四个阶段,阶段 0 刚刚开始采用某些形式的结构...
.title { text-align: center; margin-bottom: .2em }
.subtitle { text-align: center; font-size: medium; font-weight: bold; margin-top: 0 }
.todo { font-family: monospace; color: red }
.done { font-family: monospace; color: green }
.priority { font-family: monospace; color: orange }
.tag { background-color: #eee; font-family: monospace; padding: 2px; font-size: 80%; font-weight: normal }
.timestamp {...
访问控制(或隐藏具体实现)与“最初的实现并不恰当”有关。重构即重写代码,以使得它更可读,更容易理解,并因此而更具维护性。在面向对象设计中需要考虑一个基本问题:“如何把变动的事物与保持不变的事物区分开来”应该尽可能将一切方法都定为private,而仅向客户端程序员公开你愿意让他们使用的方法。包:库单元包内包含有一组类,它们在单一的名字空间之下被组织在一起为了解决潜在的名字冲突问题,Java使用 package 对名称空...
欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/51040234随着计算机的进步,‘不安全’的程序设计已成为造成编程代价高昂的罪魁祸首之一。许多 C程序的错误都是由于程序员忘记初始化一个变量造成的。对于现成的库,若用户不知道如何初始化库的一个组件,就往往会出现这一类的错误。清除是另一个特殊的问题,因为用完一个元素后,由于不再关心,所以很容易把它忘记。这样一来,那个元素占用的资源会一直...