ICode9

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

9.9课上问题的思考与整理

2022-09-11 20:30:38  阅读:128  来源: 互联网

标签:反码 变量 int 补码 课上 9.9 思考 原码 String


思考一:大道至简——编程思维

学习计算机语言就类似于学习一门外语语法,真正难点是编程思维和解决问题能力。

编程思维是由分解、模式识别、抽象、算法四部分构成的,即将整个程序分成若干个组件、将多次出现的相似功能设成独立的方法、调试每个独立组件的健壮性、按照功能要求进行组件的组合。

这一些系列的完成其实就意味着编程完成了一半,再根据思维写出对应的语法,这样就实现了一个成功的程序。

思考二:从测试看不足

Java的基本运行单位是类

类是由变量和方法组成的

变量之间的类型相互之间是可以进行转换的,主要分为以下几种情况:

一、 整型、实型、字符型变量中的相互转换
   在Java中整型、实型、字符型被视为同一类数据,这些类型由低级到高级分别为(byte,short,char)——int——long——float——double,低级变量可以直接转换为高级变量

例如,下面的语句可以在Java中直接通过:
   byte b;
   int i=b;
   而将高级变量转换为低级变量时,情况会复杂一些,你可以使用强制类型转换。即你必须采用下面这种语句格式:
   int i;
   byte b=(byte)i;
   但这种转化会造成精度的损失

二、Java的包装类

Boolean-----boolean
Character-----char
Integer-------int
Long----------long
Float---------float
Double-------double

三、String字符串和int之间的相互转化

1.将string字符串转化为int

   int i = Integer.parseInt([String]);直接产生int变量

   int i = Integer.valueOf(my_str).intValue();会间接产生Integer对象

2.将int转化为string

   String s = String.valueOf(i);

   String s = Integer.toString(i);

   String s = "" + I;

四、简单类型变量和包装类之间的相互转换
   简单类型的变量转换为相应的包装类,可以利用包装类的构造函数。即:
   Boolean(boolean value)、Character(char value)、Integer(int value)、Long(long value)、Float(float value)、Double(double value)
   而在各个包装类中,总有形为××Value()的方法,来得到其对应的简单类型数据。利用这种方法,也可以实现不同数值型变量间的转换,例如,对于一个双精度实型类,intValue()可以得到其对应的整型变量,而doubleValue()可以得到其对应的双精度实型变量。

等等 其中浮点数也是可以与其他类型进行转化的。

String在java里面不是一个数据类型,是一个类

static表示“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,或者进行静态导包

动手动脑三--对EnumTest.java程序的相关解答

通过上面两张图可以看出枚举类型是引用类型,

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

动手实验四、TestDouble.java

通过double类型的数值进行计算,得到的结果都不是精确的

浮点数的精度是由尾数来决定的:

float类型,尾数部分23位,换成十进制就是2^23=8388608,因此十进制精度只有6-7位

对于double类型,尾数部分52位,换成十进制就是2^52 = 4503599627370496,所以十进制精度只有15 ~ 16位

并且对于二进制转化,double和float类型都会按自己的精度来截取,因此,浮点数交给计算机存储时会出现精度丢失的问题。

对于精度问题如何解决?可以引用一个函数

通过引用该函数实现精度的不损失。

五、动手动脑

为什么这两个的输出结果不一样?

因为在运算符是从左到右开始计算的,语句1的意思是要输出x再输出y,语句二的意思是输出x+y;

思考六 原码、补码与反码

计算机都是以补码的形式记录数据,电脑只能识别0和1;

原码 :最高位符号位,0代表正数,1代表负数,非符号位为该数字绝对值的二进制。

反码:正数的反码与原码一致,负数的反码是对原码按位取反,只是最高位(符号位)不变。  

补码:正数的补码与原码一致,负数的补码是该数的反码加1。

即 理解如下

正数的原码=正数的反码=正数的补码

负数的反码=它的原码符号位不变,其他位取反(0->1,1->0)

负数的补码=它的反码+1

 

标签:反码,变量,int,补码,课上,9.9,思考,原码,String
来源: https://www.cnblogs.com/jiacheng-712/p/16677917.html

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

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

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

ICode9版权所有