Java小白进阶笔记(4)-流程控制语句

简介: 继续学习:5.偏头痛杨的Java入门教学系列之流程控制语句篇

继续学习:
5.偏头痛杨的Java入门教学系列之流程控制语句篇

详细的去看原文,这里分割线中摘录一些我觉得对新手比较重要的概念(也容易混淆)。


方法的种类

1.实例方法

属于每个实例的方法,必须使用对象来调用,方法前不要加static修饰。

2.类方法

属于类的方法,必须加static修饰,使用类名调用(当然类方法也可以使用实例调用,但是不建议这么做),为什么要用类名来访问一些方法呢?因为不耗费内存,不用创建实例。

3.构造方法/构造器(Constructor)

构造方法是一个类创建对象的根本途径,如果一个类没有构造方法,这个类通常无法创建实例。
因此如果程序员忘记定义构造方法的话,Java编译器将会为该类提供一个默认构造方法(无参的构造方法),一旦程序员已经定义了构造方法,则系统不再提供默认的构造方法。(注意:如果程序员定义了一个有参构造,系统也不再提供默认的无参构造)当然,如果你也想使用无参数构造方法,就可以自己手动写一个。

构造方法的作用

  • 通过new关键字来调用某个类的构造方法,即可创建这个类的实例。在创建一个对象(类实例化成对象)的时候,至少要调用一个构造方法。
  • 构造方法的作用是完成对象的创建,即完成对象的实例化,在构造方法中一般可以对成员变量进行初始化

构造方法的特点

  • 构造方法的名称必须与类同名
  • 一个类可以有多个构造方法(参数列表不同)
  • 构造方法没有返回类型,不能return
  • 构造方法可以设置为private即在外部无法调用该类的构造方法(单例模式)

方法的重载(overload)

  • 方法的重载就是在同一个类中允许同时存在一个以上同名的方法。
  • 方法名称相同,方法的参数必须不同,参数个数不同,参数类型不同,方法的返回值类型可以相同,也可以不同。

类变量与实例变量

类变量

  • 也叫静态变量
  • 说明类的属性
  • 类变量声明在类中,方法体之外,必须声明为static类型
  • 类变量在创建类时被初始化
  • 类的所有示例变量在调用该变量的时候共享一块内存空间,可以类名直接调用,也可拿对象调用(不推荐)

实例变量

  • 说明类的一个实例的属性
  • 实例变量定义在类中,方法体之外,不声明成static类型
  • 实例变量在创建对象的时候被初始化
  • 类所有实例调用该变量的时候都开辟一块新内存,只能拿对象调用实例变量。

局部变量

  • 在方法内、代码块内、形参中定义的变量被称为局部变量
  • 所有局部变量均在方法的栈内存中存储
  • 方法、代码块结束后,变量就会自动销毁。
  • 部变量的作用范围越小,它在内存里停留的时间就越短,程序运行性能就越好。因此能用代码块局部变量的地方,就不要使用方法局部变量
  • 访问修饰符不能用于局部变量

作业

  1. 编写一个方法,需要传1个整型变量作为参数,方法中先把参数输出,再判断参数为偶数就返回true,非偶数返回false。在main方法中调用该方法3次,分别传入参数为3、4、5,并将方法的返回值输出。

代码:

package test;

import java.util.Scanner;

public class Getodd {
    public static boolean judge(int tem) {
        if(tem%2==0) {
            return true;
        }
        else {
            return false;
        }
    }
    public static void main(String [] args) {
        Scanner sc=new Scanner(System.in);
        for(int i=1;i<=3;i++){
            int tem=sc.nextInt();
            boolean ans=judge(tem);
            System.out.println("the"+i+" 's ans: "+ans);
        }
    }
}

输出:

3
the1 's ans: false
4
the2 's ans: true
5
the3 's ans: false
  1. 编写一个方法,需要传入2个整型变量作为参数,方法中返回数值较大的参数,在main方法中调用该方法几次,参数自定义,并将方法的返回值输出。

代码:

package test;

import java.util.Scanner;

public class WhoIsMax {
    public static int judge(int a,int b) {
        if(a>b) {
            return a;
        }
        else {
            return b;
        }
    }
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        for(int i=0;i<3;i++) {
            int a=sc.nextInt();
            int b=sc.nextInt();
            int ans=judge(a,b);
            System.out.println("the max between "+a+" and "+b+" is "+ans);
        }
    }
}

输出:

2 3
the max between 2 and 3 is 3
5 8
the max between 5 and 8 is 8
99 22
the max between 99 and 22 is 99
  1. 编写一个方法,需要传入1个整型变量作为参数,方法中使用switch做判断,如果参数值为1则输出"星期一",如果参数值为2则输出"星期二",依此类推,如果参数值不在1-7的范围内则输出"参数错误",在main方法中调用该方法几次,参数自定义。

代码:

package test;

import java.util.Scanner;

