一、方法
格式
访问修饰符 返回值类型 方法名(参数类型 参数名,...){
方法体;
【return 值】
}
访问修饰符 :目前为止 public static
返回值类型 : 基本数据类型【字符型char 整数型byte、short、int、long 布尔型boolean 浮点型float、double】 String void
方法名,参数名 : 自定义的 符合标识符命名规则即可
参数类型: 基本数据类型【字符型char 整数型 布尔型 浮点型】 String
注意:方法定义在类里方法外;不调用 不执行;写方法只要考虑 返回值类型和 参数 【要不要参数 要什么类型 几个】
方法的调用
调用方法:
(1)直接调用。有返回值类型的方法,使用直接调用没意义
(2)输出调用。在输出语句中调用
(3) 赋值调用。把调用的结果赋值给一个变量
案例演示:
public class Demo01 {
// 入口
public static void main(String[] args) {
System.out.println(sum(10,20));
int c = sum(6,7);
System.out.println(c);
// 需求 :谁说我要求的值 就是10 和20 的和 为了应对不同的需求:
// 未来 你想求哪两个数字的和 你告诉方法 方法帮你求
}
// 两个数字求和 方法 有返回值类型 int 没参数
// public static int sum(){
// int a = 2;
// int b = 3;
// int c = a+b;
//
// // 返回的值 的类型必须和 返回值类型一致
// return c;
// }
// 两个数字求和 方法 有返回值类型 int 要参数【两个 int 】
public static int sum(int a,int b){
int c = a+b;
// 返回的值 的类型必须和 返回值类型一致
return c;
}
}
注意:
(1)方法不调用不执行
(2)方法与方法是平级关系,不能嵌套定义
(3)方法定义的时候参数之间用逗号隔开
(4)方法调用的时候不用再传递数据类型
(5)如果方法有明确的返回值,一定要有return带回一个值
案例演示:
//键盘录入,行和列 输入“*”
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入行:");
int row = sc.nextInt();
System.out.print("请输入列:");
int lie = sc.nextInt();
//调用
printXing(row,lie);
}
//带参数、没有返回值的 方法
public static void printXing(int x,int y){
for (int i=1;i<=x;i++){
for (int j=1;j<=y;j++){
System.out.print("*");
}
System.out.println();
}
}
方法重载
概述:在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。
方法重载特点:
(1)与返回值类型无关,只看方法名和参数列表
(2)在调用时,虚拟机通过参数列表的不同来区分同名方法
案例演示:
//数字求和
public static void main(String[] args) {
System.out.println(sum(10,20));
System.out.println(sum(10,20,30));
}
public static int sum(int a,int b){
int c = a+b;
return c ;
}
public static double sum(double a,int b){
double c = a+b;
return c ;
}
public static int sum(int a,int b,int c){
int d = a+b+c;
return d;
}
二、数组
数组的概念:
数组是存储同一种数据类型多个元素的集合(可以看成是一个容器),数组既可以存储基本数据类型,也可以存储引用数据类型
数组初始化概述:
Java中的数组必须先初始化,然后才能使用。所谓初始化,就是为数组中的数组元素分配内存空间,并为每个数组元素赋值
数组的初始化方式
动态初始化:只指定数组长度,由系统为数组分配初始值
静态初始化:指定每个数组元素的初始值,由系统决定数组长度
动态初始化:
格式:数据类型[ ] 数组名 = new 数据类型[数组长度];
数组长度其实就是数组中元素的个数。
举例:
int[ ] arr = new int[3];
解释:定义了一个int类型的数组,这个数组中可以存放3个int类型的值。
一个数组内存图解:
两个数组内存图解:
案例演示:
public static void main(String[] args) {
int[] arr = new int[3];
System.out.println(arr);
arr[0] = 100;
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
// 数组3
int[] arr3 =arr;
System.out.println(arr3[0]);
System.out.println(arr3);
arr3[0] = 1000;
arr3[1] = 200;
System.out.println(arr[0]);
System.out.println(arr3[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
}
静态初始化
格式:
数据类型[] 数组名 = new 数据类型[]{元素1,元素2,…};
简化写法:
数据类型[] 数组名 = {元素1,元素2,…};
案例演示:
public static void main(String[] args) {
// 静态初始化
// int[] arr =new int[]{1,2,3};
// 简化定义方式
int[] arr ={1,2,3,3,4,5};
// 输出第一个元素的值
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
// 重新赋值
arr[0] = 1000;
System.out.println(arr[0]);
}
数组遍历:
遍历就是得到数组中的每个元素
案例演示:
public static void main(String[] args) {
int [] arr = {12,12,34,23,45,23,45};
for (int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
}
三、位运算符
课后练习:
//1.求数组中每个元素的和、平均值
public class Demo06 {
public static void main(String[] args) {
int [] arr = new int[]{18,19,17,20,21,22,23,24,22,25};
int sum = 0;
for(int i=0;i<arr.length;i++){
sum = sum+arr[i];
}
double avg = sum/arr.length;
System.out.println("和为:"+sum);
System.out.println("平均值为:"+avg);
}
}
//2.键盘录入,输入几,就打印几几乘法表
public class Demo03 {
public static void main(String[] args) {
//键盘录入,几几乘法表
Scanner sc = new Scanner(System.in);
System.out.print("请输入数字:");
int num = sc.nextInt();
//调用
printChengFa(num);
}
//定义方法
public static void printChengFa(int x){
for (int i=1;i<=x;i++){
for (int j=1;j<=i;j++){
System.out.print(j+"*"+i+"="+j*i+"\t");
}
System.out.println();
}
}
}
//定义方法,遍历数组求最大、最小值
public class Test01 {
public static void main(String[] args) {
int [] arr = {1,12,12,34,89,23,45,23,45};
System.out.println("最大值是:"+getMax(arr));
System.out.println("最小值是:"+getMin(arr));
}
//获取最大值
public static int getMax(int[] arr){
int max = arr[0];
for (int i=0;i<arr.length;i++){
if (max>arr[i]){
max = max;
}else {
max = arr[i];
};
}
return max;
}
//获取最小值
public static int getMin(int[] arr){
int min = arr[0];
for (int i=0;i<arr.length;i++){
if (min<arr[i]){
min = min;
}else {
min = arr[i];
}
}
return min;
}
}