常量,变量 , 数据类型的转换,运算符,进制转换,原码,反码,补码

@TOC

常量

概念:常量就是程序运行过程中其值不发生变化的量,所有基本类型的值,固定不变,都是常量,String类型的量比较特殊,可以认为是常量

常量的分类

  1. 字面值常量
  2. 自定义常量
  3. 自己创建的空间 存储一个值 让它固定,使其不能发生变化 例如 final int i = 1;

字面值常量的分类

  1. 整数常量              例如:1,78,5
  2. 小数常量             例如:3.24 5.67
  3. 字符常量        例如:‘c’ ‘A’ ‘1’ ‘3’ ‘我’ (PS:只能是单个字母,数字,或者汉字)
  4. 字符串常量              例如:“Hello World”
  5. 布尔常量              只有true 和 false
  6. 空常量              null
Java对整数常量提供了4中表现形式

(1)二进制:      由0,1组成     以“0b”开头
(2)八进制:      由0—7组成    以“0”开头
(3)十进制:      由0—9组成,不加任何修饰,默认是十进制
(4)十六进制:     由0—9和A—F 组成   以“0X”开头

变量

概念:程序运行过程中其值可以发生变化的量。(其实就是在内存中开辟一块空间)
定义格式:数据类型 变量名 = 变量值;例如:int i = 1;//将1赋值给x
注意:变量在没有赋值的时候,是不能被拿来使用的!!!

数据类型

数据类型的分类

  1. 基本数据类型
  2. 引用数据类型
基本数据类型的分类
  1. .整数型:   byte、short 、int 、 long
  2. .浮点型 :    float 、 double
  3. .字符型 :   char
  4. 布尔型. :   true、false

注意事项:

整数的默认数据类型是int,小数的默认数据类型是double;
   如果要定义long类型的整数,而这个整数的范围超过了int型(-32768~32767),那么就要在数字末位加L;
   例如:long i=432432L;
       long a = 1;
   如果要定义float类型的小数,那么就要在小数末位加上F;
   例如:float i = 3.14F;

运算符

概念:对常量或者变量进行运算的符号。

数据类型的转换
  1. 整型—>整型 (自动转换)
    (1)大数据类型—>小数据类型(自动转换)  例如
             byte a = 1;
             int b = a;//将byte类型的变量a自动转换成了int类型的变量b,不用添加任何条件

(2)小数据类型—>大数据类型(强制转换)  例如

				 int a = 1byte b =byte)a;//将int类型的变量a强制转换成byte类型的变量b,需要在前面加上括号,里面写上所需要的数据类型

  1. 浮点—>浮点
    浮点向浮点类型转换,和第一个整数数据类型转换方法一样,参照上一个;
  2. 整型—>浮点
      先比较内存空间的大小,再比较精确度,例如
              byte a = 1;
              float b = a;//将byte类型的变量,转换成float类型的变量,byte是8bit位,而float是32bit位,可以存下, 所以是自动转换
              long c = 1float d =float)c;//将long类型的变量转换成float类型变量,因为long是64bit位,而float是32bit位,所以要强制转换
              int i =  1float k = i;//将int类型的变量转换成float类型的变量,因为int是32bit位,float是32bit位,所以要比较精确度,而float精确度较高,所以是自动转换                     
  1. 浮点—>整型
       任何浮点类型的变量都需要强制转换成整型变量,而且结果是取整数部分,弃小数部分   例如
float a = 23.7float c = 23.1int b = a;//则输出b的结果是23
int d = c;//则输出d的结果也是23
  1. 整型—>字符(利用Unicode编码,必须强制转换)
int x = 97char y =char)x;//输出y==’a’
  1. 字符—>整型(强制转换)
char i = ‘a’;
int y =char)i;//输出y==97

运算符的分类

  1. 算术运算符:+、–、*、/、%、++、- -
     (1) "/"这个运算符除下来的结果中取商的整数部分,例如:8/7=1;7/8=0,9/4=2;
     注意:要是定义的变量是浮点型,则‘/’的结果小数部分取决于定义的变量有几位小数
float x = 5.0F;
x = x/2;//输出x==2.5

(2)“%”这个运算符除下来的结果中取商的余数部分,例如:8%7=1;7%8=7,9%4=1;
 (3) “++”这个运算符的含义是给原来的值自加1,,例如:i = 1;i++;则输出 i = 2;
 (4) “-- ”这个运算符的含义是给原来的值自减1,例如:i = 9;i- - ;则输出i = 8;

注意事项:

“++”和“–”放在变量前和放在变量之后的意义是不一样的;
变量前:先运算,再赋值;
变量后:先赋值,再运算;

以下的代码块用来解释说明:

        int i = 1;
        int ii = 1;
        int b = i++;
        int b1 = ++ii;
        System.out.println(i);//输出结果是2;i自加了一次,所以i+1=2
        System.out.println(ii);//输出结果是2;ii自加了一次,所以ii+1=2
        System.out.println(b);//输出结果是1;b运算的时候,先将i=1的值赋值给b,再将i自加1
        System.out.println(b1);//输出结果是2;b1运算的时候,先让ii=ii+1=2,再将此ii=2的值赋值给b1
