Java 3:变量、运算符(优先级)
来源:互联网 发布:做杂志的软件 编辑:程序博客网 时间:2024/05/17 03:10
变量
Java中不区分变量的声明和定义,不可以使用未初始化的变量;
<<左移,左移时右端填充0,不影响符号位
int i,j=0;//这样只有j赋值,i并没有初始化
final常量
final常量的声明和赋值可以分开,类中的final变量可以在构造函数中定义,但是不能在构造函数结束后还没有赋值。
fianl只能被赋值一次,习惯上使用全大写
class A{ final int a; A(){ a=1; }}//正确
class A{ final int a=1; A(){}}正确class A{ public static void aaa(){ final int v; }}//作为局部变量,正确,只要不操作v,就不报错class A{ final int a=1; A(){ a=1; }}//错误,一旦定义,不能再对常量赋值
一个类的变量声明为public,则其他类的方法可以直接使用(对象名.变量名,如果是static变量,可以类名.变量名)
运算符
整数除以0,报错
浮点数除以0,得到无穷大(Infinity)或NaN
&&、||采用短路方法,第二个操作数可以不计算
&、| 也可以应用于布尔运算,但是不短路
位运算符
包括:&、|、^、~
^会将符号位也考虑在内
~0b100=-5(取反时包括符号位一起取反,然后当做补码计算真值)
取得一个整数的每一位
public static void main(String[] args) {int a=0b110011;for(int i=6;i>0;i--){System.out.print(judge(a,i));}}public static int judge(int number,int wei){int s=1<<(wei-1);//左移,左移一位相当于乘以2int result=(number&s)/s;//需要判别的一位不变,其余置0,再将这一位移到最右位return result;}
byte a=(byte) 0b00110011;byte b=(byte) 0b10000011;System.out.println(a&b);//符号位也要与一下,或一下
<<左移,左移时右端填充0,不影响符号位
>>右移,用符号位填充高位,移2位就前面加两个符号位
>>>右移,用0填充高位
移位运算右侧参数需要模32(除了long是模64),就是说对于int或short,移位33=移位1
移位运算不能对浮点数进行
byte a=(byte) 0b00001111;//正数,>>和>>>一样System.out.println(a>>>1);System.out.println(a>>1);//都输出7byte a=(byte) 0b10001111;//负数System.out.println(a>>>1);//2147483591 ??System.out.println(a>>1);-(0111000+1)=-57//所以,>>填充符号位反倒好算,>>>怎么弄的
short a= -0b111;//-7(先计算0b111=7,然后加的负号) 补码是:符号:1 中间全1 最后0011 1..1 001System.out.println(a>>>1);1 1...1 00 取反:1 0..0 11 加1=-100=-4System.out.println(a>>1);//2147483644,看来负数不能随便移动System.out.println(a>>2);//1 1...1 0 取反 1 0...0 1 加1=-10=-2
优先级
a+=b+=c 等价于 a+=(b+=c),因为+=是右结合运算符
[ ] . (方法调用) ! ~ ++ -- +-(正负号)()(强转)new从右向左* / % + - << >> >>> < <= > >= instanceof == != & ^ | && || ?:从右向左= += -= *= %=&=^=<<=>>=从右向左
数学运算符的优先级大于逻辑
int a=0b1;System.out.println(a<<1+1);//输出100=4,+优先级更高
数学运算符的优先级大于逻辑
一元操作符优先级比较大
0 0
- Java 3:变量、运算符(优先级)
- JAVA中的标识符、变量、关键字、变量、常量、运算符、优先级
- 运算符优先级-Java 运算符优先级
- java 运算符优先级
- Java 运算符优先级
- java运算符优先级
- Java运算符优先级
- Java运算符优先级
- Java运算符优先级
- Java 运算符优先级
- java运算符优先级
- java运算符优先级
- java 运算符优先级
- java运算符优先级
- JAVA运算符优先级
- java 运算符优先级
- Java运算符优先级
- java 运算符优先级
- 使用dom4j解析、增删改xml文档,xPath技和SAX解析
- LeetCode : 485. Max Consecutive Ones
- java 实现操作mongodb的连接,增删查改
- anaconda环境下安装python包
- ZeroMQ研究与应用分析
- Java 3:变量、运算符(优先级)
- 解决Setting property 'source' to 'org.eclipse.jst.jee.server的问题
- Python入门(四):函数
- PAT A1022. Digital Library (30)
- Python 2.7 GUI 编程集成开发环境的搭建 Python 2.7 + PyQt 4 + Eric 6 环境搭建
- 使用 springMVC 请求Action 返回400编码
- CGI跟我学
- 最大匹配(1)--poj3041(最大匹配的应用 最大匹配=最小点覆盖数)
- 关于DIV垂直居中