Day15
一、学习目标
1.数组的使用
2.导包
3. 关键字
4.方法重载
二、知识点
1.数组的特点:(复习)
数组是一种引用数据类型
数组当中可以存储多个数据,但是类型必须统一
数组的长度在程序的运行期间,是不可改变的
2.导包三步骤
A.导包
import包路径.类名称
如果需要使用的目标类和当前类位于不同一个包下,则可省略导包语句
默认只有java.long包下的内容可以不导包,其他路径都需import导包
B.创建对象
C.使用成员方法
获取键盘输入的int数字 int num= sc.nextInt( )
获取键盘输入的字符串 String str=sc.next( )
3. 关键字:
(1) Scanner 三步骤,导包、创建、使用方法
(2) Random 类用来生产随机数字
(3)都可以直接导包
4. 为什么需要方法重载
(1)对于功能类似的方法来说,因参数列表不一样,需要记住很多不同参数的方法,太麻烦
(2)方法的重载(Overload ):多个方法的名称一样,但是参数列表却不一样
(3)好处:只需要记住唯一一个方法名称,就可以实现多个功能。
三、应用运行
1.数组的使用
代码示例
package demo01;
public class Demo01ArrayParam {
public static void main(String[] args) {
int[] array={1,2,3};
System.out.println(array);//地址的哈希值
printArray(array);//值赋给了arrayTemp
}
//数组作为参数,传递的始终是数组地址值
public static void printArray(int[] arrayTemp) {
System.out.println("printArray方法接收到的参数是");
System.out.println(arrayTemp);//接收的是地址
for(int i=0;i<arrayTemp.length;i++) {
System.out.println(arrayTemp[i]);
}
}
}
运行结果
小练数组代码
package demo01;
public class Demo02ArrayReturn {
public static void main(String[] args) {
int[] result=calculate(10,20,30);
System.out.println("main 方法接收到的返回值");
System.out.println(result);
System.out.println("总和"+result[0]);
System.out.println("平均值"+result[1]);
}
//这个写法始终只能返回一个值
public static int[] calculate(int a,int b,int c) {
int sum=a+b+c;
int avg=sum/3;
int[] array=new int[2];
array[0]=sum;
array[1]=avg;
System.out.println("calculate 方法内部数组是");
System.out.println("10,20,30");
return array;
}
}
结果
2.导包三步骤
A.导包
例如import java.util.Scanner;将另一个包类名导过来
B.创建对象
C.使用成员方法
代码示例
package demo02;
import java.util.Scanner;
public class Demo01Scanner {
public static void main(String[] args) {
//创建对象
Scanner sc=new Scanner(System.in);//可以直接写入,点击导包就ok
//String str=
System.out.println("请输入一个数字:");
int num=sc.nextInt();
System.out.println("输入的Int数字是"+num);
System.out.println("请输入一个字符串:");
String str=sc.next();
System.out.println("输入的字符串是:"+str);
}
}
运行结果
3. 关键字
举个列题:求输入两个int数字的和
思路:
a.既然要用到键盘输入,就要用到Scanner
b.Scanner 三步骤,导包、创建、使用方法
c.需要两个int数字,应该使用nextInt()
d.在得到两个数字后,直接相加
e.打印输出结果
(1) Scanner 三步骤,导包、创建、使用方法
代码示例
package demo02;
import java.util.Scanner;
public class Demo02ScannerSum {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个数字:");
int a=sc.nextInt();
System.out.println("请输入二个数字:");
int b=sc.nextInt();
int result=a+b;
System.out.println("结果是:"+result);
}
}
当你直接输入Scanner sc=new Scanner(System.in);时,系统会显示有错误,点击有问题的Scanner导入,就可以实现import java.util.Scanner;自动导包。
运行结果
(2)Random 类用来生产随机数字
使用三步骤:
a.导包
import java
b.创建对象
a.使用成员方法
说明:
直接使用int num=ran.nextInt();
产生的随机数是整个int范围,有政府两种
有参使用int num=ran.nextInt(8);
代码示例
package demo03;
import java.util.Random;
public class Demo01Random {
public static void main(String[] args) {
Random ran=new Random();
int num1=ran.nextInt();
System.out.println("无参随机数是:"+num1);
System.out.println("==========");
for(int i=0;i<100;i++) {
int num2=ran.nextInt(10);//[0,10]======>[0,9]整数
System.out.println("有参随机数是:"+num2);
}
System.out.println("==========");
for(int i=0;i<100;i++) {
int num2=ran.nextInt(10)+1;//[0,9]------->[0,10]整数
System.out.println("有参随机数是:"+num2);
}
System.out.println("==========");
//错误写法
for(int i=0;i<100;i++) {
int num2=ran.nextInt(10+1);//[0,11]------->[0,10]整数
System.out.println("有参随机数是:"+num2);
}
}
}
运行结果
(只截取了部分为参考)
以 猜数字0-100之间的数字游戏 为例
代码示例
package demo03;
import java.util.Random;
import java.util.Scanner;
public class demo02RandandGame {
public static void main(String[] args) {
Random r=new Random();
int randomNum=r.nextInt(100)+1;//[1,100]\
Scanner sc=new Scanner(System.in);
while(true) {
System.out.println("请输入你猜的数字:");
int guessNum=sc.nextInt();
if(guessNum>randomNum) {
System.out.println("太小了,请重试");
}else if(guessNum>randomNum) {
System.out.println("太大了,请重试");
}
else {
System.out.println("恭喜你,答对了");
break;
}
}
System.out.println("游戏结束!");
}
}
运行结果
4. 为什么需要方法重载
重载与下列因素区别:
1.参数个数不同
2.参数类型不同
3.参数顺序不同
重载与下列因素无关:
1.与参数的名称无夫
2.余返回值类型无夫
代码示例
package demo04;
public class Demo01MethodOverload {
public static void main(String[] args) {
System.out.println(sum(10,20));
System.out.println(sum(10,20.0));
System.out.println(sum(10.0,20));
System.out.println(sum(10.0,20.0));
System.out.println(sum(10,20,30));
}
public static int sum(int a,int b){
System.out.println("参数为int,int");
return a+b;
}
public static double sum(int a,double b) {
//int+double -->double+double =double
System.out.println("参数为int,double");
return a+b;
}
public static double sum(double a,int b) {
System.out.println("参数为double,int");
return a+b;
}
public static double sum(double a,double b) {
System.out.println("参数为double,double");
return a+b;
}
public static int sum(int a,int b, int c){
System.out.println("参数为int,int,int");
return a+b+c;
}
}
运行结果
2020080605051