java数据类型和运算
一、在java中数据类型整体上分为两大类:
1、基本数据类型/原生的数据类型(共八个)
整数型:byte(占1字节),short(占2字节),int(占4字节),long(占8字节)。【byte,shuort,int,long 唯一不同就是存储空间容量大小不一样,根据具体需求存储的数据去选择合适的数据类型,一般选用int即可】
浮点型:float(占4字节),double(占8字节)
字符型:char(占2字节)
布尔型:boolean(占1位)
2、引用数据类型/对象数据类型
类、接口、数组
整数类型(byte,short,int,long)
整型常量的四种表示形式:
① 二进制整数:0B或0b开头(Java7的新特性),如:int a = 0B10100;
② 八进制整数:要求以0开头,如 int a = 0157;
③ 十进制整数:如:int a = 100;
④ 十六进制整数:要求0X或0x开头,如int a = 0xFFFFF123;
Java语言的整型常量默认是int型,声明long型变量后加上‘l’或‘L,因小写的l容易和数字1相混淆,建议使用大写L。
默认情况下,一个整型的字面量默认是int类型.
小数类型(float,double):
表示小数类型又称为浮点类型,其中float表示单精度类型,double表示双精度类型,但是二者都不能表示精确的小数。
Java的浮点类型常量有两种表现形式:
a,十进制形式: 例如:3.14 ,168.0, .618
b,科学计数法形式: 例如:3.14e2, 3.14E2, 1000E-2
科学计数法表达式返回的结果是double类型。
默认情况下,一个浮点类型的字面量默认是double类型.若要声明一个常量为float型,则需在常量后加上f 或 F,double常量后面的D或d可省略。
注意:Java里只有浮点型的变量才可以接受科学计算式结果.
字符类型(char):
字符,字母和符号.
char类型:表示16位的无符号整数或者Unicode字符,Java对字符采用Unicode字符编码。
Unicode收集了世界上所有语言文字中的符号,是一种跨平台的编码方式,Java的字符占两个字节,可以表示一个汉字。
char常量2中表示方法
1.直接把需要的字符赋值给变量,如: char a='A';
2.用十进制或者十六进制作为赋值,如 char a=65;得到的值为 'A'。
十六进制,如:char a='\u0041';
基本数据类型转换
在8大基本数据类型中,boolean不属于数值类型,不参与转换.
一般的,byte,short,char不参与转换操作.我们直接把byte,short,char直接付给int类型.
自动类型转换,也称为“隐式类型转换”:
当把小数据范围类型的数值或变量赋给另一个大数据范围类型变量,系统可以完成自动类型转型
byte b= 1; short s=b;//小转大 int i= s; long l=i; float f = l; double d= f; System.out.println(d); //1.0
强制类型转换,也称为“显示类型转换”:
当把大范围类型的数值或变量赋给另一个小范围类型变量时,此时系统不能自动完成转换,需要加上强制转换符,但这样的操作可能造成数据精度的降低或溢出,所以使用时要格外注意。
double d = 1.23d; int i =(int)d; System.out.println("result="+i); //result=1
表达式类型的自动提升当一个算术表达式中包含多个基本数据类型(boolean除外)的值时,整个算术表达式的数据类型将在数据运算时出现类型自动提升,其规则是:
所有的byte、short、char类型被自动提升到int类型;
二、算数运算
这里主要讨论下 ++和--
++和--详解: 都只能操作变量,不能操作常量.
++: 表示当前操作变量自己累加1.
--: 表示当前操作变量自己减去1.
--------------------------------------------------------------------
自增:++,递增操作符,使变量值增加1,有前置和后置之分,只能操作变量。
自减: -- ,递减操作符,使变量值减去1,有前置和后置之分,只能操作变量。
自增和自减具体操作是一样的,仅仅是一个是加1,一个是减1而已,现在单讲++:
代码 result ++和 ++result,都将使result变量的值加1。
唯一的区别是:
前置(++result): 表示对result加1之后的结果进行运算,
后置(result++): 表示对result变量加1之前的值(原始值)进行运算。
如果仅仅执行简单的递增操作(只写result++或++result),那么选用任意一个都可以。
比较运算符:
用于比较两个变量或常量之间的关系,比较运算符的结果是boolean类型,其操作格式为:
boolean result = 表达式A 比较运算符 表达式B;
三元运算符:
语法格式:X ? Y :Z;
其中x为boolean类型表达式,先计算X的值,若X结果为true则整个三目运算表达式的结果是Y,否则就是Z。三目运算符结果的类型由Y和Z决定。
逻辑运算符:
&:表示并且,当操作数A和B都为true结果才为true,否则结果result 是false。
&&:和&结果相同,具有短路效果,如果左边操作数A是false,result 一定为false,且不运行B的运算。
|:表示或者,A和B都为false结果result为false,只要有A或B是true,结果就是true。
||:和|结果相同,具有短路效果,如果左边操作数A是true,result一定为true,且不运行B的运算。
^:判断A和B是否不同,不同则为true,相同则为false。
!:取反,!true结果是false,!fasle结果是true。
位运算符:
<<:将操作数的二进制码整体左移指定位数,左移之后的空使用“0”来补充。
>>:将操作数的二进制码整体右移指定位数,右移之后的空使用“符号位”来补充:
若是正数使用“0”补充;
若是负数使用“1”补充;(操作负数:取反,求补,操作,取反,求补)
>>>:将操作数的二进制码整体右移指定位数,右移之后的空位使用“0”来补充。
运算符操作的优先级: