声明:该专栏本人重新过一遍java知识点时候的笔记汇总,主要是每天的知识点+题解,算是让自己巩固复习,也希望能给初学的朋友们一点帮助,大佬们不喜勿喷(抱拳了老铁!)
程序中最小的执行单元
开发中出现大量重复代码或功能,循环无法满足需求,且循环代码臃肿、可读性差、维护性差
public static void main(String[] args) {}
语法格式:
public static void 方法的名字 () {
方法体;
}
注意事项:
1.方法的声明必须在类中,在main主函数外面。
2.方法的调用必须在主函数中,使用的是方法的名字来调用的
示例:用无参无返回值方法打印乘法口诀表
public class Main {
public static void main(String[] args) {
printNum();
}
public static void printNum(){
for (int i = 1; i <10 ; i++) {
for (int j = 1; j <=i; j++) {
System.out.print(j+"*"+i+"="+i*j+"\t");
}
System.out.println();
}
}
}
语法格式:
public static void 方法的名字 (数据类型 参数名字, 数据类型 参数名字, ...) {
方法体;
}
注意事项:
1.方法的声明处的参数是形参。方法的调用处是实参,实参赋值给形参
2.方法在调用的时候一定要注意方法声明处形参的数据类型,是一一对应的关系
语法格式:
public static 数据类型 方法的名字 () {
return 返回值;//这个返回值的数据类型必须和方法的声明的地方的数据类型保持一致
}
注意事项:
1.使用关键自 return
2.return的后面不能再写代码了
3.有返回值的方法在调用的时候,要将返回值的值是可以给一个变量的
4.无返回值的方法,只是打印一下而已。 是不能给一个变量的
注:没有返回值的方法就只能执行方法体内的语句,而有返回值的方法则可以再次赋值给其他的变量进行下一部的操作,因此有返回值的方法操作性自然更胜一筹
语法格式:
public static 数据类型 方法的名字 (数据类型 形参, 数据类型 形参,...) {
return 返回值;
}
注意事项:
记住形参和返回值类型没有任何关系的
示例:求三个int类型数据的和 带有返回值的方法
public static void main(String[] args) {
int sum = add(3, 4, 5);
System.out.println(sum);
add1(3, 4, 5);
System.out.println(judge(67.6, 89.8));//false
}
//求三个int类型数据的和 带有返回值的方法
public static int add (int a, int b , int c) {
return a + b + c;
}
public static void add1 (int a, int b, int c) {
System.out.println(a + b + c);
}
对比一下两个方法的使用,有参和无参的差别
示例:比较两个int型参数大小,并输出大的那个,四种方法类型都用
public class Demo1 {
public static void main(String[] args) {
//max();
//max1(89, 67);
//System.out.println(max2());
System.out.println(max3(150, 250));
}
//求两个int的最大值的
//无参无返回值的方法
public static void max () {
int a,b;
a = 45;
b = 69;
if (a >= b) {
System.out.println(a);
} else {
System.out.println(b);
}
}
//有参无返回值的方法
public static void max1(int a, int b) {
if (a >= b) {
System.out.println(a);
} else {
System.out.println(b);
}
}
//无参有返回值的方法
public static int max2 () {
int a,b;
a = 45;
b = 32;
if (a >= b) {
return a;
} else {
return b;
}
}
//有参有返回值的方法
public static int max3 (int a, int b) {
if (a >= b) {
return a;
} else {
return b;
}
}
}
作用是打断退出循环,在for循环里使用switch-case,break不会打断for循环,只是退出switch。大家可以自己试一试
for (int j = 0; j < 5; j++) {
switch (i){
case 1:{
System.out.print("111");
break;
}
case 2:{
System.out.print("222");
break;
}
}
System.out.print("ok");
}
2.continue
作用是跳过本次循环,继续下一次循环,注意只能在循环里使用,不能在switch-case里用
示例:用continue打印逢7必过
public static void printsevencontinue(){
for (int i = 1; i <101 ; i++) {
if (i%7==0||i/10==7||i%10==7){
continue;
}
System.out.println(i);
}
}
以上就是今天的知识点,下面做题:
1.写一个方法将一个整数逆序换行打印
2.写一个方法输出1-100之间不能被5整除的数,每5个一行
3.写一个方法求出1-1/2+1/3-1/4……1/100
4.写一个方法 求1+(1+2)+(1+2+3)+(1+2+3+4)+……+(1+2+……+100)
建议初学者都敲一敲,而且是不看我的答案,先自己敲,很多东西看着会,实际自己上手敲的时候往往会出错。另外题解肯定不止一个,我也只是记录其中一种,大家大可寻找更优解,同时我基本没写注释,希望大家还是多自己思考原因。
//1.写一个方法将一个整数逆序换行打印
public static void reverse(int i){
for (int j = i; j !=0; j=j/10) {
System.out.println(j%10);
}
}
//2.写一个方法输出1-100之间不能被5整除的数,每5个一行
public static void printfive(){
int num=0;
for (int i = 1; i <101 ; i++) {
if(i%5==0){
continue;
}
System.out.print(i);
System.out.print("、");
num++;
if(num%5==0){
System.out.println();
}
}
}
//3.写一个方法求出1-1/2+1/3-1/4……1/100
public static void get1(){
double num=1;
for (int i = 2; i <101 ; i++) {
if(i%2==0){
num=num-(1.0/i);
} else if(i%2!=0) {
num=num+(1.0/i);
}
}
System.out.println(num);
}
//4.写一个方法 求1+(1+2)+(1+2+3)+(1+2+3+4)+……+(1+2+……+100)
public static void get2(){
int num=1;
for (int i = 2; i <101 ; i++) {
int m=0;
for (int j = 1; j <=i ; j++) {
m+=j;
}
num+=m;
}
System.out.println(num);
}
第三题,如果有朋友一直输出1的,原因如下:
在Java中,整数除以整数的结果仍然是整数。因此,当i为偶数时,1/i的结果会被截断为0,导致num的值一直减去0,所以最终结果一直是1。
要解决这个问题,你可以将1/i转换为浮点数类型,可以通过将1或i中至少一个转换为浮点数来实现。例如,将1改为1.0或将i改为(i*1.0)。这样,1/i的结果将会是一个浮点数,而不是整数。