千峰day01

一个java文件中只能有一个public class,所定义的class都会别编译成一个字节码文件
 
8种基本数据类型问题:
char:以整数形式存储,以字符类型输出
float:赋值小数时候 需要加f  比如  float a=5.5f   因为默认小数是double类型
 
隐式转换(类型提升:大类型=小类型):比如:long a=2
 
精度提升问题:
 
 
作业总结:

1、写出将两个变量的值互换的程序。(不借助第三个变量的情况)
public class Test1{
 public static void main(String[] args){
  int a = 10;
  int b = 15;
  a = a + b;
  b = a - b;
  a = a - b;
  System.out.println("a = " + a);//15
  System.out.println("b = " + b); //10
  
 }
}

2、有如下代码片段:
short s = 1; s = s + 1;
产生错误的原因是什么????

编译不通过,损失精度。s是short类型跟int类型的 1 进行运算后,结果自动转换成int类

型,但是左边是short类型,两边类型不匹配。编译不通过。

但是 s+=1; 这个就可以编译通过 正常运行,为什么?
因为 += 这个运算符在编译解析时候 实际上是这样的 s=(short)(s+1),自动加上强转,这

样两边类型一致,可以编译通过。


3、使用二进制模拟25+37的运算过程,并检验。
(25)10=(11001)2   +  (37)10=(100101)2    =  (111110)2  =  (62)10


4、总结十进制转换为二进制以及其他进制的步骤。
十进制--->二进制
把十进制数不断向下除以2,记录每次得到的余数,然后余数倒过来写就是二进制数
十进制转8,16进制也类似这样方法。

二进制--->十进制呢?
按权展开求和 如 11000011 = 2^7 + 2^6 + 2^1 + 2^0 = 195

二进制--->八进制呢?
将 二进制的每三位 按权展开求和得到 一位八进制 (位数不够在前面补0)
如 011 000 011 每三位算一下得到八进制 303 -->十进制呢?
按权(权为8)展开求和 3 * 8^2 + 0 * 8^1 + 3 * 8^0 = 195

二进制--->十六进制呢?
将二进制的 每四位 按权展开求和得到一位十六进制
如1100 0011 每四位算一下得到12和3 但是十六进制中9之后的是用ABCDEF来表示
所以结果为C3 --->十进制呢? 按权(权为16)展开 12 * 16^1 + 3 * 16^0 = 195

 

猜你喜欢

转载自www.cnblogs.com/zhiai007/p/9302139.html