import java.io.*;
class BigInt
{
int a[];
int len;
BigInt(String str)
{
{
len=str.length();
a=new int[len];
for(int i=0;i<len;i++)
{
this.a[i]=str.charAt(i)-48;
}
}
}
public BigInt bigplus(BigInt b)
{
BigInt sum;
int l;
int m=len-1;
int n=b.len-1;
int max;
if(len>=b.len)
{
l=b.len;
max=len-1;
sum=this;
}
else
{
l=len;
sum=b;
max=b.len-1;
}
for(int i=0;i<l;i++)
{
sum.a[max]=a[m]+b.a[n];
if(max!=0&&sum.a[max]>=10)
{
sum.a[max]=sum.a[max]-10;
sum.a[max-1 ......
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.huadoo.model.Area;
public class Aaaa {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
List list=new ArrayList();
Map map=new HashMap();
Area area=new Area();
area.setId(Short.parseShort("1"));
area.setName("aaaa");
Area area1=new Area();
area1.setId(Short.parseShort("2"));
area1.setName("bbb");
&n ......
使用BigInteger大容量运算类计算100的阶乘
一.一般算法(循环)
public class Test {
public static void main(String[] args) {
int result = 1;
for (int i = 1; i <= 100; i++) {
result *= i;
}
System.out.println(result);
}
}
输出结果为0,因为int无法保存下100的阶乘的结果,100的阶乘的长度至少大于50位,也要大于long,double
二.使用BigInteger大容量运算类
import java.math.BigInteger;
public class Test {
public static void main(String[] args) {
BigInteger result = new BigInteger("1");//为result赋初始值,为1
for (int i = 1; i <= 100; i++) {
BigInteger num = new BigInteger(String.valueOf(i));
result = result.multiply(num);//调用自乘方法
}
System.out.println(result);//输出结果
System.out.println(String.valueOf(result).length());//输出长度
}
}
计算结果为:93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
产度:158 ......
java泛型中的super关键字不太常用,也不太好理解,今天又从头看了看java的泛型机制,作一记录。
上界:
上界用extends关键字声明,表示参数化的类型可能是所指定的类型,或者是此类型的子类。如下面的代码:
Java代码
public void upperBound(List<? extends Date> list, Date date)
{
Date now = list.get(0);
System.out.println("now==>" + now);
//list.add(date); //这句话无法编译
list.add(null);//这句可以编译,因为null没有类型信息
}
public void upperBound(List<? extends Date> list, Date date)
{
Date now = list.get(0);
System.out.println("now==>" + now);
//list.add(date); //这句话无法编译
list.add(null);//这句可以编译,因为null没有类型信息
}
为什么会无法编译呢,实际调用时传入的list可能是java.util.Date的某个子类的参数化类 ......
在很多时候,我们需要自动生成永远不会重复的ID,因此我们会用到以下的代码来实现:
注意:需要加入两个apache的包,代码和包请从http://www.blogjava.net/afei0922/articles/129589.html 下载
package cn.com.cinda.rtx.state;
import org.apache.commons.id.Hex;
public class RandomCode {
public RandomCode() {
}
/** *//**
* @return String 生成32位的随机数作为id
*/
public String getCode() {
return new String(Hex.encodeHex(org.apache.commons.id.uuid.UUID
.randomUUID().getRawBytes()));
}
} ......
Java 是一门支持多线程的的语言,但在处理多线程事件时我们必须注意这样一个问题:多个线程可能同时对同一对象的修改。如果我们不及时作出处理,可能引起对象值的混乱。其实处理办法也很简单,就是当一个线程处理一个对象,锁住该对象。 ......