day02心得

存储原理

文本文件:也叫源文件,给别人看的

二进制文件:给计算机看的二进制编码

数据要运算,必须要先存储

存储方式:

1.内存:两端无线延伸的线

2.硬盘:螺旋线

存储单位:

bit:最小的电子位,比特,统称位

byte:一个字节=8bit

short:短整型=16bit

int:整型=332bit

long:长整型=64bit

负数表示方式:最高位作为符号位,1表示负数,0表示正数.负数为正数补码的反码,也就是补码+1

反码就是原码取反,1.0互换,首位符号位不变,再java里,一个字节存储的范围为-128~127,n位为-2^(n-1)~2^(n-1)-1

数据类型的分类

本质:规定占用内存空间的大小,用位和字节表示

有时候为了方便转换数据类型会使用ASCII码来代替字符,常用的有

A:65  a:97 0:48

数据类型使用

1.整型

单指在Java中,不能直接表示二进制

十进制:int i = 10;

八进制:int i = 011;

十六进制:int i = 0x11;

2.浮点型

float:32bit

double:64bit(Java中默认的小数是double)

 

3.字符型

char:16bit,用单引号表示,常采用unicode编码,0~65535,字符不需要负数

4.转移符:把有意义的符转换为无意义字符,java中使用\进行转义

5.布尔型boolean:true/false,适用于流程控制,不参与任何类型转换,占用1字节,8bit.全是0表示false,0000 0001表示true

 

 

 

左边图像输出自然是 是真的

 

6.类型转换

八种基本数据类型中,除了布尔类型都可以任意转换

自动类型转换:低精度到高精度

强制类型转换:高精度到低精度(有可能损失精度)

低精度类型 = (低精度类型)高精度值

 

7.混合运算

 

变量

常量/字面量:整个生命周期中值不可更改

 字面量:直接写,不声明空间存储

 常量:final声明,值不可更改

.常量的分类:

    字符串常量:凡是用双引号引起来的部分,叫做字符串常量。例如:“abc”、“12”.
    整数常量:直接写上的数字,没有小数点。例如:100。
    浮点数常量:直接写上的数字,有小数点。例如:-2.5。
    字符常量:凡是用单引号引起来的单个字符,叫做字符常量。例如:‘a’、‘中’。
    布尔常量:只有两种取值。true、false。
    空常量:null。代表没有任何数据。

变量:可以更改的数据,有名字的内存空间,可以复用该内存空间

变量声明:数据类型 变量名 = 值;

              int i = 10;

同时声明多个变量:int a,b,c;并不赋值

                               int a=1,b=2,c=3;声明并赋值

全局变量

变量分类

变量调用

默认值

优先级

运算符

算术运算符

关系运算符

位运算符   &&  || !

“&&”表示 与,意为同时都要满足。

“||”表示 或,意为二者或多着只要满足其中一个

A ? B:C ,意思就是如果A为真执行B,否则执行C

A != B?c:d,意思事如果A不等于B,那么执行C,否则就执行D,,boolean类型,?前判断,如果为true,执行第一个,不执行第二个,如果为false,那么执行第二个

 ~ : 按位非, 比如 0 的二进制 00000000 , ~0之后 ,就是 11111111 这是补码, 11111110 这是反码, 10000001 这是原码

  >> : 右移运算(考虑符号位,就是再怎么移位,符号位不受影响)

                 8 >> 2       = 2

                 8 的二进制为 0000 1000,右移两次, 就删除最右边两位,并再最左边补两个0(符号位之后)

                 8 >> n = 8 / 2^n

                如果是负数 就补1 , 正数 补0

                 -8 : 1000 1000   1111 0111   1111 1000

                -8 >> 1 : 1111 1100

                1111 1011  1000 0100

                -8 >> 2 : 111111 10    1111 1101   1000 0010

                -8 >> 4 : 1111 1111    1111 1110   1000 0001

               负数 右移之后 最小值 也是-1 , 正数 右移之后 最小值是 0

            右移 1次 就等于 / 2

 

 << : 左移运算(考虑符号位,就是再怎么移位,符号位不受影响)

                     删左边,补右边补0

                     2 << 2 : 0 0  001000  = 8

                     -2 << 2 :  1111 1000  1111 0111  1000 1000

                     8 << n = 8*2^n

>>> : 右移运算(不考虑符号位),只向最左边补0

            正数 和 >> 一样,因为补0 , 正数符号位 就是0

            但是负数就不一样了,因为负数 首位是1,如果补0之后,就成正数了

                      1073741822

            -8 : 1000 0000 0000 0000 0000 0000 0000 1000

            -8 : 1111 1111 1111 1111 1111 1111 1111 0111

            -8 : 001111 1111 1111 1111 1111 1111 1111 10

            -1 >>> 1

                     01111 1111 1111 1111 1111 1111 1111 111 = 2147483647

   JAVA面试题:请问如何可以更快的计算出2的3次方

            2<<2

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值