运算符顺序
[]运算符
int[] array = {1,2,3,4}; //[] 声明一个数组
array[0] = 2; //[] 属性获取,下标所指内容
System.out.println(array);
System.out.println(array[2]);
int length = array.length; //获取数组长度
System.out.println(length);
运行结果
.运算符
()运算符
在算数逻辑里面遇到()要先运算()内的,在其他地方比如函数,()内的为形参列表。
!运算符
!运算符进行非运算
boolean t = true;
System.out.println(!t);
结果为 false。
~运算符
~运算符用于按位取反。
short i = 11;
System.out.println(~i);
++运算符
// ++ 后置++ 前置++
int a = 10;
int a1 = a++; // //temp = a; a ++; a1=temp;
int a2 = ++a; // a++; a2=a;
System.out.println(a1);
System.out.println(a2);
a++在运算时候,先取当前a的值,再进行自加操作。
++a在运算时候,先进行自加,再取当前的值。
- -运算符
、- -运算和++运算类似
/,*,%运算符
/运算符为除法运算,当两个数都为Int型的时候,为整除;当两个数之中有一个double或者float类型的时候,为算数除法。
double s = 14/3;
System.out.println(s);
s = 14.0/3;
System.out.println(s);
结果为
*运算符就是算数运算符中的X,运算规则也一样。
%运算符为取余运算符,其计算的两个数都必须为Int型。
int s = 10%3;
System.out.println(s);
结果
+,-运算符
+ - 运算符和数学中的+ - 相同
<<,>>,>>>运算符
<<运算符为左移位
每左移一位结果大多情况等于原数乘2。
byte s = 11;
System.out.println((byte)(s<<1));
结果为22。
原因是
在位数不足的情况下可能变成负数
byte s = 11;
System.out.println((byte)(s<<4));
结果我-80
原因为short只有8位,在左移过程中可能变成负数。
.>>运算符为右移位
每右移1为结果大约为整除2。
byte s = 11;
System.out.println((byte)(s>>1));
结果为5。
原因为
在位数不足的情况下可能变成0。
byte s = 11;
System.out.println((byte)(s>>4));
结果为0
原因为
.>>>运算符为无符号右移
相对于>>,>>>在右移的时候高位全部补0,所以对于正数来说>>和>>>没有区别,对于负数来说
int s=-1;
System.out.println(-1>>>1);
System.out.println(Integer.MAX_VALUE);
结果都为2147483647(int的最大值)
在其为-1时,无符号右移一位等于获取了其最大值。
原因
<,<=,>,>=,instanceof运算符
<,<=,>,>=皆为比较运算符,结果为boolean值。
Instanceof为比较类的一种运算符。
//instanceof 只能比较类(引用) 左边操作类声明的类型与右边操作类必须是同种类或有继承关系
String s=new String("javaisland");
String a = "ssss";
if(a instanceof String)
{
}
必须要有继承关系,不然java编译会不通过。
==,!=运算符
.==,表示的是是否相等,也是比较运算符,但是这个运算符在比较类的时候,比较的是类的引用。
!= 同上
&运算符
&运算符为按位与(1 1为1,其余为0),也为非中断式与。
public static void main(String[] args) {
byte a = 11;
byte b = 0;
//按位与
System.out.println(a&b);
//非中断式与
System.out.println(f1()&f2()&f3());
}
private static boolean f1() {
System.out.println("f1");
return true;
}
private static boolean f2() {
System.out.println("f2");
return false;
}
private static boolean f3() {
System.out.println("f3");
return true;
}
结果为
两个数与为0的原因为
打印出来f1,f2,f3的原因为,非中断式与在碰到false的时候并不会停止执行。
^运算符
^按位异或(一样的位0,不一样的为1)
byte a = 11;
byte b = 0;
//按位异或
System.out.println(a^b);
|运算符
| 按位或(见1为1),也为非中断式或。
public static void main(String[] args) {
byte a = 11;
byte b = 0;
//按位或
System.out.println(a|b);
//非中断或
System.out.println(f1()|f2()|f3());
}
private static boolean f1() {
System.out.println("f1");
return true;
}
private static boolean f2() {
System.out.println("f2");
return false;
}
private static boolean f3() {
System.out.println("f3");
return true;
}
结果为
按位或结果为11的原因为。
打印出来f1,f2,f3的原因为,非中断式或在碰到true的时候并不会停止执行。
&&运算符
中断式与,在碰到false的时候,后面的不执行
public static void main(String[] args) {
System.out.println(f1()&&f2()&&f3());
}
private static boolean f1() {
System.out.println("f1");
return true;
}
private static boolean f2() {
System.out.println("f2");
return false;
}
private static boolean f3() {
System.out.println("f3");
return true;
}
结果
||运算符
中断式或,在碰到true的时候,后面的不执行。
public static void main(String[] args) {
System.out.println(f1()||f2()||f3());
}
private static boolean f1() {
System.out.println("f1");
return true;
}
private static boolean f2() {
System.out.println("f2");
return false;
}
private static boolean f3() {
System.out.println("f3");
return true;
}
结果
?:运算符
System.out.println(1>2?1:2);
结果
表达式?结果1:结果2
如果表达式为真,输出结果1,负责为2。
混合赋值运算符
+=,-=,*=。。。。。。
//以+=为例子
int i =0;
i += 1;
System.out.println(i);
int t = 0;
t = t+1;
System.out.println(t);
上面的代码等于下面的代码,只是混合赋值运算符减少了一些代码的书写。
其他
函数简介
//int 当前方法的返回值
//Max2 函数名
//(int a,int b) 形式参数
//{ 方法体 }
//return 返回值
public static int Max2(int a,int b)
{
if(a>b)
{
return a;
}
else
{
return b;
}
}