变量

变量名必须是一个以字母开头并由字母或数字构成的序列。

’+‘和 '©’这样的符号不能出现在变量名中,空格也不行。变量名中所有的字符都是有 意义的,并且大小写敏感。变M名的长度基本上没有限制。

[注]  尽管 $ 是一个合法的 Java 字符, 但不要在你自己的代码中使用这个字符。它只用 在 Java 编译器或其他工具生成的名字中。如果想要知道哪些 Unicode 字符属于 Java 中的“ 字母”, 可以使用 Character 类的 isJavaldentifierStart 和 isJavaldentifierPart 方法来检查。

 

常量

在 Java中, 利用关键字 final指示常量。

关键字 final 表示这个变量只能被赋值一次。一旦被赋值之后,就不能够再更改了。习惯上, 常量名使用全大写。

 

[注]  const 是 Java 保留的关键字,但目前并没有使用。在 Java 中, 必须使用 final 定义常量

 

运算符

在 Java中,使用算术运算符 +、-、 *、/ 表示加、减、乘、除运算。 当参与 / 运算的两个 操作数都是整数时, 表示整数除法;否则, 表示浮点除法。整数的求余操作(有时称为取模) 用 % 表示。例如,15/2 等于 7,15%2 等于 1, 15.0/2 等于 7.50。

[注]  整数被 0除将会产生一个异常, 而浮点数被 0 除将会得到无穷大或 NaN结果。

 

以下运算: double w = x * y / z; 很多 Inte丨处理器计算 x * y,并且将结果存储在 80 位的寄存器中, 再除以 z 并将结 果截断为 64 位。

 

对于使用 strictfj) 关键字标记的方法必须使用严格的浮点计算来生成可再生的结果。例如,可以把 main 方法标记为

 public static strictfp void main(String[] args) 

于是, 在 main 方法中的所有指令都将使用严格的浮点计算。如果将一个类标记为 strictfp, 这个类中的所有方法都要使用严格的浮点计算。

整数与浮点数运算:

整数运算:

  1. 如果两个操作数有一个为long,则结果为long。

  2. 没有long时,结果为int,即使操作数全为short,byte,结果也是int。

浮点数运算

  1. 如果两个操作数有一个为double,则结果为double。

  2. 只有两个操作数都是float,则结果才为float。

数学函数与常量

要想计算一个数值的平方根, 可以使用 sqrt 方法:

double x = 4; 
​
double y = Math.sqrt(x); 
​
System.out.println(y); // prints 2.0 El 

  

[注释]  println 方法和 sqrt 方法存在微小的差异。println 方法处理 System.out 对象。但是, Math 类中的 sqrt 方法处理的不是对象,这样的方法被称为静态方法。

 

floorMod(time, 12) 总会得到一个 0 ~ 11 之间的数。(遗憾的是,对于负除数,floorMod 会得到负数结果,不过这种情况在 实际中很少出现。)

 

Math 类提供了一些常用的三角函数:

Math,sin

Math.cos

Math.tan

Math.atan

Math.atan2

还有指数函数以及它的反函数— —自然对数以及以 10 为底的对数:

Math.exp

Math.log

Math.loglO

最后,Java 还提供了两个用于表示 TC 和 e 常量的近似值:

Math.PI

Math.E

 

[注]  不必在数学方法名和常量名前添加前缀“ Math”,只要在源文件的顶部加上下面 这行代码就可以了。
import static java.1ang.Math.*;
​
System.out.println("The square root of \u03C0 is " + sqrt(PI));

 

在 Math 类中, 为了达到最快的性能, 所有的方法都使用计算机浮点单元中的例 程.. 如果得到一个完全可预测的结果比运行速度更重要的话, 那么就应该使用 StrictMath 类,,它使用“ 自由发布的 Math 库”(fdlibm) 实现算法, 以确保在所有平台上得到相同的 ? 果n 有关这些算法的源代码请参看 www.netlib.org/fdlibm ( 当 fdlibm 为一个函数提供了 多个定义时, StrictMath 类就会遵循 IEEE 754 版本,它的名字将以“ e” 开头)。

 

数值类型之间的转换

当使用上面两个数值进行二元操作时(例如 n + f,n 是整数,f 是浮点数), 先要将两个操作数转换为同一种类型,然后再进行计算。

•如果两个操作数中有一个是 double 类型, 另一个操作数就会转换为 double 类型。

•否则,如果其中一个操作数是 float 类型,另一个操作数将会转换为 float 类型。

