其他分享
首页 > 其他分享> > 9.9课上问题的思考与整理

9.9课上问题的思考与整理

作者:互联网

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

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

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

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

思考二:从测试看不足

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