public class DateShow {
    public static void judge(int tem) {
        switch(tem) {
        case 1:
            System.out.println("Monday");
        break;
        case 2:
            System.out.println("Tuesday");
        break;
        case 3:
            System.out.println("Wednesday");
        break;
        case 4:
            System.out.println("Thursday");
        break;
        case 5:
            System.out.println("Friday");
        break;
        case 6:
            System.out.println("Saturday");
        break;
        case 7:
            System.out.println("Sunday");
        break;
        
        default:System.out.println("Wrong input!");
        
        }
    }
    public static void main (String [] args){
        Scanner sc=new Scanner(System.in);
        for(int i=0;i<3;i++) {
            int tem=sc.nextInt();
            judge(tem);
        }
    }
}

输出:

3
Wednesday
5
Friday
9
Wrong input!
  1. 编写一个方法,打印出一个菱形(这道题比较难,不允许搜百度上的答案)。
   *
  ***
 *****
*******
 *****
  ***
   *

友情提示

  • System.out.println();输出是带换行的
  • System.out.print();输出是不带换行的
  • 需要使用嵌套for循环
  • 一个循环输出空格,一个循环输出星号;一个循环输出换行

代码:

package test;

import java.util.Scanner;

public class DrawPic {
    public static void drawPic(int num) {
        int half=num/2+1;
        for(int i=0;i<half;i++) {
            for(int j=0;j<half-1-i;j++) {
                System.out.print(' ');
            }
            for(int k=0;k<2*i+1;k++) {
                System.out.print('*');
            }
            System.out.println();
        }
        
        for(int i=0;i<half-1;i++) {
            for(int j=0;j<i+1;j++) {
                System.out.print(' ');
            }
            for(int k=0;k<num-2*(i+1);k++) {
                System.out.print('*');
            }
            System.out.println();
        }
    }
    
    public static void main(String [] args) {
        Scanner sc=new Scanner(System.in);
        int tem = sc.nextInt();
        drawPic(tem);    
    }
}

输出:

17
        *
       ***
      *****
     *******
    *********
   ***********
  *************
 ***************
*****************
 ***************
  *************
   ***********
    *********
     *******
      *****
       ***
        *
目录
相关文章
|
14天前
|
Java
Java基础—笔记—static篇
`static`关键字用于声明静态变量和方法,在类加载时初始化,只有一份共享内存。静态变量可通过类名或对象访问,但推荐使用类名。静态方法无`this`,不能访问实例成员,常用于工具类。静态代码块在类加载时执行一次,用于初始化静态成员。
10 0
|
14天前
|
Java API 索引
Java基础—笔记—String篇
本文介绍了Java中的`String`类、包的管理和API文档的使用。包用于分类管理Java程序,同包下类无需导包,不同包需导入。使用API时,可按类名搜索、查看包、介绍、构造器和方法。方法命名能暗示其功能,注意参数和返回值。`String`创建有两种方式:双引号创建(常量池,共享)和构造器`new`(每次新建对象)。此外,列举了`String`的常用方法,如`length()`、`charAt()`、`equals()`、`substring()`等。
15 0
|
18天前
|
缓存 安全 Java
Java并发编程进阶:深入理解Java内存模型
【4月更文挑战第6天】Java内存模型(JMM)是多线程编程的关键,定义了线程间共享变量读写的规则,确保数据一致性和可见性。主要包括原子性、可见性和有序性三大特性。Happens-Before原则规定操作顺序,内存屏障和锁则保障这些原则的实施。理解JMM和相关机制对于编写线程安全、高性能的Java并发程序至关重要。
|
9天前
|
Java 索引
Java基础教程(6)-Java中的流程控制语句
【4月更文挑战第6天】Java流程控制包括选择(if, switch)、重复(while, do-while, for)和跳转(break, continue, return)语句。选择语句根据条件执行不同路径,if和switch用于单条件和多条件分支。重复语句用于循环,如for循环的初始化、条件和迭代部分,以及while和do-while循环。跳转语句中,break用于立即退出循环,continue结束当前循环迭代,return则从方法中返回。此外,Java的for each循环简化了数组或集合的遍历,但不能控制遍历顺序或索引。
|
14天前
|
Java API
Java基础—笔记—内部类、枚举、泛型篇
本文介绍了Java编程中的内部类、枚举和泛型概念。匿名内部类用于简化类的创建,常作为方法参数,其原理是生成一个隐含的子类。枚举用于表示有限的固定数量的值,常用于系统配置或switch语句中。泛型则用来在编译时增强类型安全性,接收特定数据类型,包括泛型类、泛型接口和泛型方法。
9 0
|
28天前
|
SQL 前端开发 Java
Java后端进阶之路: JavaWeb(四)
Java后端进阶之路: JavaWeb
33 1
|
XML SQL Java
Java后端进阶之路: JavaWeb(三)
Java后端进阶之路: JavaWeb
30 1
|
1月前
|
Java 编译器
[java进阶]——泛型类、泛型方法、泛型接口、泛型的通配符
[java进阶]——泛型类、泛型方法、泛型接口、泛型的通配符
|
1月前
|
Java
【java进阶】Java中线程的实现方式
【java进阶】Java中线程的实现方式
|
1月前
|
Java 索引
【java进阶】集合的三种遍历(迭代器、增强for、Lambda)
【java进阶】集合的三种遍历(迭代器、增强for、Lambda)
【java进阶】集合的三种遍历(迭代器、增强for、Lambda)