第一章 引用数据类型
与4类8种的基本数据类型不同。
1.1 Scanner类
这个类是sun公司为程序开发者写好的类,我们只需要调用它。
Scanner类的作用是接受键盘的输入。
定义引用数据类型变量与基本类型变量有所区别:
定义基本类型变量格式:
数据类型 变量名 =数值;
例如:int a =1;
定义引用数据类型变量格式:
数据类型 变量名 = new 数据类型();
例如:创建出Scanner类的变量
Scanner sc = new Scanner();
每个引用类型都有其功能,我们可以调用该类型实例的功能。
调用格式:
变量名.方法名();
使用Scanner类步骤:
- 导包:指明该类所在的文件夹
import java.util.Scanner;
- 创建对象实例:创建出Scanner类型变量
Scanner sc = new Scanner(System.in);
- 调用方法:变量名.方法名();
sc.nextInt(); //用来接收输入的数字 sc.next(); //用来接收输入的字符串
Scanner包所处位置:
package practice;
import java.util.Scanner;
public class ScannerDemo{
public static void main(String[] args) {
//类型 变量名 = new 类型()
//创建出Scanner,类变量
Scanner sc = new Scanner(System.in);
//变量.功能名() 接受键盘输入
//功能:nextInt() 接受键盘输入,保证输入是整数
System.out.println("请输入数字:");
int i = sc.nextInt();
System.out.println(i);
//Scanner的next功能 ,next接受键盘输入的字符串
System.out.println("请输入字符串:");
String st = sc.next();
System.out.println(st);
}
}
结果:
1.2随机数类Random
用来产生随机数的类Random,它也属于引用数据类型。
Random类,它可以产生多种数据类型的随机数,在这里我们主要介绍生成整数与小数的方式。
public int nextInt(int maxValue) 产生[0,maxValue)范围的随机整数,包含0,不包含maxValue;
public double nextDouble() 产生[0,1)范围的随机小数,包含0.0,不包含1.0,并且不能指定范围
例如:
nextInt(100) //产生一个0-99的随机数,结果是int类型的
nextDouble() //产生一个0.0-1.0的随机数,可以产生0,但达不到1.0
使用Random类步骤:
- import导包:所属包java.util.Random
import java.util.Random;
- 创建对象实例:Random 变量名 = new Random();
Random ran = new Random();
- 调用方法:变量名.方法名();
ran.nextInt(100); //int型随机变量
ran.nextDouble();//double型随机变量
/*
nextInt(100)//产生一个0-99的随机数,结果是int类型的
nextDouble()//产生一个0.0-1.0的随机数,可以产生0,但达不到1.0
随机数:伪随机数,虚拟机根据人写好的算法,生成的随机数
*/
package practice;
import java.util.Random;
public class RandomDemo{
public static void main(String[] args) {
Random ran = new Random();
//Random类中产生随机数的功能
int i = ran.nextInt(100);
System.out.println(i);
//产生随机数,范围1-100之间
System.out.println(i+1);
double d = ran.nextDouble();
System.out.println(d);
}
}
结果:
第二章 流程控制语句
2.1 选择结构if
2.1.1if语句
if语句的语法格式:
if (条件语句){
执行语句;
……
}
2.1.2 if...else语句
if…else语句语法格式:
if (判断条件){
执行语句1
……
}else{
执行语句2
……
}
2.1.3 if…else if…else语句
if…else if…else语句用于对多个条件进行判断,进行多种不同的处理。
if…else if…else语句语法格式:
if (判断条件1) {
执行语句1
} else if (判断条件2) {
执行语句2
}
...
else if (判断条件n) {
执行语句n
} else {
执行语句n+1
}
public class IfElseIfDemo{
public static void main(String[] args){
//成绩判断要求 ,成绩>80 成绩>70 成绩>60 不及格
//定义变量,保存成绩
int grade = 75;
//使用if else if 语句对成绩判断
if( grade > 80 ){
System.out.println(grade+" 成绩是优");
}else if ( grade > 70){
System.out.println(grade+" 成绩是良");
}else if ( grade > 60){
System.out.println(grade+" 成绩是中");
}else{
System.out.println(grade+" 成绩是差");
}
/*
方法二:执行效率低
if( grade > 80){
//优
}
if( grade > 70 && grade < 80){
//良
}
if( grade > 60){
//中
}*/
}
}
if…else if…else功能也可以使用if语句实现,但是if语句的效率低。因为if语句第一个判断不成立,下面的一个个都进行判断。但是 if…else if…else第一个不成立,则下面的都不执行。
2.1.4 选择结构if语句与三元运算转换
三元运算符与if-else语句类似,语法如下:
判断条件 ? 表达式1 : 表达式2 //当判断条件成立时,则执行表达式1,否则执行表达式2
使用if还是三元?
- 判断条件多,使用if
- 三元,必须要有结果, if 可以没有结果
2.2while循环语句
while语句会反复地进行条件判断,只要条件成立,{}内的执行语句就会执行,直到条件不成立,while循环结束。while循环语句的语法结构如下:
while(循环条件){
执行语句
………
}
2.3for循环语句
for循环语句是最常用的循环语句,一般用在循环次数已知的情况下。for循环语句的语法格式如下:
for(初始化表达式; 循环条件; 操作表达式){
执行语句
………
}
2.4 do…while循环语句
do…while是先执行后判断,while是判断后执行。
do…while循环语句将循环条件放在了循环体的后面。这也就意味着,循环体会无条件执行一次,然后再根据循环条件来决定是否继续执行。
do {
执行语句
………
} while(循环条件);
2.5 无限循环
无限循环存在的原因是并不知道循环多少次,而是根据某些条件,来控制循环。
while(true){}
或
for(;;){}
2.6 循环嵌套
嵌套循环是指在一个循环语句的循环体中再定义一个循环语句的语法结构。while、do…while、for循环语句都可以进行嵌套,并且它们之间也可以互相嵌套,如最常见的在for循环中嵌套for循环。
2.7 跳转语句(break、continue)
跳转语句用于实现循环执行过程中程序流程的跳转,在Java中的跳转语句有break语句和continue语句。
1、break语句
在switch条件语句和循环语句中都可以使用break语句。
- 当它出现在switch条件语句中时,作用是终止某个case并跳出switch结构。
- 当它出现在循环语句中,作用是跳出循环语句,执行后面的代码。
2.标记
当break语句出现在嵌套循环中的内层循环时,它只能跳出内层循环,如果想使用break语句跳出外层循环则需要对外层循环添加标记。
public class BreakDemo02 {
public static void main(String[] args) {
int i, j; // 定义两个循环变量
itcast: for (i = 1; i <= 9; i++) { // 外层循环
for (j = 1; j <= i; j++) { // 内层循环
if (i > 4) { // 判断i的值是否大于4
break itcast; // 跳出外层循环
}
System.out.print("*"); // 打印*
}
System.out.print("\n"); // 换行
}
}
}
只是在外层for循环前面增加了标记“itcast”。当i>4时,使用break itcast;语句跳出外层循环。因此程序只打印了4行“*”。
3.continue语句
continue语句用在循环语句中,它的作用是终止本次循环,执行下一次循环。
举例:对1~100之内的奇数求和
public class ContinueDemo {
public static void main(String[] args) {
int sum = 0; // 定义变量sum,用于记住和
for (int i = 1; i <= 100; i++) {
if (i % 2 == 0) { // i是一个偶数,不累加
continue; // 结束本次循环
}
sum += i; // 实现sum和i的累加
}
System.out.println("sum = " + sum);
}
}
在循环过程中,当i的值为偶数时,将执行continue语句结束本次循环,进入下一次循环。当i的值为奇数时,sum和i进行累加,最终得到1~100之间所有奇数的和。
猜数值:
package day3;
import java.util.Random;
import java.util.Scanner;
public class GuestNumber {
public static void main(String[] args) {
//生成随机数1-10
Random ran = new Random();
int r = ran.nextInt(10)+1;
//键盘输入
System.out.println("请猜值:");
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
while(r!=num) {
System.out.println("猜错了");
if(r>num)
System.out.println("猜小了");
else
System.out.println("猜大了");
System.out.println("请重猜:");
num = sc.nextInt();
}
System.out.println("猜对了,随机数为:"+r);
}
}
结果: