java--输入输出与方法

输入与输出

不论哪一个语言,都离不了输入与输出,下面我们来分别对输入和输出进行详细介绍。

输出

在Java中输出的语法如下:(在idea中,可以输sout简写形式,然后会有提示)

        System.out.println("换行的");
        System.out.print("不换行的");
        String s = "格式化的";
        System.out.printf("s=%s\n",s);

在Java中输出有以上三种形式,println是带换行的,print是不带换行的,printf是格式化输出的。
对于格式化字符串如下表:
在这里插入图片描述

输入

Java中的输入是Scanner函数,使用Scanner时需要引入包后再使用Scanner方法

import java.util.Scanner
Scanner scanner = new Scanner(System.in);
//从控制台上输入一个整数
int num = scanner.nextInt();

这里我来给大家介绍一下Scanner常用的一些方法:
hasNextInt:一般用作循环输入整数的时候,判断是否有下一个整数输入,有进行一些操作。
nextInt:从键盘输入一个整数
nextDouble:从键盘输入一个小数
nextLine:一般用于获取字符串,可以获取带空格的字符串
next:也用于字符串的获取,但如果字符串中有空格,则只能的到空格前面的内容。
当然Scanner还有很多方法,这里给大家推荐个软件,在这里可以查看某些类里面的方法等。在这里插入图片描述

Random

这里穿插讲述一个函数,随机数函数也就是Random,这个函数用来生成随机数。对于我们自己练习的时候应该会用到。在这里我就不做过多的一些官方解释了,我这就主要介绍主要用法。

//种子为系统的时间,随机数生成器每次运行时生成的随机数不同
Random random = new Random();
//种子为自己填写的一个数,每次根据这个数生成随机数,由于种子确定了,所以每次生成的随机数都一样。
Random random = new Random(32);

用于获取一个整数随机数包含两个方法nextInt()和nextInt(number)
前者数字的范围并不确定,而是默认的范围,生成的随机数会很大。一般我们都采用后者,当我们设置number=100时,生成的随机数范围为[0,100)这个范围就可控了,在我们的掌控中了。
当然Random也有很多不同的方法,大家详细可以去上面我分享的软件中查阅。

方法

在C语言中方法也称为函数,为什么会有方法呢?目的是为了可以模块化管理代码,对于重复使用代码的地方,只需要调用即可,减少了代码量。
那么方法是如何定义的呢?

修饰符 返回值类型 方法名称([参数类型 形参 ...]){
方法体代码;
[return 返回值];
}

修饰符有很多,但初期我们刚编写的时候先可以都写成public static,其余的我们后面详细介绍。
返回值类型,一个方法可以没有返回值,也就是void,也可以有不同类型的返回值,看自己需要什么样的,int,double,数组,String等
方法名称为自己取的方法名字,这里要命名规范,需要为小驼峰形式。
参数类型,也就是基本数据类型或者引用类型
形参,也就是在方法中定义的变量名
方法体代码也就是具体操作的部分
return 返回值,看前面返回类型是啥,若是void就不用返回,如果为Int就得返回一个int类型的数,返回值类型应与返回的值类型对应。
注意!

  1. Java中方法不用声明。
  2. Java中方法不可以嵌套定义。下面那样就是错误的。
public static void func(int a) {
	System.out.print("方法一");
	public static void func2(int a) {
		System.out.print("方法二");
	}
}
  1. Java中的方法需要在类中定义。
  2. 定义方法的时候,不会执行方法体里面的语句。只有调用的时候才会执行里面的语句。
  3. 一个方法可以被调用多次。

方法调用的执行过程

我们可以在idea中调试,来一步一步的看执行过程,这里我用例子来给大家描述一下执行过程。

 public static int add(int a, int b) {
        System.out.println("方法中");
        return a + b;
    }

    public static void main(String[] args) {
        int num = add(2,3);
        System.out.println(num);
    }
  1. 程序运行进入到main方法中(main方法为程序的入口),然后执行里面的代码。
  2. 看到调用了方法add,并且传递了参数2,3。
  3. 计算机找到方法地址,进入到方法add中。
  4. 执行add方法里面的代码,先进行了输出,然后返回了一个值。
  5. 返回值也就代表方法中的内容已经结束了,我们回到main方法中,将返回的值赋给了num。
  6. 最后输出num。

