开头
首先,有几点需要注意的
名词大致对应关系(Java —> C的对应关系,单纯针对没学过C++的同学,学过C++可无视)
- 方法 —> 函数
- 成员变量 —> 变量
- 一个xxx对象 —> 一个xxx结构体变量 + 处理这个变量的函数集合
- xxx的成员函数 —> 可以对xxx结构体内的变量进行操作的一类函数
在 ACM 中提交 Java 的类名必须是 Main,且不包含包名.
一般来说 Java 提交的代码格式都是这样
1 | //常用的工具类,包括输入等 |
而大数处理就需要用到 java.math 中的 BigInteger类 和BigDecimal类. 其中,BigInteger用于处理大整数, BigDecimal 用于处理浮点数
在 Java 中,你完全可以使用 C/C++ 的语法,但是要注意一点: bool类型在 Java 中是Boolean,而且不能用0,1一类的数值赋值,只能用 true/false.如下:
1 | public class Main { |
对于基本型变量(int,char,byte,float一类),在 Java 中是值传递的(对比 C/C++中的 = 号).但是对于对象却是用的引用传递(类似指针的一个东西)
也就是说在对象中,对于对象的赋值最好不直接用 = 进行赋值,而是用自己写的方法(如BigInteger中的13-15行)进行赋值.因为在某个版本的库中如果返回的不是一个 new 的对象的话就相当于 C/C++ 中2个指针指向了同一处地址
通用
比较
BigInteger 和 BigDecimal的数值比较都需要用到 compareTo 方法.需要注意的是,该方法返回的是 int 类型.也就是说不能用if(a.compareTo(b))的形式.(前面讲过int不能用于对Boolean赋值,所以不能将其隐式转换为Boolean)
通常,我们都用以下语句进行判断
1 | if(x.compareTo(y) <op> 0)//其中 <op> 是六个比较运算符之一,如 >, <, =。 |
示例
1 | import java.math.BigDecimal; |
BigInteger
1 | /** |
BigDecimal
1 | /** |

