java-基本数据类型 循环

来源:互联网 发布:union软件安卓 编辑:程序博客网 时间:2024/04/27 06:43

引言
想重点说明一下数据类型之间的转换和需要注意的点。
数据类型
首先,数据类型的分类如下:
基本类型:4类8种
4类有:整数、浮点数、字符、布尔
而8种则是:
整数 占用字节 范围
byte 1 -128~127
short 2 -2^15~2^15-1
int 4 -2^31~2^31-1
long 8 -2^63~2^63-1
浮点数
float 4 -3.403E38 ~ 3.403E38
double 8 -1.798E308 ~ 1.798E308
字符
char 2
Java采用的是unicode编码。所以java中每一个字符占用两个字节。这样就可以存储一个汉字了。
布尔
boolean 1 true,false
注意:
A:默认整数是int类型
B:默认浮点数是double类型
C:如果要定义long类型的变量,建议加L或者l。建议加L。
D:如何要定义float类型的变量,必须加F或者f。建议加F。
可以用一些简单的代码来实现:

public class Type2 {    public static void main(String[] args) {        //int i =100;        //byte i = 100;        //short i  =100;        //强调:如果创建一个long类型的变量,需要给变量值后面加上一个L        //long i = 10000000000L;        //浮点型        //double i  = 12.23;//浮点型默认是double类型        //强调:如果创建一个float类型的浮点型变量,需要赋值的时候后面加上F        //float i = 12.34F;        //字符型,单引号里面只能有单个字符        //char i = '0';        //布尔类型        boolean i = false;        System.out.println(i);    }}

前三个int、byte、还有short输出结果是一样的,都是100
在输出long时,如果在后面不加上L(小写也可以),那么编译器(eclipse)就会报错:
Exception in thread “main” java.lang.Error: Unresolved compilation problem:
The literal 10000000000 of type int is out of range
同理,float也是一样,字符在编程时要给字符价单引号,一定要注意这里的的char指的是单个字符,而布尔型只有true和false两种类型。在整数和浮点数还有一点要注意的是因为浮点数和整数的默认整数是double和int,因此在做运算时,整数的运算结果默认为int型,浮点数的运算结果默认是float型。
键盘录入数据的步骤
A:导包
import java.util.Scanner;
位置:class之前,上面
B:创建键盘录入对象
Scanner sc = new Scanner(System.in);
C:获取键盘录入数据
int i = sc.nextInt();
可以用一个简单的例子说明一下:

package com.edu_05;//需求:键盘录入两个数据,获取这两个数据中的最大值//1.导包import java.util.Scanner;public class ScannerDemo2 {    public static void main(String[] args) {        //2.创建键盘录入对象        Scanner sc  = new Scanner(System.in);        //3.接受键盘录入数据        System.out.println("请输入第一个数字");        int a = sc.nextInt();        System.out.println("请输入第二个数字");        int b = sc.nextInt();        //接受完键盘录入数据之后,后进行比较        System.out.println((a>b)?a:b);    }}

流程控制语句
A:顺序结构(没有基本格式,从上往下依次执行)
B:选择结构(有格式)
if
switch
C:循环结构(有格式)
for
while
do…while
其中,顺序结构写在前面的先执行,写在后面的后执行。
选择结构格式:
if语句格式1:
if(比较表达式) {
语句体
}
执行流程:
首先判断比较表达式看其结果是true还是false
如果是true就执行语句体
如果是false就不执行语句体
if语句的注意事项:
A:比较表达式无论简单还是复杂,结果必须是boolean类型
B:一般来说:
有左大括号就没有分号,有分号就没有左大括号
写一个需求:如果数字是10,就输出10这个数字

public class IfDemo {    public static void main(String[] args) {        //如果数字是10,就输出10这个数字        int num = 9;        if(num==10){            System.out.println(num);        }    }}

if语句格式2:
if(比较表达式) {
语句体1;
}else {
语句体2;
}
执行流程:
首先判断关系表达式看其结果是true还是false
如果是true就执行语句体1
如果是false就执行语句体2
写一个需求:判断两个数是否相等

public class IfDemo2 {    public static void main(String[] args) {        //判断两个数是否相等        if(a==b){            System.out.println("两数相等");        }else{            System.out.println("两数不等");        }        System.out.println("--------------");        boolean flag = (a==b)?true:false;        System.out.println(flag);    }}

if语句格式3:
if(比较表达式1) {
语句体1;
}else if (比较表达式2) {
语句体2;
}

else {
语句体n+1;
}
执行流程:
首先判断关系表达式1看其结果是true还是false
如果是true就执行语句体1
如果是false就继续判断关系表达式2看其结果是true还是false
如果是true就执行语句体2
如果是false就继续判断关系表达式…看其结果是true还是false

如果没有任何关系表达式为true,就执行语句体n+1。
写一个需求:
键盘录入学生成绩,根据学生成绩判断,输出学生等级
90-100 A
80-89 B
70-79 C
60-69 D
60以下 E

package com.edu_07;import java.util.Scanner;public class IfDemo3 {    public static void main(String[] args) {            /*需求:                键盘录入学生成绩,根据学生成绩判断,输出学生等级                    90-100  A                    80-89   B                    70-79   C                    60-69   D                    60以下    E         */        Scanner sc = new Scanner(System.in);        System.out.println("请输入你的学生成绩");        int score = sc.nextInt();        //拿到成绩使用if做判断        if(score>=90&&score<=100){            System.out.println("成绩等级是A");        }else if(score>=80&&score<=89){            System.out.println("成绩等级是B");        }else if (score>=70&&score<=79) {            System.out.println("成绩等级是C");        }else if(score>=60&&score<=69){            System.out.println("成绩等级是D");        }else if (score>=0&&score<60) {            System.out.println("不及格");        }else {            System.out.println("输入成绩不再考核范围内");        }    }}

switch语句的格式:
switch(表达式) {
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;

default:
语句体n+1;
break;
}
格式解释:
A:switch表示这是switch语句
B:表达式
表达式的取值:byte,short,int,char
JDK5以后可以是枚举
JDK7以后可以是String
C:case后面跟的是要和表达式进行比较的值
D:语句体部分可以是一条或多条语句
E:break表示中断,结束的意思,可以结束switch语句
F:default语句表示所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似。
执行流程:
首先计算出表达式的值
其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。
最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。
switch语句的注意事项:
A:case后面只能是常量,不能是变量。
B:多个case后面的值不能出现相同的。
C:default可以省略吗?
可以。但是不建议。
D:break可以省略吗?
可以。但是不建议。
容易出现case穿透。
E:default的位置一定要在最后吗?
可以在任意位置,建议在最后。
F:switch语句的结束条件
a:遇到break
b:执行到末尾
需求:用switch语句实现键盘录入月份,输出对应的季节。

package com.edu_08;import java.util.Scanner;public class SwitchDemo2 {    public static void main(String[] args) {        int month = sc.nextInt();        switch(month){        case 3:        case 4:        case 5:            System.out.println("春季");            break;        case 6:        case 7:        case 8:            System.out.println("夏季");            break;        case 9:        case 10:        case 11:            System.out.println("秋季");            break;        case 12:        case 1:        case 2:            System.out.println("冬季");            break;        }    }}

循环结构格式:
循环语句组成:
A:初始化语句
一条或者多条语句,这些语句完成一些初始化操作。
B:判断条件语句
这是一个boolean表达式,这个表达式能决定是否执行循环体。
C:循环体语句
这个部分是循环体语句,也就是我们要多次做的事情。
D:控制条件语句
a、这个部分在一次循环体结束后,下一次循环判断条件执行前执行。b、通过用于控制循环条件中的变量,使得循环在合适的时候结束。
for循环:
for(初始化语句;判断条件语句;控制条件语句) {
循环体语句;
}
执行流程:
A:执行初始化语句
B:执行判断条件语句
如果是true:就继续执行。
如果是false:就结束循环。
C:执行循环体语句
D:执行控制条件语句
E:回到B
执行次数:
A:初始化语句
只执行一次
B:判断条件语句
一次以上
C:循环体语句和控制条件语句
0次以上
需求:请在控制台输出数据10-1

package com.edu_09;public class ForDemo3 {    public static void main(String[] args) {        //请在控制台输出数据10-1        for(int i =10;i>=1;i--){            System.out.println(i);        }    }}

while循环的格式:
while(判断条件语句) {
循环体语句;
}
变形格式:
初始化语句;
while(判断条件语句) {
循环体语句;
控制条件语句;
}
执行流程:
A:执行初始化语句
B:执行判断条件语句
如果是true:就继续执行。
如果是false:就结束循环。
C:执行循环体语句
D:执行控制条件语句
E:回到B
需求:求出1-100之间偶数和

package com.edu_10;public class WhileDemo2 {    public static void main(String[] args) {        /**         * 3.求出1-100之间偶数和         */        int i = 1;        int sum = 0;        while (i<=100) {            if (i%2==0) {                sum+=i;            }            i++;        }        System.out.println(sum);    }}

for循环和while循环的区别
控制条件语句所控制的那个变量,在for循环结束后,就不能再被访问到了,而while循环结束还可以继续使用,如果你想继续使用,就用while,否则推荐使用for。原因是for循环结束,该变量就从内存中消失,能够提高内存的使用效率。
do…while的格式:
do {
循环体语句;
}while((判断条件语句);
变形格式:
初始化语句;
do {
循环体语句;
控制条件语句;
}while(判断条件语句);
执行流程:
A:执行初始化语句
B:执行循环体语句
C:执行控制条件语句
D:执行判断条件语句
如果是true:就继续执行。
如果是false:就结束循环。
E:回到B
三种循环的区别?
A:do…while循环至少会执行一次循环体。
B:for循环和while循环只有在条件成立的时候才会去执行循环体
他们是可以相互转换的。
注意事项:
死循环
for( ; ; ){}
while(true){}

0 0
原创粉丝点击