最简单的应用程序
public class sample {
public static void main(String[] args){
System.out.println("We will not use 'Hello,World!'");
}
}
运算符
若参与运算的都为整数则进行整数除法:15/2等于7,余数为15%7=2
数学函数
import static java.lang.Math.*;
double a=121;
double b=sqrt(a);
System.out.println(b);//prints 11.0
double x=2;
double y=3;
double b=pow(x,y);
System.out.println(b);//prints 8.0
类型转换
double x=9.87;
int y=(int)x;
double x=9.87;
int y=(int) Math.round(x);
1.Math.round(x)计算9.87四舍五入的结果,得到10.0(注意,结果是long类型,但在这种情况下,可以看作是一个double值10.0,因为Math.round(double)的返回值在转换为long之前会被视为double,但实际上Java内部会处理为long,然后这里我们关心的是其数值,而不是类型)。
2.然后,(int) Math.round(x)将long类型的10(实际上是double值10.0被隐式转换为long,但在这个上下文中我们主要关注数值)转换为int类型的10。由于10在int类型的范围内,这个转换是安全的。
结合赋值
自增与自减
int x=6;
int y=6;
int a=2*++x;//now a=14,x=7
int b=2*y++;//now b=12,y=6
关系和boolean运算符
还有<(小于),>(大于),<=(小于等于),>=(大于等于)
比如e1&&e2若e1为false则结果必定为false,e2就不用判断了
这里,如果“条件”为真(true),则整个表达式的结果是“表达式1”的值;如果“条件”为假(false),则结果是“表达式2”的值。这个操作符使得在某些情况下,可以避免使用if-else语句,从而使代码更简洁。
位运算符
按位与(AND) - &
对于每一位,只有两个相应的位都为1时,结果位才为1,否则为0。
int a = 60; /* 60 = 0011 1100 */
int b = 13; /* 13 = 0000 1101 */
int c = a & b; /* 12 = 0000 1100 */v
按位或(OR) - |
int a = 60; /* 60 = 0011 1100 */
int b = 13; /* 13 = 0000 1101 */
int c = a | b; /* 61 = 0011 1101 */
按位异或(XOR) - ^
对于每一位,当两个相应的位不相同时,结果位为1;相同时,结果位为0。
int a = 60; /* 60 = 0011 1100 */
int b = 13; /* 13 = 0000 1101 */
int c = a ^ b; /* 49 = 0011 0001 */
按位取反(NOT) - ~
对数的二进制表示进行取反操作。注意,它实际上是对每一位进行取反,并可能改变数的符号(因为它包括符号位)。
int a = 60; /* 假设int是32位,60 = 0000 0000 0000 0000 0011 1100 */
int b = ~a; /* -61 = 1111 1111 1111 1111 1100 0011 */
左移(Shift Left) - <<
将数的各二进制位全部左移若干位,由符号“<<”右边的数指定移动的位数,高位丢弃,低位补0。
int a = 60; /* 60 = 0011 1100 */
int b = a << 2; /* 240 = 1111 0000 */
右移(Shift Right) - >>
将数的各二进制位全部右移若干位,由符号“>>”右边的数指定移动的位数,对于正数,左边高位补0;对于负数,左边补1(即符号位)。
int a = 60; /* 60 = 0011 1100 */
int b = a >> 2; /* 15 = 0000 1111 */
int c = -60; /* 假设int是32位, -60 = 1111 1111 1111 1111 1100 0100 */
int d = c >> 2; /* -15 = 1111 1111 1111 1111 1111 1001 */
无符号右移(Unsigned Shift Right) - >>>
与右移(>>)类似,但无符号右移(>>>)在移动过程中,无论是正数还是负数,其左边总是补0。这个操作符在处理无符号整数或需要忽略符号位的情况时非常有用。
int a = -60; /* 假设int是32位, -60 的二进制表示为 1111 1111 1111 1111 1100 0100 */
int b = a >>> 2; /* 1073741816 = 0011 1111 1111 1111 1111 1100 0100(忽略高位补零)*/