⭐⭐⭐Java基础篇目录⭐⭐⭐
🍁 第一章 Java开发环境搭建
🍁 第二章 标识符与关键字
🍁 第三章 变量
🍁 第四章 数据类型
🍁 第五章 运算符
🍁 第六章 控制语句
🍁 第七章 方法
🍁 第八章 认识面向对象
🍁 第九章 对象的创建和使用
🍁 第十章 封装
🍁 第十一章 this和static
🍁 第十二章 继承
🍁 第十三章 方法的覆盖和多态
🍁 第十四章 super
1、方法
Java中的方法即C中的函数,定义一个方法,下次使用该功能时直接调用该方法,提高了代码的复用性。
public class Function {
public static void main(String[] args) {
sum(100,200);
sum(200,300);
}
public static void sum(int x,int y){
int s=x+y;
System.out.println(x+"+"+y+"="+s);
}
}
小总结
-----------------
- 程序开始执行的时候先执行main方法,main方法是程序的入口
- main方法是JVM去调用的,不用我们去手动调
- 方法定义在类体中,方法定义的先后顺序无所谓
2、方法的定义
Java方法定义的格式:
[修饰符列表] 返回值类型 方法名(形式参数列表){
方法体;
}
小总结
- 返回值类型不是void,则方法体执行结束时必有return x;语句,且遇到return x;语句,当前方法的执行也必然结束。
- 返回值类型是void,则方法体语句中没有return x;但可以有return;来终结方法的执行。
- 形参列表中的变量都是局部变量,方法执行结束之后,其对应的内存释放。
- 方法体中就是实现逻辑业务和需求的代码。
3、方法的调用
调用(此处暂不涉及对象的概念)
类名.方法名(实参列表);
调用的方法若有返回值,则要用变量去接收,变量的类型看方法返回值的类型,也可不接收,也可直接println(sum(100,200));调用的方法若是void类型,这时接收就出错。
public class Function {
public static void main(String[] args) {
System.out.println("main begin");
m1();
System.out.println("main over");
}
public static void m1() {
System.out.println("m1 begin");
m2();
System.out.println("m1 over");
}
public static void m2(){
System.out.println("m2 begin");
m3();
System.out.println("m2 over");
}
public static void m3(){
System.out.println("m3 begin");
System.out.println("----->");
System.out.println("m3 over");
}
}
Tips:
main方法最先执行,也是最后一个结束。main方法的结束,也代表着整个程序就结束了。
4、return和break的对比
break是终止循环,return是终结当前方法。所以在return语句后面再写语句是无意义的,编译也会报错:“无法访问的语句”。
5、JVM的内存结构&方法执行时内存的变化
小总结
- JVM内存主要有三大块:栈区、堆区、方法区(还有其他边角料空间)
- 方法在被调用的时候需要的内存空间在栈区分配
- 类加载的时候,字节码文件存方法区,方法区最先有数据
栈区存的是方法被调用时或执行时所需要的内存、方法的局部变量
方法调用—–>压栈——>分配空间
方法结束—–>弹栈——>释放空间
将方法的返回值直接扔给print
System.out.println(sum(100,200));
//等价于
int result = sum(100,200);
System.out.println(result);
分析思考解决一个问题的方法和逻辑,从而拆解问题,根据拆解的问题去提取方法、定义方法,最后填充代码。
eg:
求大于一个数的最小质数。得先实现一个数是不是质数的判定,再把输入的数每次加一,加一后调用之前的方法,判定是质数则输出,不是则继续加。
import java.util.Scanner;
public class Number {
public static void main(String[] args) {
minPrimeNumber();
}
/**
* 判断一个数是不是质数
* @param num
* @return
*/
public static int primeNumber(int num){
for(int i=2;i<num;i++){
if (num%i==0){
return 1;//不是质数
}
}
return 0;//是质数
}
/**
* 求大于一个数的最小质数
*/
public static void minPrimeNumber(){
Scanner s = new Scanner(System.in);
System.out.println("请输入你的数:");
int number = s.nextInt();
while (true){
number++;
if (primeNumber(number)==0){
System.out.println("大于它的最小质数是:"+number);
break;
}
}
}
}
6、方法的重载
发生重载的条件(同时满足):
- 在同一个类中
- 方法名相同
- 参数列表不同(如参数个数不同、参数类型不同、除法运算中的参数顺序不同)
注意:方法重载的重点是看方法名和形参列表,和是否有返回值、返回值类型、修饰符是否相同无关!!!
println就是一个经典的重载,输出不同的数据类型,均是println,若没有重载,则每种数据类型对应的方法名不同,使用不方便。
7、代码的封装
8、方法的递归
StackOverflow Error的排查思路:
- 查看递归结束的条件是否正确
- 若结束条件没问题,则手动调大JVM的栈内存的初始大小
//递归求和
public static int sum(int num){
if(num==1||num==0){
return num;
}
return num+sum(num-1);
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/146129.html