资讯详情

3-Java中的基本数据类型

前言

上一节谈到Java根据数据类型,可以大致分为基本数据类型和引用数据类型 参考资料 1.https://www.bilibili.com/video/BV1Kb411W75N?p=54&spm_id_from=pageDriver&vd_source=3c581bee767ca1f72b64f486174362ef 2.《疯狂Java第三版讲义 李刚)—P49-60

1.基本类型

数值类型

类型 占用空间 范围
byte 1个字节 -128 ~ 127
short 2个字节 -215 ~ 215-1
char 2个字节 0 ~ 216-1
int 4个字节 -231 ~ 231-1
long 8个字节 -263 ~ 263-1
float 4个字节 -3.403E38 ~ 3.403E38
double 8个字节 -1.798E308 ~ 1.798E308

布尔类型

目前还没有关于布尔类型占用空间的确切说法,请参考https://wenku.baidu.com/view/120a2304a9ea998fcc22bcd126fff705cc175cad.html boolean类型的变量只能为true或者false,一般用于条件判断

2.使用基本数据类型及相关注意事项

int

在这里插入图片描述 编译并运行 注意, 修改代码如下 先编译 修改代码 编译 运行结果为231-1 = 2147483647,而不是280 修改代码 编译(超过也没有报错,视频教程用byte例如,这里有一些疑问,我认为编译不应该通过) 运行(这里也有一些疑问,为什么这里是(2)31-1) 1 = -231),然后-231 99 = -2147483549呢?我暂时猜原因应该是我不明白double转换到int机制!

接下来继续修改如下(注意这次没有加100,直接给超出范围的整数!

编译

byte

在视频教程中,例如使用byte然后我就用类型了。byte试一试,需要注意的是Java中byte值范围为-128~127(我总是记错这个) 编写代码

class Test2{    public static void main(String args[]){   int myMathGrade = 77;   System.out.println("MathGrade: " myMathGrade);      byte testByte1 = 123 9;   System.out.println("testByte1: " testByte1);  }   } 

命令行编译 修改代码

class Test2{    public static void main(String args[]){   int myMathGrade = 77;   System.out.println("MathGrade: " myMathGrade);      byte testByte1 = (byte)(123 9);   System.out.println("testByte1: " testByte1);  }   } 

编译并运行

float、char、long

关于这些不一一列举,就是float和long注意相应的标记字母,然后注意赋值数字char有几种写法和常用的转义字符,需要注意char类型的范围(

boolean

注意与C的区别,C这个可以在里面写。var可以是int、bool、short、long等类型,对bool类型也是判断真假的,而其他数值类型则是判断是否非零

if (var) {  ///要执行的内容 } 

而在Java里,上面的var只能是boolean类型! 略(遇到其他内容再写)。

short

编写代码

class Test2{    public static void main(String args[]){   short a, b, c;   short d = 50;   d = 40;   a = 80, b = 21, c = -45;  }   } 

编译, 修改代码

class Test2{    public static void main(String args[]){   short a, b, c;   short d = 50;   d = 40;   a = 80;   b = 21;   c = -45;  }   } 

编译 接下来演示一个容易犯的错误!!!修改代码如下

class Test2{    public static void main(String args[]){   short a, b, c;   short d = 50;   d = 40;   a = 80;   b = 21;   c = -45;   d = a   b   c;  }   } 

编译,(下一节写) 修改代码

class Test2{    public static void main(String args[]){   short a, b, c;   short d = 50;   d = 40 - 9;   a = 80;   b = 21;   c = -45;   d = (short)(a   b   c);  } } 

编译

3.课后疑问

我记得在keil5制C语言控制单片机时(当时正在准备第六届全国大学生起重机大赛),float类型与float运算类型是自动转换为double类型,然后报了一些警告,如下图所示,所以我在这里有疑问,会不会Java里float与float运算也会出现自动转换为double呢? 编写测试代码如下

class Test2{    public static void main(String args[]){   short a, b, c;   short d = 50;   d = 40 - 9;   a = 80;   b = 21;   c = -45;   d = (short)(a   b   c);      float test_float_num1, test_float_num2, result;   test_float_num1 = (float) 33.8;   test_float_num2 = 56.f;   result = test_float_num2/test_float_num1;   System.out.println("result: " reult);
	}
}

编译并且运行,发现没有问题 当然,除了上面容易忽略的问题,还有一个学了C语言都知道的自动转换原则:

修改代码如下

class Test2{
	
	public static void main(String args[]){
		short a, b, c;
		short d = 50;
		d = 40 - 9;
		a = 80;
		b = 21;
		c = -45;
		d = (short)(a + b + c);
		
		float test_float_num1, test_float_num2, result;
		test_float_num1 = (float) 33.8;
		test_float_num2 = 56.f;
		result = test_float_num2/test_float_num1*1.;
		System.out.println("result: "+result);
	}
	
}

编译结果报错如下,因为1. 是double类型的,因此右边转换位double类型的,而左边的变量是float类型的,就报错了

4.总结

注意基本类型相关使用 (1)赋值不能超出其范围 (2)char型有好几种表示方式,记住一些常用常见的转义字符 (3)运算时存在自动类型转换,注意几种容易犯的错误(“当整个算术表达式中包含多个基本数据类型的时,发生数据类型提升,如所有byte类型、short类型和char类型将被提升到int类型”),并且已经以short类型自动转换为int类型说明,同时还结合自身以前比赛学习使用C语言的经验,进行对比,得出Java中多个float类型变量一起运算时不会转换为double(当然前提是没有double类型参与) (4)注意C语言中赋值表达式之间可以逗号隔开,最后英文分号结束,而Java中不支持,每个赋值表达式都需要英文分号结束

标签: 120a单相固态继电器mgr

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台