Java中的数据分为两大类:原始类型和引用类型;
1,原始类型:
byte:整型--字节型 1字节 8位 -2^8~2^8-1(-128~127)
short:整型--短整型 2字节 16位 -2^16~2^16(-32768~32767)
int:整型--普通整型 4字节 32位
long:整型--长整型 8字节 64位
float:浮点型--单精度浮点型 4字节 32位
double:浮点型--双精度浮点型 8字节 64位
char:字符型 2字节 16位 只能保存字符型
boolean:布尔型 1字节 8位 只能保存true或者false;或者一个
表达式
(1),字面量:认为给出的数据的值,是不会变得量;
- 使用字面量得原因:是将字面量和变量进行区分,字面量是给变量进行赋值的量;
- 整型:没有超过int数据范围的整型的字面量默认是int型;超过了int数据范围的long类型的是在数据后面加上L或者l;倒是l看起来像是1,所以一般是使用L来表示long的字面量;
- 浮点型:浮点型数据默认的是double为字面量;float表示的字面量是在数据的末尾加上F或者f;
(2),当数据超出范围的时候,超出的部分从数据的最小值开始继续增加;
byte b =(byte) 128; System.out.printf(b); //得到的结果是-128;
2,引用型数据类型:class,接口,数组;其中字符串属于类类型;
3,运算符:
(1),算数运算符:(需要两个操作数,是双目运算符)
+ 如果两边是数值型,表示两个数相加;如果相变是字符串,表示两个字符串拼接;如果前面是字符串,后面是数字,那表示字符串和数字拼接;如果前面是数字后面是字符串,那么显示数值运算,再拼接;
- 只能进行数值运算;
* 只能进行数值运算;
/ 只能进行数值运算,但是两个整数相除得到的只能是整数;
% 取余,进行数值运算,因为商为整数,那么小数也么取余数;
如果一个计算当中有多种数据进行运算,那么结果的数据类型为所占字节数最大的那种;
(2),关系运算符:
>
<
>=
<=
==
!=
关系运算符得返回值为Boolean;
"=="是用来对两个数进行值得比较;对引用型是比较比地址;
因此再比较两个字符串得时候要使用equals();
(3),逻辑运算符:
&&(与):两边为两个逻辑表达式,并且全真为真,一假则假;
||(或):两边为逻辑表达式,并且一真则真,全假为假;
!(非):(单目运算符):将逻辑表达式变为相反得;
(4),位运算符:
&:按位与:结果和&&相同;但是&&是短路运算符,(在第一个结果为假的时候)不计算第二个结果;
|:按位或:结果个||相同,但是||是短路运算符,在第一个结果为真的时候||不会计算第二个结果;
^:按位异或,将两个操作数换算为二进制,将相同的两位逐位进行运算,相同为0,不同为1;再将所得的二进制转换为十进制;不管消失的数字;不够的用0来补充;
>>:按位右移,将第一个操作数转换为二进制,再向右移动第二个操作数个位数,再将所得的二进制转换位十进制;不管消失的数字;不够的用0补充;
<<:按位左移:将第一个操作数转换位二进制,在左移第二个操作数个位数,再将得到的二进制数转换位十进制;
int b=5^2;//101 // 010 // 111 //等于7; int i=10>>2; //等于2;1010-->001010-->0010=2 int j=10<<2; //等于40;1010-->101000=8+32=40
在代码中合适的地方使用短路运算符可以提高代码的效率;
(5),赋值,复合运算符:
=
+=
-=
*=
/=
%=
运算过程:将符号两边的操作数进行对应的算数运算,再将所得的结果赋值给左边得操作数;
(6),自增自减运算符:(只有一个操作数,是单目运算符)
++
--
i++等同于i+=1;
自增自减运算符和其他配合使用时:
++在前,先自增后使用;
++在后,先使用后自增;
(7),条件运算符:(三目运算符)
表达式1>表达式2:表达式3;
当表达式1为true时,执行表达式2;当表达式1位false时,执行表达式3;
(8),运算符的优先级:( )>单目运算符>算数运算符>关系运算符>逻辑运算符>条件运算符>赋值运算符;
//这个例子比较好区分运算符之间的优先级: //判断一个年份是否是闰年: //条件是能被4整除,但是不能被100整除;或者能被400整除 String s = ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) ? "是闰年" : "不是闰年"; System.out.println(s);



