ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

关于第一次课件上的问题解决(动手动脑)(2021.10.25)

2021-10-25 02:01:10  阅读:179  来源: 互联网

标签:25 2021.10 二进制 00000001 成员 动脑 十进制 变量


 

1.java的基本运行单位是类

2.Java类的组成主要有以上3部分:数据成员、构造方法、方法成员

3.变量之间可以相互转换,如:低级变量可以直接转换为搞基变量,而将高级变量转换为低级变量,就得使用强制转换。

4.String不是基本的数据类型。是final修饰的java类。

5.java中,static表示“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,或者进行静态导包。 static的特点:1、随着类的加载而被加载;2、优先于对象存在;3、被所有对象共享。 Java是一种面向对象的计算机编程语言,Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。 下面我将和大家讲讲Java中的static是什么意思。 java中,static最常用的就是用于修饰类的成员函数与属性,让他们成为类的成员函数与属性。 这是相对于对象的方法和对象来说的。 修饰成员方法也是修饰成员变量的一种,因为成员方法也同样属于成员变量。

动手动脑.1:

 

由上图可知枚举的类型为Size

s和t引用的并不是同一个对象,枚举并不属于原始数据类型 ,它的每个具体值都引用一个特定的对象。相同的值则引用同一个对象。

 

可以使用“==”和equals()方法直接比对枚举变量的值,换句话说,对于枚举类型的变量,"==”和equals()方法执行的结果是等价的

 

 

动手动脑.2::

原码:

原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值. 比如如果是8位二进制:

 

[+1] = 0000 0001

[-1] = 1000 0001

 

第一位是符号位. 因为第一位是符号位, 所以8位二进制数的取值范围就是:

 

[1111 1111 , 0111 1111]

 

 

[-127 , 127]

 

反码:

 

反码的表示方法是:

 

正数的反码是其本身

 

负数的反码是在其原码的基础上, 符号位不变,其余各个位取反.

 

[+1] = [00000001] = [00000001]

[-1] = [10000001] = [11111110]

 

补码:

 

补码的表示方法是:

 

正数的补码就是其本身

 

负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)

 

[+1] = [00000001] = [00000001] = [00000001]

[-1] = [10000001] = [11111110] = [11111111]

 

 动手动脑.3:

 

动手动脑.4

 

 

整型: byte(8),short(16),int(32), long(64) 浮点型: float(32), double(64),

 

java自动完成从低级类型向高级类型转换,即取值范围相对较小的数据类型转换成取值范围相对较大的数据类型。

动手实验.5

 

 

 

 

归根结底,这个问题涉及到二进制与十进制的转换!!

我们知道计算机进行的是二进制运算,我们输入的十进制数字会先转换成二进制,进行运算后再转换为十进制输出。

而N进制可以理解为:数值×基数的幂,例如我们熟悉的十进制数123.4 = 1×102+2×101+3×100+4×10(-1);其它进制的也是同理,例如二进制数11.01 = 1×21+1×20+0+1×2(-2) = 十进制的3.25。

Double类型的数值占用64bit,即64个二进制数,除去最高位表示正负符号的位,在最低位上一定会与实际数据存在误差(除非实际数据恰好是2的n次方)。

如果这里不好理解,那我们再举个例子:如要用4bit来表示一个十进制小数3.26,从高到低位依次对应2的1,0,-1,-2次幂,根据最上面的分析,计算机内应当在二进制数11.01(对应十进制的3.25)和11.10(对应十进制的3.5)之间选择。显然这个区间里面除了我们需要的3.26,还有很多其他的数字。

再回到Double的64bit上来,同理:我们给出的数值,在大多数情况下需要比64bit更多的位数才能准确表示出来(甚至是需要无穷多位的,比如1/3),而Double类型的数值只有64bit,后面舍去的位数就一定会带来误差,无法得到“数学上精确”的结果。
动手动脑.6

 

 

输出结果:X+Y=100200

                 300=X+Y

原因:System.out.println("X+Y="+X+Y) String字符串后面是加和变量,加号起连接作用,然后把两个字符串连接成一个新的字符串输出。

          System.out.println(X+Y+"=X+Y")中的“+”为加法运算符,即为两个数相加。

 

标签:25,2021.10,二进制,00000001,成员,动脑,十进制,变量
来源: https://www.cnblogs.com/zzhzzhzzh/p/15456638.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有