ACM JAVA 基础


感谢各位大牛的JAVA总结博客,我根据个人“喜好”,在省赛前夕,对此进行“搜索”总结。


一、代码格式基础

类名默认为Main。

class Main{

    voidsolve(){}

    voiddfs(){}

    publicstatic void main(String[] args){

    Main a=new Main();

    a.solve();

}

}

二、编码基础

输入:

声明一个输入对象cin;Scanner cin=newScanner(System.in);

输入一个int值:Int a=cin.nextInt();

输入一个大数:BigDecimala=cin.nextBigDecimal();

EOF结束:while(cin.hasNext()){。。。}

读一个整数:   int n =cin.nextInt();         相当于   scanf("%d", &n);   或 cin >> n;


读一个字符串:String s =cin.next();         相当于   scanf("%s", s);    或 cin >> s;


读一个浮点数:double t =cin.nextDouble();   相当于  scanf("%lf", &t); 或 cin >> t;


读一整行:    String s = cin.nextLine();     相当于  gets(s);           或 cin.getline(...);


判断是否有下一个输入可以用cin.hasNext() 或 cin.hasNextInt() 或 cin.hasNextDouble() 等

输出:

输出str【任意类型】:System.out.println(str);【有换行】System.out.print(str);【无换行】

System.out.println(”str“);【输出字符串str】

三、大整数基础

赋值:BigInteger a=new BigInteger(String.valueOf(12));

大数类特殊函数:

判断相等:c.compareTo(BigDecimal.ZERO)==0【c等于】

判断大于:c.compareTo(BigDecimal.ZERO)>0 【c大于0】

判断小于:c.compareTo(BigDecimal.ZERO)<0 【c小于0】

修改格式:c.stripTrailingZeros().toPlainString();【c去除末尾0,并转换乘字符串】

BigInteger的函数:

构造:public BigInteger(Stringstr)【把string类型数据转变为大整数】

构造:public BigIntegerpow(BigDecimal b)【b次方】

加:public BigIntegeradd(BigInteger b)【加上b】

减:public BigIntegersubtract(BigInteger b)【减去b】

乘:public BigInteger multiply(BigInteger b)【乘b】

除:public BigIntegerdivided(BigInteger b)【除b】

最大值:public BigIntegermax(BigInteger a)【返回最大值】

最小值:public BigIntegermin(BigInteger a)【返回最小值】

除:public BigInteger []dividedandRemainder(BigInteger b)【除b,数组第一位是商,第二位是余数】

 

四、高精度小数基础

BigDecimal的函数:

构造:public BigDecimal(Stringstr)【把string类型数据转变为高精度数】

           public BigDecimal(int str)【把int 类型数据转变为大整数】

          public BigDecimal(double str)【把double类型数据转变为大整数】

次方:public BigDecimal pow(BigDecimal b)【b次方】

加:public BigDecimaladd(BigDecimal b)【加上b】

减:public BigDecimalsubtract(BigDecimal b)【减去b】

乘:public BigDecimalmultiply(BigDecimal b)【乘b】

除:public BigIntegerdivided(BigInteger b)【除b】

去前导0:n.stripTrailingZeros();

去后导0:n.


五. 字符串


字符串函数:

str.startWith("0").【以0开始】str.endWith("0")【以0结束】


String 类用来存储字符串,可以用charAt方法来取出其中某一字节,计数从0开始:

String a = "Hello";    // a.charAt(1) = 'e'

用substring方法可得到子串,如上例

System.out.println(a.substring(0, 4))     // output"Hell"

注意第2个参数位置上的字符不包括进来。这样做使得s.substring(a, b) 总是有 b-a个字符。

字符串连接可以直接用 + 号,如

String a = "Hello";
String b = "world";
System.out.println(a + ", " + b + "!");   // output "Hello, world!"

如想直接将字符串中的某字节改变,可以使用另外的StringBuffer类。

六、注意事项

(1)浮点数输出精确位控制

 DecimalFormat g = new DecimalFormat("0.00");   

 double a = 123.45678;  

System.out.println(g.format(a));        // 输出 123.46

还可用System.out.printf(“%.2f”,a);

(2) Java 里的数组有些变动,多维数组的内部其实都是指针,所以Java不支持fill多维数组。
     数组定义后必须初始化,如 int[] a = newint[100];

(3) 布尔类型为 boolean,只有true和false二值,在 if (...) / while (...) 等语句的条件中必须为boolean类型。
     在C/C++中的 if (n % 2) ... 在Java中无法编译通过。

(4) 下面在java.util包里Arrays类的几个方法可替代C/C++里的memset、qsort/sort和 bsearch:

Arrays.fill()
Arrays.sort()
Arrays.binarySearch()