android基础-Java篇01:Java数据类型、分支循环

一、Java数据类型

android基础-Java篇01:Java数据类型、分支循环

引导图

Java数据类型可分为(1)内置数据类型 (2)引用数据类型

    (一) 内置数据类型

    1.数字类型

        a)  byte

            8位、有符号的,以二进制补码表示的整数,可以理解为,取值范围内所有整数个数有28个。

            值范围为-27~27-1(-128~127)

            默认值为0;

            (负数的128个整数+默认值0+正数的127个=256(28)个整数)

        b) short

            16位、有符号的,以二进制补码表示的整数,取值范围内所有整数个数有216

            值范围为-215~215-1(-32768~32767)

            默认值为0;

        c) Int

            32位、有符号的,以二进制补码表示的整数,取值范围内所有整数个数有232

            值范围为-231~231-1

            默认值为0;

            整型变量都默认是int类型

        d)Long

            64位、有符号的,以二进制补码表示的整数,取值范围内所有整数个数有264

            值范围为-263~263-1

            默认值为0L;

            Long类型在声明的时候,必须在数值后加“L”,在下文的声明例子中有体现。

        e)float&double

          从上面的引导图可以看出,float和int 一样是32位,double和long一样是64位,那为什么将float和double提出来放一起说明呢?

            因为float和double都是浮点型,而前面我们提到的四个数据类型都是整数。

            a.float

                32位,单精度,有效位数为7位,符合IEEE754标准的浮点数

                默认值为0.0f

            b.double

                64位,双精度,有效位数为16位,符合IEEE754标准的浮点数

                默认值是0.0d

                在代码中,浮点数的默认类型是double类型

                然而浮点数不能用来表示精确的值,简单来说就是十进制码的部分小数无法用机器码(2进制码)精确的表示。

 (感兴趣的可以查看Dablelv的博文《IEEE754浮点数的表示方法》https://blog.csdn.net/k346k346/article/details/50487127, 同时关于浮点数的取值范围这里不做太多解释,因为一般开发中,能知其有效位数就足够了,感兴趣同样进上面的链接查看)

    2. 布尔类型

        Boolean:表示1位的信息

        Boolean只有两个值:true和false

        默认值是false

        这里一定要注意的是和C语言区分出来,在C语言中Boolean的赋值0表示false,1和大于1的值表示true,然而在Java中,boolean只能用true和false表示。

    3. 字符类型

           char:一个单一的16位Unicode字符

           最小值是\u0000

           最大值是\uffff

           Char数据类型可以储存任何字符

           (Unicode是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案)

    4.各类型声明例子

    Byte:  byte a = 127 , byte b = -128;

    Short: short c =20000 , short d = -20000;

    Int:   int e = 200000 , int f = -200000;

    Long: long g =200000L , long h = -200000L;

    Float: float I =2.345f ,  float j = -2.345f

    Double: double k =2.456789 , double l = -2.456789

    Char: char m = ‘A’ ,char n = “帅”

    在声明例子可以看出,long类型和float类型要在数值后面加上字母。

    在存储上,二进制的位数越大,其占字符(储存空间)越大

    如:64位二进制表示的long类型 大于 32位二进制表示的Int类型 以此类推。


    (二) 引用数据类型

        在Java中,引用类似于C/C++的指针,一个变量指向一个对象/数组,那这个变量就是引用对象。

        当创建了一个引用变量未指向时,那这个引用变量的值为null(默认值)

        如引导图中的例子

        一个人想到一个理发师名字tony老师,但是这个名字还没指定谁用,那么这个名字没有指向任何一个对象,就是为null;这个名字给了一个叫tony的理发师用,那么 tony老师就指向了一个叫tony的理发师(对象)。

 

二、分支语句和循环语句

    (一)分支语句:1、if-else语句; 2、switch语句

    1. if-else语句

    if-else语句有三种形态:

    a)  if(条件){满足条件发生的事情 };

    在中文逻辑为,如果XXX(条件),那么XXXX(发生的事情),不满足条件时,将跳过发生的事情。

    b)  if (条件){ 满足条件发生的事情 }else{ 不满足条件发生的事情 };

        如:

        if(tonyishere == true){

            haircut = true 

        }else{

            haircut = false  };

    如果 Tony老师在的话(条件),那么 我要理发(条件满足),不在的话就不理发了。(条件不满足)

 

    c)  if (条件一){

            满足条件一发生的事情

        }else if(条件二){

            满足条件二发生的事情

        } … else if(条件N){

            满足条件N发生的事情
        }

        如:

        if(tonyishere == true){

            haircut = true 

        }else if(kevinishere == true){

            haircut = true 

        }else { haircut = false };

        如果 Tony老师在的话(条件一满足),那么 我要(tony)理发;不在的话(条件一不满足),那么kevin老师在的话(条件二满足)那么我要(kevin)理发,也不在的话(条件二不满足),那我不理发了。

        If 和else if 以及else 之间只会发生一个,按照顺序判断,如果条件一满足,运行满足条件一的语句之后,将跳出整个if-else语句,不判断条件二~条件N;

        如上面的例子,Tony老师在的话,我就直接找Tony老师理发,也不会问kevin老师在不在了。

        当if 和 else if都不满足之后,如果后面有else,就会直接运行else里面的语句,没有则结束整个if-else语句。

 

    2.switch语句(也可以叫选择判断语句)

         Switch只有一种形态:

         switch (表达式){

            case 表达式值1:

                 语句1;

                 Break;

            case 表达式值2:

                 语句2;

                 Break;
                       ……

            case 表达式值n:

                  语句n;

                  Break;

            default:

                  语句;

                  Break;

        }

 

       进入switch之后,顺序判断其表达式的值,从表达式值等于某个case语句后的值开始,它下方的所有语句都会一直运行,直到遇到一个break为止。

        例如,店员问我几号理发师为你服务的时候(表达式),我说1号tony(表达式值为1),那么一号tony老师就帮你理发了(语句1),剪完(遇到break;)那么就跳出switch语句了。

        假如switch语句中并没有写break,程序变成这样:

    switch (表达式){

        case 表达式值1:

                 语句1;
                   ……

        case 表达式值n:

                 语句n;

        default:

                 语句n+1;

        }

        那么刚刚例子的情况就会变成,店员问我几号理发师为你服务的时候(表达式),我说1号tony(表达式值为1),1号tony老师以及1号以后的所有理发师都会过来帮你理发,直到n+1号(语句1以及以下的所有语句都被执行),整个switch语句结束。

        Default和if-else语句中的else一样,如果后面有则运行里面的语句,没有则结束整个语句。

 

    (二)循环语句1、for循环 2、while循环  3、do..while语句

            1.for循环

                for(单次表达式;条件表达式;末尾循环体){

                    执行语句;

                }

            如:

                Int j;

                for (int i=0; i<10 ; i++){

                     j++;

                }

            i一开始等于0 ,i满足i<10,执行语句j++,执行结束,i++ ,i=1,判断是否满足i<10…..

            如上 一直循环,直到i不满足i<10时,跳出整个循环语句。

 

            2.while循环

                while (表达式){

                     执行语句;

                }

            当表达式为true时,一直循环执行语句,直到表达式为false时,跳出整个循环语句。

            如

            Int j;

            While(j<10){

                j++;

            }

           一直循环到j=10,while里面的表达式j<10为false时,跳出循环。

 

            3.do..while语句

            do{

                执行语句;

            }while(表达式);

          do…while语句和 while循环差不多,不过do…while语句是先执行语句再表达式判断,而while是先进行判断再执行语句。

------------------------------------------------分割线----------------------------------------------------------

上文如有错误、写得不合理以及有疑惑的地方,希望您可以在评论区提出。

在下十分感谢。

如果只是想在评论区吐吐槽、聊聊心得、卖个萌,同样也十分欢迎。

祝大家生活美好,干杯!~( ゜▽゜)つロ

 转载请注明原作者以及附上原文章地址,谢谢。