import java.util.ArrayList;
import java.util.HashMap;
public class Client {
/**
* @param args
*/
public static void main(String[] args) {
test1();
System.out.println("==================================");
test2();
}
public static void test1(){
ParentObj po = new ParentObj();
ArrayList list = new ArrayList();
po.doWork(list);
po = new ChildObj();
po.doWork(list);
ChildObj co = new ChildObj();
co.doWork(list);
}
public static void test2(){
ParentObj po = new ParentObj();
HashMap map = new HashMap();
po.doSport(map);
po = new ChildObj();
po.doSport(map);
ChildObj co = new ChildObj();
co.doSport(map);
}
}
imp ......
import java.util.Timer;
import java.util.TimerTask;
public class EggTimer {
private final Timer timer = new Timer();
private final int minutes;
public EggTimer(int minutes) {
this.minutes = minutes;
}
public void start() {
timer.schedule(new TimerTask() {
public void run() {
playSound();
timer.cancel();
  ......
刚刚看到一篇文章提出c++多态与java多态不同的地方,基本意思如下:
请看C++代码:
class Base
{
public:
Base()
{
init();
}
virtual ~Base() {}
protected:
int value;
virtual void init()
{
value = 100;
}
};
class Derived : public Base
{
public:
Derived()
{
init();
}
protected:
void init()
{
cout << "value = " << value << endl;
// 做一些额外的初始化工作
}
};
int main(int argc, char* argv[])
{
Base* pb;
pb = new Derived();
delete pb;
return 0;
}
执行结果是
value = 100
再看java代码:
class Base
{
public Base()
{
init();
}
protected int value;
protected void init()
{
value = 100;
}
......
刚刚看到一篇文章提出c++多态与java多态不同的地方,基本意思如下:
请看C++代码:
class Base
{
public:
Base()
{
init();
}
virtual ~Base() {}
protected:
int value;
virtual void init()
{
value = 100;
}
};
class Derived : public Base
{
public:
Derived()
{
init();
}
protected:
void init()
{
cout << "value = " << value << endl;
// 做一些额外的初始化工作
}
};
int main(int argc, char* argv[])
{
Base* pb;
pb = new Derived();
delete pb;
return 0;
}
执行结果是
value = 100
再看java代码:
class Base
{
public Base()
{
init();
}
protected int value;
protected void init()
{
value = 100;
}
......
1.静态导入:
静态导入是JDK1.5后新加的功能,一般不怎么常用,很简单给你举个例子你就能明白了,看这段代码:
import static java.lang.System.out;//导入java.lang包下的System类的静态方法out;
public class HelloWorld{
public static void main(String[] args){
out.print("Hello World!");//既是在这里不用再写成System.out.println("Hello World!")了,因为已经导入了这个静态方法out。
}
}
import xxxx 和 import static xxxx的区别是前者一般导入的是类文件如import java.util.Scanner;后者一般是导入静态的方法,import static java.lang.System.out;
静态导入主要是指可以通过静态导入一个类的方法,就可以在以后只要写方法的名字就可以,不用连类的名字也写了。主要适合在编程中使用率很高的函数,使用率比较低的函数这样做相反有些麻烦了。我觉得这也算是一个小技巧罢了。
2.可变参数与for循环增强:
这个是一般的用法:
public static void loop(String[] args){
for(int i=0;i<args.length;i++)
{
System.out.println(args[i]);
}
}
这个是JDK 增加的新特性的用法!
......
【IT168 文档
】内存
泄露问题对于程序来说,是一个很难发现,并且容易引起严重灾害的事情。
Java一直以其垃圾回收机制为自豪,那是否这种机制就是完美的呢。
常规理解上,Java的内存
管理机制是将局部变量保存在堆中,当变量的作用域结束之后,该变量所占用的
内容会被自动回收。不需要做任何特殊的处理。比如下面的代码:
#div_code img{border:0px;}
public
class
JavaMemory{
private
final
int
dataSize
=
(
int
) (Runtime.getRuntime().maxMemory()
*
0.6
);
public
void
f(){
{
byte
[] data1
=
new
byte
[dataSize];
}
byte
[] data2
=
new
byte
[dataSize];
}
&n ......
最近做一个项目,要用到分页功能,参考了很多方法,有的不合适,有的不喜欢,于是自己在他们的基础上整了一个;思路是这样的:先把需要分页的数据或是记录都查询出来 存入一个集合类里如List或是Vector,然后利用其sublist(int findex,int eindex)方法,获取需要分页的数据或记录,关于sublist()函数就自己去查API了。下面贴下代码吧,首先是将分页所需的一些个东东抽象出一个javabean对象—PageBean:
public class PageBean {
private int curPage; //当前页
private int pageCount; //总页数
private int rowsCount; //总行数
private int pageSize=10; //每页多少行
public PageBean(int rows){
this.setRowsCount(rows);
if(this.rowsCount % this.pageSize == 0){
this.pageCount=this.rowsCount / this.pageSize;
}
else if(rows<this.pageSize){
this.pageCount=1;
}
else{
this.pageCount=this.rowsCount / this.pageSize +1;
}
}
public int getCurPage() {
return curPage;
}
public void setCurP ......