形参和实参的关系(重要重要!!)

什么是形参什么是实参呢?
在这里插入图片描述
上面橙色框框的是形参,下面红色框框的是实参。那他俩究竟有什么关系呢?

基本数据类型

如果参数类型是基本数据类型,那么她们两者之间的关系就是将实参拷贝到形参。然后形参再去完成一些操作。这里需要记住一个知识点,局部变量是存储到栈上的。

    public static void add(int a, int b) {
        a++;
        b++;
    }
    public static void main(String[] args) {
        int a = 2;
        int b = 3;
        add(2,3);
        System.out.println(a + "," + b);
    }

这个代码最后运行结果是2,3。希望下面的图示能让大家明白形参和实参的关系。
在这里插入图片描述
到最后一步,我们也就知道了为什么输出的是2,3了,你在add方法中改变的是拷贝后的a和b的值,并不是原来的。

引用数据类型

对于引用数据类型,这里面形参和实参也比较重要了!也比较容易出错。这里我们用数组来举例。这里也要注意一个知识点,就是对象是存储到堆上的。我们同样图示方法展示。

    public static void change(int [] arr) {
        arr[0] = 10;
    }

    public static void main(String[] args) {
        int[] array = {1,2,3,4};
        change(array);
        System.out.println(Arrays.toString(array));//Arrays.toString是将数组转为字符串,快速输出。后续讲数组的时候再详细讲。
    }

该代码的最后结果为[10,2,3,4]。数组为引用数据,变量里面存储的为地址。
在这里插入图片描述
希望大家看到这个图示能懂得引用类型形参和实参的关系。数组还有一个点喜欢考,也是形参和实参的关系。

    public static void change(int[] array) {
        array = new int[10];
        array[0] = 1;
        System.out.println(Arrays.toString(array));
    }

    public static void main(String[] args) {
        int[] array = {1,2,3,4,5};
        change(array);
    }

在这里插入图片描述
上面这个,虽然实参将地址传过去了,但是在方法中,又新创建了一个对象,然后array指向了新对象,修改的数据也是新对象里面的,然后当方法执行完毕后,返回main方法,形参不再指向任何东西,创建的新对象由于没有人指向,会被系统自动回收。

方法重载

这个和后面要学到的重写要进行区分,在这我们来介绍一下什么是方法重载。
在Java中我们如果要用到方法时候,肯定得给方法起名字。但如果功能都一样,只不过操作的数据类型不一样,还得继续重新起名字,那不是很让人头疼嘛。所以这也就用到了重载。也就允许同样功能的方法,方法名字可以一样。如下:

    public static int add(int a, int b) {
        return a + b;
    }
    public static double add(double a, double b) {
        return a + b;
    }
    public static void main(String[] args) {
        System.out.println(add(1,2));
        System.out.println(add(1.5,3.6));
    }

这里我们定义了两个add方法,分别求两个整数的和,两个小鼠的和。
重载的要求:

  1. 方法名字必须相同
  2. 参数列表必须不同(可以是参数个数不同,参数顺序不同,参数数据类型不同)
  3. 对于方法返回类型,对于重载没有影响,可以相同,可以不同。

方法签名(了解即可)

对于同样名字的方法,系统怎么知道我们要用哪一种呢?这就和方法签名有关系了。
方法签名:经过编译器编译修改过之后方法最终的名字。具体方式:方法全路径名+参数列表+返回值类型,构成方法完整的名字。
例子如下:
在这里插入图片描述
对于其签名中有一些特殊符号,解释如下:
在这里插入图片描述

递归

