android基础-Java篇01:Java数据类型、分支循环
一、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循环
执行语句;
}
如:
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是先进行判断再执行语句。
------------------------------------------------分割线----------------------------------------------------------
上文如有错误、写得不合理以及有疑惑的地方,希望您可以在评论区提出。
在下十分感谢。
如果只是想在评论区吐吐槽、聊聊心得、卖个萌,同样也十分欢迎。
祝大家生活美好,干杯!~( ゜▽゜)つロ
转载请注明原作者以及附上原文章地址,谢谢。