String str="a" 注意这里的a是字符串类型 并且 ""也是一个字符串,只不过是空字符串
数据类型转换:
小数据类型-------------》大数据类型 不会报错 自动类型转换
大数据类型-------------》小数据类型 可能会损失精度 (强制类型转换)
强制数据类型转换的格式:
小数据类型 变量名 = (小数据类型)大数据类型
在计算机组成原理中,如果一个数是负数,那么其最高位肯定是1,如果是正数,那么最高位是0。 负数在计算机中储存的是补码。
sun公司开发一个函数 Integer.toBinaryString() 来查看一个数据的二进制形式
所以输出结果为
求一个数的补码 :如果为正数,那么补码为原码,如果为负数,那么除符号位外,取反加一。
如何通过一个数的补码,如何求原来的数:思路就是求补码的补码。
数据类型转换需要注意的细节:
1.凡是byte,short,char数据类型 数据在运算时候都会自动 转换成int类型的数据再运算。
2.两个不同数据类型的数据再运算的时候,结果取决于大的数据类型。
Java中的算术运算符 + - * / % ++ --
其中 + 有三种作用 (正数 加法 连接符)
连接符的作用:让任何类型的数据都可以与字符串进行拼接。 注意:任何类型的数据与字符串使用连接符连接,那么结果都是字符串类型的数据。
其中 / (整除) % (取模,取余数) 在Java中做取模运算时,结果取决于被除数,-10%3=-1 10%3=1
++ 中后自增在jvm中的运行原理: int temp=i;
i=i+1;
return temp;
例:int i=0;i=i++;i最后为多少 答案 0
根据运行原理,i经历了多次变化,初始为0;自增为1;后来返回temp赋给i,使得i变回0。
i=0————————》1————————》0
赋值运算符:= (赋值运算符) += -= *= /= %=
比较运算符: == > < >= <= !=
==(判断是否等于) ==用于比较两个基本数据类型的时候,比较的是两个变量所存储的值是否一致。
==用于比较两个引用数据类型变量的时候,比较的是两个引用类型变量所记录的内存地址是否一致。
逻辑运算符:&(与) | (或) ^(异或) !(非) &&(短路与\双与) ||(短路或\双或)
短路与与单与的区别:其运算结果是一样的,但是,使用短路与的时候,如果左边的布尔表达式为false,则不会运算右边的布尔表达式,从而提高了效率。使用单与的时候,即使左边的布尔表达式为false,还是会运算右边的布尔表达式的。 注意:只有左边的布尔表达式为false时,双与的效率才高于单与。
位运算符:直接操纵二进制位的。
& (与)
| (或)
^ (异或)
~ (取反)
根据此规律,可以对文件进行加密。
交换两个变量的三种方法:
1.定义第三个变量 temp=a;a=b; b=temp; 缺点:定义第三方变量
2.相加法 a=a+b; b=a-b; a=a-b; 缺点:两个int类型的数据相加,有可能会出现超出int的表示范围
3.异或 a=a^b;b=a^b;a=a^b; 缺点:逻辑不清晰
移位运算符:
<<(左移) 规律:一个操作数进行左移运算的时候,实际上就是等于操作数乘以 2的n次方,n为左移的位数。
>>(右移) 一个操作数在尽心右移运算时候,如果该操作数是正数,那么左边空缺位使用0补,如果是负数,就用1补。
规律:一个操作数进行右移运算的时候,实际上就是等于操作数除以 2的n次方,n为左移的位数。 3/2(1)=1 3/2(2)=0
>>>(无符号右移) 不论操作数是正数还是负数,左边的空缺位都用0补。
三元运算符(三目运算符): 格式: 布尔表达式? 值1:值2;
注意:使用三元运算符的时候,一定要使用其返回的结果,或者是定义一个变量接受其返回的结果。
if 语句
if (){
符合条件执行的语句
}else if(){
符合这个条件执行的语句
}.......else{
都不符合执行的语句
}