Java基础知识(二)——数据类型
文章目录
一、数据类型划分
二、基本数据类型
byte:8位,最大存储数据量是255,存放的数据范围是-128~127之间。
short:16位,最大数据存储量是65536,数据范围是-32768~32767之间。
int:32位,最大数据存储容量是2的32次方减1,数据范围是负的2的31次方到正的2的31次方减1。
long:64位,最大数据存储容量是2的64次方减1,数据范围为负的2的63次方到正的2的63次方减1。
float:32位,数据范围在3.4e-45~1.4e38,直接赋值时必须在数字后加上f或F。
double:64位,数据范围在4.9e-324~1.8e308,赋值时可以加d或D也可以不加。
boolean:只有true和false两个取值。
char:16位,存储Unicode码,用单引号赋值。
注:
通常情况下表示整数使用int;
表达小数使用double;
描述日期时间数字或者表示文件或内存的大小(以字节为单元)使用long;
实现内容传递(IO操作、网络编程)、或者编码转换使用byte;
实现逻辑控制使用Boolean(ture、false);
处理中文使用char。
整数类型
当数据不带有小数或分数时可声明为整数变量,整数变量包括long、int、short、byte。
eg:
short sum; //声明sum为短整型
数据的溢出
当数据的大小超过了可以表示的范围,程序中未做数值范围的检查时,该变量输出的值将紊乱。最大值加1变为最小值,最大值加2变为次小值。
为避免int类型的溢出,可在任意常量后加L,或者在变量前加上long作为数据类型的强制转换。
eg.
public class Test{
public static void main(String[] args){
int max = Integer.MAX_VALUE; //得到最大值
System.out.println("最大值"+max); //输出最大值
System.out.println("最大值+1"+(max+1)); //最大值加1
System.out.println("最大值+2"+(max+2L)); //最大值加2,变为long型
System.out.println("最大值+2"+((long)max+2); //最大值加2,强制转换为long型
}
}
字符类型
浮点数类型与双精度浮点数类型
单精度浮点数:单精度浮点数在机内占4个字节;单精度浮点数有效数字8位;单精度浮点的表示范围:-3.40E+38 ~ +3.40E+38
双精度浮点数:单精度浮点数在机内占8个字节;单精度浮点数有效数字16位;双精度浮点的表示范围:-1.79E+308 ~ +1.79E+308
使用浮点数时默认为double类型,如果需要使用float类型需要提前声明
eg:
double num; //声明num为双精度浮点数
float sum = 3.0F; //声明sum为单精度浮点数且初始值为3.0
布尔类型
当一个变量被定义为布尔类型时其值只能为true或者false
eg:
public class Test{
public static void main(String[] args){
boolean flag = true; //声明布尔变量flag,并赋值为true
System.out.println("flag = "+flag);
}
}
基本数据类型的默认值
三、数据类型的转换
数据类型转换的条件
1、转换前后的数据类型相互兼容
2、转换后的数据类型的表示范围大于转换前的数据类型的表示范围
数据类型的强制转换
格式
(欲转换的数据类型)变量名称;
eg.
public class Test{
public static void main(String[] args){
float f = 30.3f;
int x = (int)f; //强制转换为int型
System.out.println("x = "+ x);
System.out.println("10/3="+((float)10/3)); //常量计算使用强制转换类型
}
}
运算符、表达式与语句
赋值运算符:=
一元运算符:+、-、!(NOT,否)
算数运算符:+、-、*、/、%
注:
a的NOT运算:若a为0,则!a为1;若a不为0,则!a为0
在实际输出的时候需注意在输出语句中处于引号内的符号才会被输出
关系运算符:
if语句:若括号内的语句成立则执行行中的语句,若不成立则不会执行
if(布尔表达式){
语句;
}
eg.
if(x>10){
System.out.println("OK");
}
注
区分a++与++a:
a=3,则:a++=4 先打印a,后运算+1
++a=4 先运算+1,后打印a
逻辑运算符:&:AND,与
&&:短路,与
|:OR,或
||:短路,或
注
短路:前一个错误则不会判断下一个
非短路:前一个错误不影响后一个的判断
与 高于 或
AND以及OR结果表
eg.
public class Test{
public static void main(String[] args){
int score = 50;
if((score<0)||(score>100){
System.out.println("error");
}
if((score<60)&&(score>49)){
System.out.println("don't pass")
}
}
}
位操作符
位运算结果表