•否则, 如果其中一个操作数是 long 类型, 另一个操作数将会转换为 long 类型。

•否则, 两个操作数都将被转换为 int 类型。

强制类型转换

一般是将取值范围小的转换为取值范围大的,如:将int型转换为long,或者转换为float型 or double型,在转换常量类型时必须保证该数没有超出所转换后类型的取值范围。

[注]  如果试图将一个数值从一种类型强制转换为另一种类型, 而又超出了目标类型的 表示范围,结果就会截断成一个完全不同的值。例如,(byte) 300 的实际值为 44。

结合赋值和运算符

如果运算符得到一个值, 其类型与左侧操作数的类型不同, 就会发生强制类型转 换。 例如,如果 X 是一个 int, 则以下语句 x += 3.5; 是合法的, 将把 X 设置为(int)(x+ 3.5)。

自增与自减运算符

int x=1;
System.out.println(++x);//输出结果为2
System.out.println(x++);//输出结果为1

 

关系和 boolean 运算符

3==7 结果为false; 3!=7 结果为true;

还有经常使用的 <(小于)、> (大于)、<=(小于等于)和 >=(大于等于)运算符。

Java 沿用了 C++ 的做法,使用 && 表示逻辑“ 与” 运算符,使用丨 | 表示逻辑“ 或” 运算 符。从 != 运算符可以想到,感叹号!就是逻辑非运算符。&& 和丨 |运算符是按照“ 短路” 方 式来求值的: 如果第一个操作数已经能够确定表达式的值,第二个操作数就不必计算了。

 

最后一点,Java 支持三元操作符? :,这个操作符有时很有用。

如果条件为 true, 下面的 表达式

condition ? expressioni : expression

就为第一个表达式的值,否则计算为第二个表达式的值。

例如,

x < y ? x : y

会返回 x 和 y中较小的一个。

 

位运算符

位运算符包括: & ("and") | ("or") ^ ("XOr") ~("not")

这些运算符按位模式处理。

例如, 如果 n 是一个整数变量,而且用二进制表示的 n从右 边数第 4 位为 1,则

 int fourthBitFromRight = (n & OblOOO) / OblOOO;

会返回 1,否则返回 0。利用 & 并结合使用适当的 2 的幂, 可以把其他位掩掉, 而只保留其 中的某一位。

[警告]  移位运算符的右操作数要完成模 32 的运算(除非左操作数是 long 类型, 在这种情 况下需要对右操作數模 64 )。 例如,1«35 的值等同于 1«3 或 8。

 

由于 && 的优先级比 || 的优先级高, 所以表达式

a && b || c 等价于 (a M b) 11 c 又因为+= 是右结合运算符, 所以表达式

a += b += c 等价于

a += (b += c)

也就是将 b+= c 的结果(加上 c 之后的 b) 加到 a 上。

 

与 C 或 C++ 不同,Java 不使用逗号运算符。不过, 可以在 foi■ 语句的第 1 和 第 3 部分中使用逗号分隔表达式列表。 

枚举类型

枚举类型包括有限个命名的值。 例如,

enum Size {SMALL, MEDIUM, LARGE, EXTRA.LARCE}; 

现在,可以声明这种类型的变量:

Size s = Size.MEDIUM; 

 

Size类型的变量只能存储这个类型声明中给定的某个枚举值,或者 null 值,null 表示这 个变量没有设置任何值

 

字符串

可以使用 equals方法检测两个字符串是否相等。对于表达式:

s.equals(t)

如果字符串 s 与字符串 t 相等, 则返回 true ; 否则, 返回 false。需要注意,s与 t 可以是字符串变量, 也可以是字符串字面量。

空串 "" 是长度为 0 的字符串。可以调用以下代码检查一个字符串是否为空:

if (str.lengthQ = 0)

if (str.equals(""))

空串是一个 Java 对象, 有自己的串长度(0 ) 和内容(空) 。不过,String 变量还可以存 放一个特殊的值, 名为 null, 这表示目前没有任何对象与该变量关联。要检查一个字符串是否为 null, 要使用以下条件:

if (str == null)

有时要检查一个字符串既不是 null 也不为空串,这种情况下就需要使用以下条件:

if (str != null && str.lengthO != 0)

首先要检查str 不为 null。 如果在一个 null值上调用方法, 会出现 错误。

posted on 2020-08-04 23:18  ♌南墙  阅读(187)  评论(0)    收藏  举报