-

下面的代码块比较特殊

int a = 1;
a = a++//输出结果a==1;
int b = 1forint i = 1;i <= 100;i++{
	b = b ++;
}//输出结果a仍然是1
  1. 逻辑运算符
      &(并且) , |(或者) , !(非) , ^(异或) , &&(短路与) , ||(短路或)
      下面说一下“&&”与“&”的区别
      “&&”与“&”的处理结果是一样的;
      “&&”具有短路效果,如果左端为false,则不处理右端的运算;如果左端为true,则会处理右端的运算;
        int a = 1;
        int b = 10;
        boolean flag = ((a == 10)&&((b++) > 10));
        System.out.println(b);//b=10,说明没有执行b++ >10这个代码块
        System.out.println(flag);//flag=false

“&”这个运算符不具有短路效果,无论左端是false还是true,它都会执行右端的代码

		int a = 1;
        int b = 10;
        boolean flag = ((a==10& (b++)>10;
        System.out.println(b);//b = 11,说明此事运行了右端的代码
        System.out.println(flag);//flag = false

同理“||”与“|”的区别也是一样的
“^”异或运算符,两个处理结果不同则为true ,相同则为false;
            例如:(1)(3>2)^(4>3)
                 true   true
                   结果为false;
              (2)(4>3)^(5<4)
                  true   false
                   结果为true;
3. 位运算符(直接对二进制的补码进行运算)
   &(与),|(或),^(异或) , ~(按位取反) , <<(左移) ,>>(右移) ,>>>(无符号右移)
(1)&  有0则0;   例如:0001&0110=0000
(2)|  有1则1;  例如:0001|0110=0111
(3)^  相同取0,不同取1  例如:0001^0110=0111
   注意:^的特点:一个数据被另一个数据位异或两次,该数本身不变。
   例如:5^6^6=5;
      6^5^6=5;
(4)~  按位取反,0则取1,1则取0 例如:~0001=1110
(5)<< 左边的数据乘2的移动次幂 例如 10<<3 =102^3=80;
                     5<<2 = 5
2^2=20;
(6)>> 左边的数据除以2的移动次幂 例如 50>>3=50/2^3=6;
4. 三目运算符
    int a=(c>d)?c:d;
    解释一下上面的式子吧,如果c>d是true,则返回a=c,如果c>d是false,则返回a=d;
5. 比较运算符:== ,!= , < , > , <= , >= , instanceof
   注意:“==“与“=”不一样,“==”是比较等号左右两边的值是否相等,而“=”是赋值;
   ==比较的是地址,equals比较的是内容;
6. 赋值运算符:=、–=、+=、/=、%=、 *= 
(1)"="此运算符就是将“=”右边的值赋给“=”左边的值;
(2)“–=”这个运算符举个例子吧  eg:int i = 1;i + = 1;//“i + = 1”等价于“i = i + 1”;则此时的i=2;
(3)"+=、/=、*=、%="以此类推

注意事项:

byte、short类型的变量,参与运算时,Java会默认将这些类型转换为int型,这称之为自动类型提升
以下的代码段进行解释
在这里插入图片描述
那么现在说一下i+=1与i = i+1的区别:
刚才看到byte类型的变量,在参与运算时,会自动转换为int型
在这里插入图片描述
这时,就会运行成功,这也仅是i+=1与i = i+1的区别

进制

进制是Java对整数常量的一种表现形式

进制的分类: 二进制、八进制、十进制、十六进制

  1. 二进制:由0和1组成,一般以0b开头;
  2. 八进制:由0~7组成,一般以0开头;
  3. 十进制:由0~9组成,一般默认前面什么都不加的数字是十进制;
  4. 十六进制:由0~9和A~F组成,一般以0X开头
进制的转换

(1)其他进制到十进制的转换规则是:每一组的数据=系数*基数^权;
    系数:该位对应的数字;
    基数:由几进制转换到十进制,那么基数就是几;
    权:由右向左依次从0开始排序所得的数字;
  例如:八进制转十进制
     0150=1×8^2+5×8^1+0×8^0
       =64 +  40+0
       =104
     二进制转十进制
     0b101=1×2^2+0×2^1+1×2^0
          =4 + 0 + 1
          =5
 (2)十进制到其他进制的转换规则是:除基取余,直到商为0,余数翻转
   例如:十进制转二进制
     10/2=5......0
     5/2=2........1
     2/2=1........0
     1/2=0........1
     余数翻转 ,从下往上依次是1010

原码 反码 补码

原码:将一个十进制的整数,转换成二进制的数,一般是8位,最左边的位是符号位,0则是正数,1是负数;
整数的原码,反码,补码都是一样的,比如:
 十进制的数字 10的 原码: 00001010
          反码:00001010
          补码:00001010
负数的反码:符号位不变,其余取反;
补码:在其反码的基础上加1
-10的原码:10001010;
  反码:11110101;
  补码:11110110;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值