Java运算符
算术运算符 '+' '-' '*' '/' '%' '++' '--'
关系运算符 '>' '<' '<=' '>=' '==' 返回值为 boolean类型(false true)
逻辑运算符 '&&' '||' (短路运算符) '!' 返回值为boolean类型
位运算符 '&' (按位与运算) '|' (按位或运算) '~' '^' '>>' '<<' '>>>' (位运算均操作于二进制补码)
10&7 return 2
'&' 两个位都为1时 返回1 ; 如果其中有一位为0时 返回0
0000 1010
0000 0111
0000 0010
10|7 return 15
'|' 有一位为1时 返回1; 两位同时为0时 返回0
0000 1010
0000 0111
0000 1111
~ 10 return -11
'~' 补码各位取反
[10]源码0000 1010
[10]补码0000 1010
各位取反1111 0101
此时返回的源码1000 1011 即 -11
(异或)10^7 return 13
'^' 相同返回 0 不同返回 1
0000 1010
0000 0111
0000 1101
‘>>’ ‘<’< 运算符将二进制位进行右移或左移操作(除2 或 乘 2)
‘>>>’ 运算符将用0填充空位 ‘>>’ 用符号位填充 (注 没有’<<<’ )
变量的定义方式
直接定义
先声明后赋值
Java语句
顺序语句
分支语句 if-else switch-case
循环语句
Switch-case (整型 字符串 枚举) (case语句中需要加入break; 否则会默认执行后面的case语句,直到遇到一个break为止)
三目运算符
boolean-exp ? value 0 : value 1 ;
判断boolean-exp 的结果 如果为true 执行value 0 否则执行value 1
运算符优先级
优先级 | 运算符 | 结合性 |
1 | () [] . | 从左到右 |
2 | ! +(正) -(负) ~ ++ — | 从右向左 |
3 | * / % | 从左向右 |
4 | +(加) -(减) | 从左向右 |
5 | << >> >>> | 从左向右 |
6 | < <= > >= instanceof | 从左向右 |
7 | == != | 从左向右 |
8 | &(按位与) | 从左向右 |
9 | ^ | 从左向右 |
10 | | | 从左向右 |
11 | && | 从左向右 |
12 | || | 从左向右 |
13 | ?: | 从右向左 |
14 | = += -= *= /= %= &= |= ^= ~= <<= >>= >>>= | 从右向左 |
1、 该表中优先级按照从高到低的顺序书写,也就是优先级为1的优先级最高,优先级14的优先级最低。
2、 结合性是指运算符结合的顺序,通常都是从左到右。从右向左的运算符最典型的就是负号,例如3+-4,则意义为3加-4,符号首先和运算符右侧的内容结合。
3、 instanceof作用是判断对象是否为某个类或接口类型。
4、 注意区分正负号和加减号,以及按位与和逻辑与的区别
形式参数
实际参数
Jvm内存 Java栈 java堆 方法去 本地方法区 PC寄存器
堆:
1.存储的全部是对象,每个对象都包含一个与之对应的class的信息。(class的目的是得到操作指令)
2.jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身
栈:
1.每个线程包含一个栈区,栈中只保存基础数据类型的对象和自定义对象的引用(不是对象),对象都存放在堆区中
2.每个栈中的数据(原始类型和对象引用)都是私有的,其他栈不能访问。
3.栈分为3个部分:基本类型变量区、执行环境上下文、操作指令区(存放操作指令)。
方法区:
1.又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量。
2.方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量。
参考推荐
https://my.oschina.net/wangsifangyuan/blog/711329
参看文献: