java课后作业

 数据存储在内存中都是存储的二进制,其中首位是符号位,二进制又可分为原码、反码、补码。最终存储在内存中的是“补码”, 一个正数的原码、反码、补码都是它的二进制表现形式。一个负数的原码是首位为1的二进制数。反码是符号位不变,其他位取反。补码是反码加1。Java在计算机中,数值一律使用补码来表示的。正数:补码=反码=原码;  负数:负数反码除了符号位不变,其他位取反,补码=反码+1;

   在Java中,short是16位,范围是-128到127,int是32位,范围是-32768到32767,long是64位,范围是-2147483648到2147483647,float是32位,范围是1.4E-45到3.4028235E38,double是64位,范围是4.9E-324到1.7976931348623157E308。从表中可以看出来浮点数的范围比整形到大,但是从整形到浮点型强制转换的时候会出现精度损失。

  1. java的基本运行单位是类。
  2. 类是由数据成员,方法(函数)构成的。
  3. 变量的类型之间可以互相转换,即强制类型转换,但是由整形转化为浮点类型会有精度损失。
  4. String是一个类而不是数据类型。
  5. Static是静态数据类型。

java里面,在同一个作用域下,不能定义一样的标识符。因为,他需要保证你在某个作用于下使用某个标识符的时候,JVM能够正确进行区分!所以,实际上,全局变量和局部变量和内存并不存在绝对直接的关系。实际上,不管是全局的还是局部的变量,他的标识都是保存在栈里面的。

成员变量作用域在整个类,但是可以重复定义。成员变量会被屏蔽,如果想获得成员变量,需要使用this操作符。

 

public static void main(String[] args) {

        int x=100,y=200;

        System.out.println("x+y="+x+y);

      System.out.println(x+y+"=x+y");

 

 

原因是只要+运算符的一个操作数类型是字符串类型,编译器就会把另一个操作数转换成字符串类型。

Double 类型计算精度问题:

我们输入的十进制数字会先转换成二进制,进行运算后再转换为十进制输出。然而问题在于转换为二进制的时候,有些数字不能完全转换,只能无限接近于原本的值,这就导致了在后来的运算会出现不正确结果的情况。

 

posted @ 2019-09-18 17:46  17_Xtreme  阅读(132)  评论(0编辑  收藏  举报