Day03 (其他人看不存在任何价值!)
1、break:在循环中,默认结束离他最近的循环;
在switch语句里面,用来结束分支。
outFor:for (int a = 1;a <= 9 ;a++ ){
innerFor:for (int b = 1; b <= a ; b++){
System.out.print(a + "X" + b +"="+ a*b +" ");
if (b == 5){
break outFor;
}
}
System.out.println();
}
2、return 也会结束循环,只不过区别在于他结束的是这个main方法。
3、continue 直接结束;另外,如果continue下一行如果有任何语句,第一是不会执行,另外,在编译的时候是会报错的。
class Operator03 {
public static void main(String[] args) {
//计算1-100所有的基数求和;
int count = 0;
for (int i = 1; i<=100 ;i++ ){
if (i%2==0){
continue;
count = count + i;
/*
---------- javac ----------
Operator03.java:21: 错误: 无法访问的语句
count = count + i;
^
1 个错误
输出完成 (耗时 1 秒) - 正常终止
*/
}
System.out.print(i+" ");
count = count + i;
}
System.out.println(count);
}
}
4、方法:
class Operator03 {
// main方法 是程序的入口,程序是需要从main开始。
public static void main(String[] args) {
int a = 10;
int b = 20;
System.out.println(a+b);
sumInt(19,19);
// 有返回值的方法的调用;
System.out.println(sumIntor(13,15));
}
// 在main方法中 进行定义。
//计算数据不同,这样就会导致代码的冗余性。
public static void sumInt(int a , int b){
int sum = a + b;
System.out.println(sum);
}
// 有返回值类型的方法定义:
public static int sumIntor(int a , int b){
int sum = a + b;
return sum;
}
}
5、方法的调用与执行顺序
class Operator03 {
// main方法 是程序的入口,程序是需要从main开始。
public static void main(String[] args) {
// 如果方法跨类进行调用,需要采用类名.的方式
// 如果在同一个类中,直接下方法()即可。
Method02.m1();
Operator03.m1();
}
public static void m1(){
System.out.println("m1");
}
}
class Method02{
public static void m1(){
System.out.println("M2");
}
}
方法的执行顺序是:从main方法中自上而下执行的。
注意不要出现方法的互相调用。会导致一个错误,stackOverFlow错误。方法大调用要都用到 main'方法中。
6、return语句。
return 是结束方法的额,就后面的语句不会被执行。
public static boolean m1(int i){
if (i == 0){
return true;
}
return false;
// 或者
if (i == 0){
return true;
}else{
return false;
}
}
7、方法重载。
class Operator03 {
// main方法 是程序的入口,程序是需要从main开始。
public static void main(String[] args) {
System.out.println(sumInt(10,30));
System.out.println(sumLong(10000L,3099L));
System.out.println(sumFloat(10.0F,30.0F));
System.out.println(sumDouble(10.245,30.543));
// 第二种方式“
System.out.println(sum(10,30));
System.out.println(sum(10000L,3099L));
System.out.println(sum(10.0F,30.0F));
System.out.println(sum(10.245,30.543));
}
public static int sumInt(int a, int b){
return a + b;
}
public static long sumLong(long a, long b){
return a + b;
}
public static float sumFloat(float a, float b){
return a + b;
}
public static double sumDouble(double a, double b){
return a + b;
}
//第二种方式
public static int sum(int a, int b){
return a + b;
}
public static long sum(long a, long b){
return a + b;
}
public static float sum(float a, float b){
return a + b;
}
public static double sum(double a, double b){
return a + b;
}
}
程序员只需要记住一个方法的名字就可以了。
- 需要在同一个类中,
- 方法名相同;
- 参数类表不同(参数类型,个数以及顺序。)
-
class Operator03 { // main方法 是程序的入口,程序是需要从main开始。 public static void main(String[] args) { System.out.println(sumInt(10,30)); System.out.println(sumLong(10000L,3099L)); System.out.println(sumFloat(10.0F,30.0F)); System.out.println(sumDouble(10.245,30.543)); // 第二种方式“ System.out.println(sum(10,30)); System.out.println(sum(10000L,3099L)); System.out.println(sum(10.0F,30.0F)); System.out.println(sum(10.245,30.543)); } public static int sumInt(int a, int b){ return a + b; } public static long sumLong(long a, long b){ return a + b; } public static float sumFloat(float a, float b){ return a + b; } public static double sumDouble(double a, double b){ return a + b; } //第二种方式 public static int sum(int a, int b){ return a + b; } public static long sum(long a, long b){ return a + b; } public static float sum(float a, float b){ return a + b; } public static double sum(double a, double b){ return a + b; } } class MethodOverload02{ public static void main(String[] args){ System.out.println("HelloWorld"); } //参数个数不同 public static void m1(){} public static void m1(int i){} //参数类型不同 //参数的顺序不同,M3方法构成重载,但是开发中,不这样使用; public static void m3(int i,long b){} public static void m3( long b,int i){} //重载与返回值类型没有关系; //public static void m6(){} //public static int m6(){} /* ---------- javac ---------- Operator03.java:59: 错误: 已在类 MethodOverload02中定义了方法 m6() public static int m6(){} ^ 1 个错误 输出完成 (耗时 1 秒) - 正常终止 */ //重载与修饰符列表没有关系; //public static void m6(){} //public int m6(){} /* ---------- javac ---------- Operator03.java:71: 错误: 已在类 MethodOverload02中定义了方法 m6() public int m6(){} ^ 1 个错误 2019/3/31 输出完成 (耗时 1 秒) - 正常终止 */ }
8、栈——数据结构
先进后出——水桶;空间大小限制性——StackflowError错误。
9、递归
class Operator03{
public static void main(String[] args){
int n = 10;
System.out.println(sum(n));
}
public static int sum(int n ){
int result = 0;
for (int i = 1; i<=n ;i++ ){
result+=i;
}
return result;
}
}
// 使用递归的方式计算1-n的和;
// 递归方式:是一种自己调用自己,要有一个结束条件,否则会出现StackOverflowError;
class Recursion02{
public static void main(String[] args){
int result = sum(5);
System.out.println("HelloWorld!");
}
/*
n=5;5+sum(4)
n=4; 4+sum(3)
n=3; 3+sum(2)
n=2; 2+sum(1)
n=1; 1
*/
public static int sum(int n){
if (n==1){
return 1;
}else{
return n + sum(n-1);
}
}
}
弹栈!!!!!
10、方法执行图解:
弹栈 压栈