小知识
C++中bool型值为0表示false, 非0为true,但是java中不允许这样,如if (x = 0) 会报错1
2
3Math.sqrt(); //求平方根
Math.PI //3.1415926...
Math.E //自然常数e(2.71828...)
$import static java.lang.Math.*$
使用上述语句就不必再数学方法名和常量名前添加前缀”Math.”
强制转换
1 | double x = 9.97; |
强制转换通过截断小数部分奖将浮点数转化为整型,若需要四舍五入可以使用 Math.round1
int nx = (int)Math.round(x); //nx=10
$Math.round()$返回的是long型,因此还需要强制转化才能变成int型
java中不使用逗号表达式,不过可以在for 循环中用逗号隔开表达式
String
1 | String a = "Hello"; |
检查两个字符串是否相等 可以用 equals方法
如 $s.equals(t)$ 如果s串与t串相等返回true, 否则返回false,
s和t可以是字符串变量也可以是字符串常量
如”Hello”.equals(a) 也是合法的,如果检测是否相等时不区分大小写,
可以用 $equalsIgnoreCase()$
注意:不要用’==’来检测两个字符串是否相等,这个运算只能确定两个字符串是否放在同一位置
两个字符串放在同一位置必然相等,但可能两个字符串内容相等,
但不在同一位置,用这个方法会返回false
java中的 compareTo()方法与c++中的strcmp()完全类似,
如 if (s.compareTo(“Hello”) == 0) …
空串与null
空串是长度为0的字符串可以用s.length()或s.equals(“”)来判断
空串是一个java对象,有自己的长度(0)和内容(空)
Null串表示目前没有任何对象与该变量关联,不能使用
可以用 if (s == null) 来判断,若s == null,s调用s.length()会报错
标准输入
1 | import java.util.Scanner; |
标准输出
1 | System.Out.print(); //不会自动换行 |
注:因为输入是可见的,所以Scanner 类不适用于从控制台读取密码
Java SE 6 特别引入了 Console 类来实现这个目的。读取密码可以采用:1
2
3Console cons = System.console();
String username = cons.readLine("User name:");
char[] passord = cons.readPassord("Passord:");
为了安全起见,返回的密码存在一维字符数组中,而不是字符串中,在对密码进行处理后,
应马上用一个填充值覆盖数组元素。
块
块(即复合语句)是指有一对花括号括起来的若干条简单的Java语句,块确定了变量的作用域
一个块可以嵌套在另一个块中,但是不能在嵌套的两个块中重复定义声明同一变量。
在C++中可以在嵌套的块中重复定义同一变量,在内层定义的变量会覆盖外层定义的变量。
这样有可能导致程序设计错误,因此在Java中不允许。
大数值
java.math包中有两个类BigInteger和BigDecimal.前者实现了任意精度的整数运算,后者提供了任意精度的浮点数运算.1
2
3
4
5
6
7
8
9import java.math.*;
BigInteger a=BigIntger.valueOf(100); //将普通数转化为大数
BigInteger c=a.add(b); //c=a+b;
BigInteger d=c.multiply(b.add(BigInteger.valueOf(2))); //d=c*(b+2)
BigInteger subtract(BigInteger other); //减
BigInteger divide(BigInteger other); //除
BigInteger mod(BigInteger other); //取余
int compareTo(BigInteger other); //比较大小
//相等返回0,这个大数比另一个大返回正数,否则返回负数