变量和数制进制之间的相互转换以及八大基本数据类型

来源:互联网 发布:推荐算法的稀疏性问题 编辑:程序博客网 时间:2024/06/09 14:01

* 变量:

 * 它代表了内存里的一块存储区域,这块内存区域的值是可以变化的

 * 当变量的值变化时,变的不是以前指向的内存,而是内存的二进制表现形式

 * 1、变量的声明格式:

 * 变量类型   变量名=变量值;

 * 注意:变量可以只声明,不赋值

 * 2、变量的创建位置:

 * 类体内函数外---全局变量  

 * 函数内---局部变量

 * 静态代码块和构造代码块内的变量也可以看作局部变量

 * 3、变量命名时,不要重名,并非必须(涉及内存)

 * 4、变量的类型:

 * 基本的数据类型

 * 对象类型

 * 数组

 * 内部类--(严格意义上讲,不属于变量类型,但是它的使用和变量很相似)

 

 *

 */

publicclass A_varDemon {

   publicstatic byteb=1;

   publicstatic void test(){

      b=2;

   }

   publicstatic void main(String[] args){

      test();

   }

}

* 进制:十进制--89

 * 二进制:电信号--两种状态  001001

 * 进制转换

 * 十进制转二进制

 * 17----10001

 * 转换方式,将十进制数据除以2,直到0,取余数的反序

 * 二进制转十进制

 * 1、从右到左,计算每个二进制位的对应的十进制数用

 * 2^(n-1)*对应的标记

 * 2、将这些数字相加

 * 二进制的缺点:不容易表示

 * 八进制---将三个二进制位和为一位

 * 十六进制---将四个二进制位和为一位

 * 十进制和八进制之间的转换:

 * 除以8,取余,反序

 * 十六进制和十进制转换

 * 除以十六去余数

 *

 * 大进制转小进制,直接除以小进制取余数,反序

 * 小进制转大进制,转成十进制,再转相应的进制

 

 *

 */

publicclass A_VarDemon {

   //Java中直接输出八进制和十六进制数字

   publicstatic void test(){

      //直接输出十进制数字

      int i=100;

      System.out.println("十进制:"+i);

      //Java中的八进制数字10,8进制的数以0开头

      int j=010;

      System.out.println("8进制的010代表的十进制: "+j);

      //Java中的十六进制数字,十六进制以0x开头

      int k=0xe;

      System.out.println("十六进制0xe代表的十进制:"+k);

   }

   publicstatic void main(String[] args){

      test();

   }

}

* 二进制的正负数转换

 * 二进制的表示形式:分为有符号表现形式和无符号表现形式

 *

 * 无符号表现形式:只有正数和0,没有负数

 * 有符号表示形式:

 * 1.包括正数负数和0

 * 2.二进制中从左到右的第一位,被解析为标志位,如果是1,代表负数,否则是正数

 *

 * 变量类型:

 * 当声明一个变量类型时候,编译器就会给这个变量分配一个固定长度的内存,比如byte类型--长度是8个二进制位。

 *

 * byte为例,进行正负数转换

 * 1.写出正数的表现形式

 * 0000 1010

 * 2.反码

 * 1111 0101

 * 3.反码加1,从右到左

 * 1111 0110

 *

 * 14---负数的表现形式

 * 0000 1110

 * 1111 0001

 * 1111 0010

 *

 * 将二进制正数转换成负数

 * 1.1111 0010

 * 2.1

 *  1111 0001

 * 3.反码

 *  0000 1110

 

 *1100

 *0111 11

 *00011

 *10010 17

 */

publicclass B_VarDemon {

   publicstatic byteb=10;

   publicstatic void test(){

      //调用JDK内置的类,实现十进制转二进制

      String str=Integer.toBinaryString(-14);

      System.out.println(str);

   }

   publicstatic void main(String[] args){

      test();

   }

}

*************************面试题********************************

 * 八大基本数据类型

 * 整数型:Byte short intlong

 * 浮点型:float double

 * 字符型:char

 * 布尔型:boolean

 *

 * 各个数据类型分配的内存空间大小

 * byte    8个二进制位      1个字节最大值:127 2^7-1  最小值:-128  2^7

 * short   16个二进制位      2个字节最大值:2^15-1    最小值:2^15

 * int     32个二进制位      4个字节

 * long    64个二进制位      8个字节

 * 双精度

 * float   32个二进制位      4个字节

 * double  64个二进制位     8个字节

 * char    16个二进制位---字符---无符号的

 * boolean标记--只有两个值truefalse

 *

 * String===字符串

 * 1.重要,最常用

 * 2.它不属于基本数据类型--类类型

 

 *

 */

 

publicclass A_VarDemon {

   publicstatic bytea=1;

   publicstatic shortb=2;

   publicstatic intc=3;

   publicstatic longd=4;

   publicstatic longd2=100000000000L;

   publicstatic floate=5.0F;//当小数定义为float类型的时候,在后面必须写一个F或者f;告诉编译器,不要使用默认的数据类型

   publicstatic doublef=0.1;

   //第一种赋值

   publicstatic charg='1';

   //第二种赋值

   publicstatic charg2=100;

   publicstatic booleanh=true;

   publicstatic void mian(String[] args){

      //Java中当编写一个常量,由于没有声明常量类型,但系统又要分配一块内存空间,这个内存空间有默认值,整形的默认值是int,浮点型是double

      //所以,声明float类型的数据时,变量值被系统默认为double类型的,因此需要显示的加F或者f后缀,告知编译器不使用默认的分配类型,而long

      //型的声明的数据赋值,如果值大于了int类型的取值范围,那么也需要使用Ll做标记,告知编译器不可以使用默认的int

      System.out.println(12);

   }

}

packagenet.xadaily.a.var;

publicclass A_VarTest1 {

   publicstatic inta=34;

   publicstatic intb=5;

   publicstatic void test(){

      System.out.println("a+b="+(a+b));

      System.out.println("a*b="+(a*b)); 

      System.out.println("a-b="+(a-b));

      System.out.println("a/b="+(a/b));

      System.out.println("a%b="+(a%b));

      System.out.println("++a="+(++a));

      System.out.println("a--="+(b--));

   }

   publicstatic void main(String[] main){

      test();

   }

}

输出结果:

a+b=39

a*b=170

a-b=29

a/b=6

a%b=4

++a=35

a--=5

publicclass A_VarTest2{

   publicstatic inta=22;

   publicstatic intb=33;

   publicstatic void test(){

      int sum=0;

      for(int i=1;i<=a;i++)

      {

        switch(i){

        case 22: System.out.println("循环结束");break;

        }

        sum=sum+a;

      }

      System.out.println("22a="+sum);

      int j=0;

      while(j<b)

        j++;

      System.out.println("j="+j);

     

   }

   publicstatic void testif(){

      if(a>b)

        System.out.println("a大于b");

      else

        System.out.println("a小于b");

   }

   publicstatic void main(String[] args){

      test();

      testif();

   }

}

0 0
原创粉丝点击