活动地址:CSDN21天学习挑战赛
![]()
一.方法
1.方法
- 在Java中,使用{}代码块,将我们的业务逻辑进行实现,给{}起一个名字,就是方法.
2.方法的格式
-
在Java中,定义方法的格式(有两种)
-
第一种:
-
有具体返回值的方法定义
-
-
格式
public static 返回值类型 方法名(形式参数类型1 参数名1,形式参数类型2 参数名3....){ //业务逻辑进行实现 return 具体的结果; }
-
解释说明
-
public:权限修饰符:公共的公开的/访问权限足够大
-
static:静态修饰符(面向对象中)
-
返回值类型:就是数据类型,现在只学习了基本数据类型,
-
方法名:满足标识符的规范 :方法名和变量名, "小驼峰命名法"
-
一个单词:字母小写
-
多个单词:第一个单词字母全部小写,从第二个单词开始,每一个单词首字母大写,其余小写
-
-
调用方法
- 赋值调用 接收的结果类型 变量名 = 方法名(实际参数1,实际参数2,…) ;(推荐)
public class FunctionDemo { public static void main(String[] args) { //赋值调用 int c = add(10,20) ; //中间有其他逻辑,再次使用c变量 System.out.println("两个数据求和结果是:"+c); } //定义一个方法:求和的方法, 两个数据 /*心中两个明确: a)明确方法返回值类型 int b)明确形式参数类型以及参数个数 两个参数:都是int */ public static int add(int a,int b){ //方法的业务逻辑:求和的方法, 两个数据 //return a +b ; //直接返回a+b的结果 //将a和b的结果赋值给一个变量 int result = a +b ; return result ; } }
-
定义方法的注意事项
- 方法和方法是平级关系,不能够在一个方法中定义另一个方法,只能在一个方法中调用另一个方法
- 在定义方法的时候,方法中的形式参数必须带上数据类型,因为Java是一个强类型语言
- 调用方法的时候,实际参数不需要带数据类型
- 在定义方法的时候,有{的地方不能分号;,有分号;的地方不能{
- 有具体返回值类型的方法,必须要携带return,否则会报错
public class FunctionDemo2 {
//main方法
public static void main(String[] args) {
//调用sum方法
double a = 12.0 ;
double b = 13.5 ;
// double result = sum(double a, double b);//实际参数不能带数据类型了
double result = sum( a, b);//实际参数 它就是调用者
System.out.println("result:"+result);
}
//两个数据求和的功能
//返回值double
//两个参数,都是double
public static double sum( double x ,double y){
double result = x+ y ; //求和
return result ;
}
}
-
在Java中,定义方法的格式(有两种)
-
第二种
- 没有具体返回值类型的方法定义和调用
-
格式
public static void 方法名(形式参数类型1 参数名称1,形式参数类型2 参数名2,....){ //业务逻辑进行实现 }
-
-
调用方法
- 单独调用
- 举例NN乘法表
public class FunctionDemo {
public static void main(String[] args) {
//创建键盘录入对象
Scanner sc = new Scanner(System.in) ;
//提示并录入数据
System.out.println("请输入一个数据(1-9):");
int num = sc.nextInt() ;
//单独调用
printNN(num); //8
}
/**
* 定义 方法两个明确
* 1)明确返回值类型: java提供关键字 void
* 2)明确参数类型以及参数个数
* int类型 1个参数
*/
public static void printNN(int n){//8
for(int x = 1 ;x<=n;x++) { //外层控制行数
for(int y =1 ; y <=x ;y++){ //内层循环控制列数,列数随着行数的变化 第一行,1列,第二行,2列....
System.out.print(x+"×"+y+"="+(y*x) +"\t"); //不换行
}
System.out.println(); //换行
}
}
}
3.方法重载(补充)
-
为了某个功能扩展性,多个方法方法名可以相同(完全相同),参数列表不同,与返回值无关
- 参数列表不同
- 参数个数不同
- 参数类型不同
- 参数类型的顺序
-
举例
/** * 需求:比较两个数据是否相等 * * 满足2个类型, * 两个int类型进行比较 * 两个double进行比较 */ public class OverLoadTest { public static void main(String[] args) { //定义两个变量 int a = 10 ; int b = 20 ; double x = 12.56 ; double y = 12.56 ; //重载方法 boolean flag = compare(a, b); boolean flag2 = compare(x, y); System.out.println(flag) ; System.out.println(flag2) ; } //两个int类型进行比较 public static boolean compare(int a,int b){ return a==b ; } //两个double类型进行比较 public static boolean compare(double a,double b){ return a==b; } }
二.数组
数组
-
Java中数组就是容器,这个容器 “只能存储同一种类型的元素”
-
在数组中定义格式
-
动态初始化
-
动态初始化:自己定义数组的长度,数组的元素有系统(jvm)默认分配
-
格式
-
数据类型[] 数组名称 = new 数据类型[数组长度] ; (推荐第一种)
-
数据类型 数组名称[] = new 数据类型[数组长度] ;
-
-
举例
int[] arr = new int[7] ; int arr[] = new int[7] ;
-
-
静态初始化
-
静态初始化:直接我们自己给定的了元素内容,数组的长度由系统默认分配
-
格式
-
原生的格式写法:
-
数据类型[] 数组对象名 = new 数据类型[]{元素1,元素2,元素3.....} ;
-
数据类型 数组对象名[] = new 数据类型[]{元素1,元素2,元素3.....} ;
-
-
举例
int[] arr = new int[]{1,2,3} ; int arr[] = new int[]{1,2,3} ;
-
静态初始化的简写格式
-
数据类型[] 数组对象名 = {元素1,元素2,元素3.....} ; (推荐的写法)
-
数据类型 数组对象名[] = {元素1,元素2,元素3.....} ;
-
-
举例
int[] arr = {1,2,3} ; int arr[] = {1,2,3} ;
-
-
-
补充:
- jvm的内存分配
-
栈内存 :存储的就是局部变量
-
堆内存 :以后 new出来的东西都在堆中 (new :创建对象)
-
方法区 : * xxx.class :字节码文件区域 * static区域 * 常量池区域.
-
寄存器 -- cpu和系统相关的
-
本地方法区 -- cpu和系统相关的
-
- jvm的内存分配
-
举例
- 已知一个数组:静态初始化,现在需要把数组的元素遍历出来
- 遍历:将数组的元素一一打印出来
- int[] arr = {24,87,56,17,13.35,78,86} ;
public class ArrayTest {
public static void main(String[] args) {
int[] arr = {24,87,56,17,13,35,78,86} ;
//调用方法遍历
printArray(arr);
}
public static void printArray(int[] array){ //形式参数
System.out.print("["); //[元素1, 元素2,,,
//遍历array数组
for(int x =0 ; x < array.length ; x ++){ //x角标
//这个角标如果取到了最大角标---- 最后一个元素 ,直接输出这个元素内容同时拼接 右]
if(x== array.length-1){
System.out.println(array[x]+"]");
// 最后一个元素]
}else{
//如果不是最后一个角标---- 取到的中间的元素,直接输出元素的内容 同时拼接 ", "
System.out.print(array[x]+", ");
}
}
}
}