1,变量

java中的引用数据类型有3种:类class,数组array,接口interface

而基本数据类型和引用数据类型最大的区别就是:基本数据类型被分配在栈中,

而引用数据类型,会被分配到堆中.

但是不论是基本数据类型,还是引用数据类型都会进入栈,被分配一块内存,对于基本数据类型来说,这块区域包含的就是基本数据类型的内容,而引用数据类型在这块区域中包含的是指向真正内容的指针,真正的内容被手动的分配在堆上.

此时出现了一个面试题?跟谁学面试问到int范围,由来?

1. 在计算机内部数据的存储和运算都采用二进制;
2. 计算机中数据分为有符号数和无符号数,对于有符号数,计算机规定用最高位来表示符 号。“0”表示正,“1”表示负;
3. Java中的数据都是有符号数;
4. 计算机中带符号的整数都是使用二进制的补码。

2.1 计算机底层的存储方式:所有数字在计算机底层都以二进制形式存在。
2.2 二进制数据的存储方式:所有的数值,不管正负,底层都以补码的方式存储。
2.3 原码、反码、补码的说明:
正数:三码合一
负数:

比如:正数 5 和 负数 5
5 原码:00000101     -5 原码:10000101
 反码:00000101     -5 反码:11111010
 补码:00000101     -5 补码:11111011


  不难想到Java中byte能够表示的最大二进制是01111111,换算成十进制就是127(1+2+4+8+16+32+64)。
而能够表示的最小二进制是10000000。但是注意,这是一个补码,我们需要根据规则反向求出它本身的原码,首先减去1,得到01111111,然后在求反,得到10000000,换算成十进制就是128,加上符号,即-128。
  最后说一个小技巧:对于负数求补码的时候,可以从原码低位开始,遇到第一个1就保留,后面各个位依次取反,当然符号位依然不变。
  还是上面的-5例子求补码,从原码低位开始,第一位是1,保留,然后后面的位依次取反,符号位不变,得到11111011。

String

引用数据类型,声明变量时候使用一对“”,和基本数据类型+就是一个联结作用
(a=97 A=65)

向上转型---自动 。
向下转型---丢失精度。