java学习笔记_课时二_java基本数据类型与运算符

课时二,我们正式开始学习java相关语法,数据类型等知识。
1、数据类型
java的基本数据类型共九种,我们通过表格的形式展现

Type Size Range
byte 8 -128~127
short 16 -2^15 ~ 2^15-1
int 32 -2^31 ~ 2^31-1
long 64 -2^64 ~ 2^64-1
boolean 8 true false
char 16 0~65535
float 32 符号(1)+阶码(8)+尾数(23)
double 64 符号(1)+阶码(11)+尾数(54)

这里我们着重讲几个数据类型。
boolean
这是布尔类型,在c/c++里由bool关键字确定。在java中,这种类型的返回值与c/c++有一些区别。在c/c++中,真值为1,假值为0,也就是说true=1,false=0。而在java中,boolean的返回值只有true与false,也就是说他们不等于数值。
char
这是字符类型,与c/c++的关键字相同,但c/c++中的char是8位,而java中的char类型却是16位,这是由于编码的不同引起的,java采用UNICODE字符集进行编码,在这种编码方式中,16位恰好能完全表示99%的常用汉字与英文字母等,所以在java中采用16位的char。
整型常量
很显然,他与变量相对,如

int i=16;//16就是整型常量

这里要注意几点:
1、默认类型为int,当然你也可以定义为long、short、byte型。
2、表示方式
如 12 的表示方式
十进制 12
八进制 014
十六进制 0xc
3、long型常量定义
注意一下语法格式:

long tl=123L;

char型常量
1、表示方式
直接给值:

char c1=65;//这种方式仅适用于单个字符,不适用于字符串,值的范围在0-65535之间

字符给值:

char c2='啊';

八进制给值:

char c3='\081';//反斜杠为转义字符,ASCLL码

十六进制给值:

char c4='\u1234';//UNICODE字符集

注意八进制与十六进制给值时编码方式的不同。
2、java中判断汉字的方法
敲黑板,这里公司面试有考过哦
在java中,根据UNICODE字符集编码,十六进制’\u4e00’~’\u9fa5’判为汉字。
3、自动类型转换
既然讲到了数据类型,就不免要提到数据类型之间的转换。转换分为强制转换和自动转换。显然,在不能自动转换的情况下,我们又需要转换,就使用强制类型转换。
强转语法:

int i=65;
char c=(char)i;

自转规则(->表示转换方向):
byte->除char外所有类型;
short->除byte与char之外所有;
int->long,float,double;
long->float,double;
float->double;
char->int,long,float,double;
这里要注意,自转并不是百分百安全的,仍要注意精度丢失的问题,比如int有效位数是32位,而float有效位数只有23位,转换存在精度丢失的问题。
3、运算符
与c/c++大同小异,这里只讲几个重要的
%取余运算符
要注意符号问题,结果符号与被除数符号一致。
3%2=1;
-3%2=-1;
-3%-2=-1;
3%-2=1;
+加号运算符
a=b+f;
+号左右两数至少为int型,低于int转为int进行运算;
例题:

byte ba=0;
ba=2+ba;

java编译会报错,原因是,在计算2+ba时,按照int+int进行计算,结果一定是int型,而ba是byte型,int到byte不能自动转换。
修改(强制类型转换):

byte ba=0;
ba=(byte)(2+ba);

>>算术右移
这里主要区分一下算数右移与逻辑右移:
算术右移,移动完之后,在左边补上符号位;
逻辑右移,移动完之后,在左边补0;
算术右移n位,等于原数/2^n;
那么逻辑左移与算数左移呢,emmm逻辑左移=算数左移,移动完之后,右边都补0;相当于原数*2^n;但是要注意数据溢出的问题哦。
思考一下
-1>>1=?;-1>>n=?
答案都是 -1。
解析:-1(B)=11111…1111;不论怎么右移,左边补符号位,还是1111…1111;所以-1>>n=-1;
再思考一下

byte b1;
b1+=1;
b1=b1+1;

这两行代码一样吗?
答案: 第二行代码不报错,第三行代码报错。
解析:第三行代码上面解释过,将int型结果赋值给byte型,由于不存在int到byte的自转,会报错,而第二行代码等价于b1=(byte)(b1+1);进行了强制转换,所以不会报错。但如果循环的话仍然要注意数据溢出的问题哦。

猜你喜欢

转载自blog.csdn.net/NiZjiTouA/article/details/88618770