黑马程序员_Java基础_进制转换、基本数据类型、运算符、流程控制语句等

时间:2021-02-07 00:37:48

一、进制转换

参考这篇文章:

二进制、八进制、十进制、十六进制之间转换

注意:

负数的二进制表现形式:

6= 110  

-6:其实就是6的二进制取反+1

取反:将二进制的1变成0,将0变成1

      0000-0000  0000-0000   0000-00000  000-0110                (二进制6

 

     1111-1111  1111-1111    1111-1111   1111-1001          (二进制6取反)

+   0000-0000  0000-0000   0000-0000    0000-0001            (二进制1

     1111-1111  1111-1111    1111-1111   1111-1010      =            -6 

 

总结:负数的最高位都是1

 

二、基本数据类型

8

         1) 整型

                   byte       1B          8       -128127

                   short      2B       16       -2^15(2^15)-1

                   int          4B        32      -2^31(2^31)-1

                   long        8B        64      -2^63(2^63)-1

         2) 浮点类型

                   float       4B       32      

                   double    8B      64

         3) 字符类型

                    char       2B     16    

         4) 布尔型         

                   boolean   1B      8          false/true

                  

         注:

                   1Java中的自动类型提升问题。

                            1)、正向过程:从低字节到高字节可以自动转换。

                                     byte->short->int->long->float->double

                            2)、逆向过程:从高字节到低字节用强制类型转换。

                                    例:int a = (int)3.141592653//结果是3

                                    注:逆向转换将丢失精度。

                    2boolean:只有truefalse

                    3charJava中用" \u四位十六进制的数字 (即使在注释中出现\u,后面如果跟的不是4个数字,也会报错)"表示将字符转换成对应的unicode编码,字符类型要用单引号括起来。

                    4、黙认浮点类型为doublefloat数据类型有一个后缀为" f "" F "

                    5long类型有一个后缀,为" l "或者" L "

 

三、自动类型提升

[java] view plaincopy
  1. byte a = 2;  
  2. byte b = 3;  
  3. a = a+b;   //编译出错自动类型提升成int  
  4. a += b;    //自加没有自动类型提升问题  


 

         类型自动提升规则:

                   ab作某种运算

                   ab中有double,结果就是double

                   ab中有float 结果就是float

                   ab中有long 结果就是long

                   除此之外,结果都是int

         注意:把高字节转成低字节,需要作强制类型转换. byte c=(byte)a+b;

 

四、移位运算符:

效率最高

         >>   有符号右移,补符号位

                   移负数位,则将该数值加32后再进行移位

                   数值的2进制是按照补码保存的

         >>>  右移后高位都补0

        

         分析:交换两个变量中的值

[java] view plaincopy
  1. //1.借助temp临时变量  
  2. int temp;  
  3. temp=n;  
  4. n=m;  
  5. m=temp;  
  6. System.out.println("交换后的值:"+"\n"+"n="+n+"\n"+"m="+m);  


 

[java] view plaincopy
  1. //2.不借助临时变量  
  2. n=n+m;  
  3. m=n-m;  
  4. n=n-m;  
  5. System.out.println("交换后的值:"+"\n"+"n="+n+"\n"+"m="+m);  


 

[java] view plaincopy
  1. //3.一个数异或同一个数两次,结果不变  
  2. n=n^m;  
  3. m=n^m;//n^m^m等于n  
  4. n=n^m;  
  5. System.out.println("交换后的值:"+"\n"+"n="+n+"\n"+"m="+m);  


 

[java] view plaincopy
  1. //位运算符,进制转换(十进制转换为十六进制)  
  2. int num=60;  
  3. int n1=num & 15;//获取num最低4位  
  4. System.out.println((char)(n1-10+'A'));  
  5. int temp=num>>>4;//要获取下一组四位,将60右移4位  
  6. int n2=temp & 15;//对temp的值进行最低四位的获取  
  7. System.out.println(n2);  


    

 

五、逻辑运算符:

         &        and

          |           or

         &&   先判断前面一个条件,如果为假,则不用计算后一个条件

         ||       先判断前面一个条件,如果为真,则不用计算后一个条件

         ^      异或(相同为flase,不同为true)

              (true=flase  )

         " + "运算符:两个操作的对象是数值时,是加法。如果有一个是字符串时,则是字符串的连接。

 

六、转义字符(常用)

         \n换行

         \b退格。

         \r按下回车

         \t制表符(Tab键)

 

七、算数运算符

         + (数值相加,字符串相连。),-(双目:减号。单目:负号), *  / %(膜), ++(自增),--(自减)" + "运算符:两个操作的对象是数值时,是加法。如果有一个是字符串时,则是字符串的连接。

 

八、赋值和比较运算符

         赋值运算符:=+= -=*= /= %=

比较运算符:==,!=><>=<=instanceof(检查是否是类的对象)

         int a,b,c;

         a=b=c=3;//赋值

         注意:

         short s=3;

         s=s+2;//编译失败,s被提升为int类型,运算后结果还是int类型,无法赋值给short类型。

         s+=2;//编译通过,因为+=运算符在给s赋值时,自动完成了强制转换工作。

 

         比较运算符的结果都是boolean型(要么true,要么false)。

        

                                    

九、流程控制语句:

         Java与C++相同。

         If    if…..else      if….. else if…..else

         switch中的变量类型只能是byte shortintchar四种类型。

        

 

复习了两天,做做小程序吧!

源代码:

[java] view plaincopy
  1. /* 
  2. 需求:输出"100~999之间水仙花数:" 
  3. */  
  4. public class Narcissus  
  5. {  
  6.     public static void main(String args[])  
  7.     {  
  8.         System.out.println("100~999之间水仙花数:");  
  9.         int k,a,b,c,d;  
  10.         for(k=100;k<1000;k++)  
  11.         {  
  12.             a=k/100;  
  13.             b=k%100/10;  
  14.             c=k%10;  
  15.             d=a*a*a+b*b*b+c*c*c;  
  16.   
  17.         if(d==k)  
  18.             System.out.println(k);  
  19.         }  
  20.     }  
  21.   
  22. }  


 

黑马程序员_Java基础_进制转换、基本数据类型、运算符、流程控制语句等