变量_类型转换_ 算术运算符_转义字符_赋值和比较运算符_逻辑运算符_位运算符

----------- android培训java培训、java学习型技术博客、期待与您交流! ------------
【变量】

当数据不确定的时候,需要对数据进行存储时,就定义一个变量来完成存储动作

变量:就是将不确定的数据进行存储,也就需要在内存中开避一个空间

变量通过数据类型,变量名称,数据来完成开避内存空间

【为了节约内存】

如果运算在100以下用byte装 -128-127

如果运算在30000以下用short装就行了 32767

单精度 4个8位 

双精度 精确程序更高 8个8位 默认类型

char 0到65535

【类型转换】

byte b = 3;

b = b + 2;     哈哈报错了,自动向上转型了,

b = (byte)(b+2);   先转型,再赋值

【算术运算符】

int x=4270;

x=x/1000 因为int型做运算还是int型,所以是4

x=x%1000  270 1%5左边如果小于右边,结果是左边

      1%-5  -1%5如果出现负数只看被么数,不看负号OK

int a=5,b; b=b+4 b没赋值不能使用

b = a++; 先赋给b,然后a在自增

b = ++a; 先a自增,然后赋给b

例:

int k = 0;

int ret = ++k + k++ + ++k + k;  

步聚: 1 + k++ + 2  + k

 2++   + 2  + k

   3       + 2  + 3  = 8

【转义字符】

在linux里面,换行由一个字符表示,就是\n

在windows里面,换行是由两个字符来表示的,\n 和 \r

char c="中";一个汉字两个字节,char也是两个字节

如果某个特殊的汉字没有被包含在unicode编码字符集中,那么这个char型变量中就不能存储这个特殊汉字。char默认是unicode编码占用两个字节

【赋值和比较运算符】

short a=4;

a=a+5; 这个报错  这个是两次运算,先做运算在做赋值,不会做自动转换

a+=a;  这个可以自动转换, 这个就一次赋值过程,会做一次自动转换

两者区别一个编辑失败一个编辑通过

=是赋值运算符 ==是比较运算符!=不等于

在java不允许这样写:11>x>9 

【逻辑运算符】

&:两边都为true结果为true:

int x=7; x>4 & x<9 true & true = true;

|:两边有一个true结果为true: true | false= true;

异或 :true false 为true 两边不同结果为true;

! not(非)  !true=false

【双与(短路)&& 】

&和&&的特点:

&:无论左边是true还是false,右边都运算

&&:当左边为false时,右边不运算(短路)

【|和||的特点】

|两边都参与运算

||当左边为true时,右边不运算

【位运算符】(左移右移)  

3<<2 = 12; 3左移2位   右边加2个位(00),左边去2个位

  0000-0000 0000-0000 0000-0000 0000-0011

向左移后:   0000-0000 0000-0000 0000-0000 0000-1100


6>>2 = 1 ; 6右移两位  右边去2个位,  左边加2个位(00)

    0000-0000 0000-0000 0000-0000 0000-0110

右移两位后:0000-0000 0000-0000 0000-0000 0000-0001


向左移,越移越大  【相当于乖以2的移位位数次方】

右移,越移越小    【相当于除以2的移位位数次方】,高位最终补0还是1,看最高补的值


如果>>>右移,不管你是整数还是负数,空出来的位都拿0补

>>:最高位补什么由原有数据的最高位值而定,

   如果最高位0,右移后,用0补空位

   如果最高位1,右移后,用1补空位

>>>:无论最高位是什么,右移后,都用0补 

【与-或-异或】

&:与运算

6 & 3 = 2

先把6和3都变成二进制位

    110    

&  011   

     010

|:或

6 | 5 = 7

  110

| 101

  111 


^:异或

6 ^ 5 = 3

   110

^ 101 

   011

~反码:
正数的反码:加1取负
如~1=-2,~2=-3,~6=-7,~54=-55

求取过程示例:
如求6的反码:
1、得到6的二进制形式:0000-0000 0000-0000 0000-0000 0000-0110
2、逐位取反:1111-1111 1111-1111 1111-1111 1111-1001
3、减1:1111-1111 1111-1111 1111-1111 1111-1000
4、除符号位外逐位取反:1000-0000 0000-0000 0000-0000 0000-0111
5、将其转化为十进制,既得6的反码为-7

负数的反码:取正减1

如~-2=1,~-3=2,~-7=6,~-55=54

求取过程示例:

如求-7的反码:

1、得到-7的原码: 1000-0000 0000-0000 0000-0000 0000-0111

2、逐位取反: 0111-1111 1111-1111 1111-1111 1111-1000

3、加1: 0111-1111 1111-1111 1111-1111 1111-1001

4、除符号位外逐位取反: 0000-0000 0000-0000 0000-0000 0000-0110

5、将其转化为十进制,既得-7的反码为6


7 ^ 4 =3

   111

^ 100

   011

^ 100 

  111  =7;  7 ^ 4 ^ 4 = 7;

一个数异或同一个数两次,结果还是那个数

异或类似加解密:异或一次加密,再异或一次解密,异或的同一个数相当于密钥

【两个整数变量值互换】

法1:可以定义第三个变量用来做中间变量:  常用

int a=2;

int b=3;

int c;

c=a;

a=b;

b=c;


法2:不容易读,效率高

int   a=3;b=8; 

a=a^b;

b=a^b;//相当于(a^b)^b

a=a^b;//相当于a^(a^b)


法3:这种方式有局限性,如果两个数较大相加就超出int范围了,容易损失精度

a=a+b;

b=a-b;

a=a-b;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值