递归就是指自身又调用自己的方法。在解决一些问题的时候,递归的方式会提高效率。
在用递归解决问题的时候,往往都需要将问题拆分成一个个小问题来解决。
递归需要满足条件:1.必须有结束条件(递归结束的出口)2.必须可以将原问题能拆分成子问题,并且子问题和原问题解决方法一致。
递归是如何执行的呢?请见下图。
在这里插入图片描述
对于递归这一块,不要着急,可以多做些题,慢慢就熟练了,加油!

  • 8
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: jmu-java-01入门-格式化输入输出与字符串是Java编程语言中的一个入门级别的课程,主要涉及到Java中的格式化输入输出和字符串处理。在Java中,格式化输入输出可以通过使用格式化字符串来控制输出的格式,例如指定输出的宽度、精度、对齐方式等。而字符串处理则包括字符串的拼接、截取、替换、比较等操作,这些操作都是Java编程中非常常见的操作。通过学习这门课程,可以帮助初学者更好地掌握Java编程语言的基础知识,为后续的学习打下坚实的基础。 ### 回答2: jmu-java-01入门课程中,格式化输入输出与字符串是Java编程中非常重要的基础知识。格式化输入输出主要是通过使用Java中的格式化字符串来实现对变量进行控制输出的格式。而字符串则是Java中非常重要的一种数据类型,它可以用于存储文本信息。 在Java中,格式化输入输出主要是通过使用printf()和Scanner类来实现。其中,printf()方法用于输出格式化字符串,可以根据需要控制输出的格式,比如输出数字时控制小数点的位数、输出字符串时设定字符串宽度等。Scanner类则用于获取用户输入,并将输入的字符转换为相应的数据类型。在使用Scanner时,需要先创建对象,再通过调用相应的方法获取输入信息。 字符串在Java中是一种类似于字符数组的数据类型,它可以存储由字符组成的文本信息。Java中的字符串是不可变的,一旦创建后就不能再被修改。常见的字符串操作包括字符串的连接、截取、替换等。Java中的字符串也支持正则表达式,可以用于处理一些复杂的字符串匹配操作。 使用格式化输入输出和字符串,可以方便地处理各种复杂的输入输出需求,并实现对字符串的灵活操作。掌握这两个基础知识对于Java编程的学习非常重要,是构建更复杂程序的基石。同时,也可以通过使用Java提供的类库函数,进一步扩展字符串及格式化输入输出的处理能力,提高程序的效率和质量。 ### 回答3: jmu-java-01入门-格式化输入输出与字符串,是Java编程语言的入门课程,它涵盖了格式化输入输出和字符串的基本概念、用法和实例应用等内容,是学习Java编程语言的重要基础。 格式化输入输出是一种常见的技术,可以让我们以可读性更好的方式向用户展示数据,并且可以方便地输出复杂的数据结构。在Java中,将这种技术应用到实际编程中的方法是使用格式化字符串和格式化输出。 Java字符串也是一个重要的概念。字符串在Java中是引用类型,它们被定义为对象,并且许多重要的Java类库方法使用字符串作为参数和返回类型。学习字符串如何在Java中使用和操作,不仅可以帮助我们更好地理解Java,还可以帮助我们编写更强大和复杂的程序。 在学习jmu-java-01入门-格式化输入输出与字符串时,我们将学习使用Java中的Scanner类来实现格式化输入。Scanner类提供了一种方便的方式,用于读取输入流中的各个部分。我们还将学习如何使用Java的Formatter类来格式化输出,从而以人类可读的方式格式化数据输出。 此外,我们还将学习如何创建和使用Java字符串。字符串包含许多重要的概念,如长度、字符串拼接、子字符串和常用的字符串方法等等。通过学习字符串的方法和用法,我们将能够更好地理解Java语言中的字符串处理,从而更加熟练地编写程序。 总的来说,jmu-java-01入门-格式化输入输出与字符串,是学习Java编程语言时的一个重要基础课程。通过学习这个课程,我们将更好地理解和掌握Java中的格式化输入输出和字符串处理,从而编写出更高质量和复杂的Java程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值