☰
java简单的输入和输出,初识方法
2026/10/14 3:01:12 网站建设 项目流程

简单的Java输入输出

一.输出

java的输出有下面三种方式,一一来介绍

1·System.out.println()

要输出的内容放在后面的括号内,输出变量的值直接写变量名,输出字符串用双引号引起来,如果既要输出变量值还要输出字符串,使用加号连接。下面是代码示例(只写主要部分,类和main方法省略)

在这里插入代码片//打印变量值intage=18;Stringname="张三"System.out.println(age);System.out.println(name);//打印字符串System.out.println("我叫张三");//同时打印字符串和变量值intage1=18;Stringname1="张三"System.out.println("我叫"+name1+","+"我的年龄是"+age1);
下面是代码在idea中的运行结果

这种输出方式自带换行,即把内容打印完之后自动换行,而且打印变量和字符串都很方便,是java中比较常用的输出,还有个细节就是,如果想再输出结果中单独换行,直接写System.out.println()就可以了

2.System.out.print()

这个和上面System.out.println()的唯一区别就是它打印完结果后不会自动换行,
把上面代码中的System.out.println()全部换成System.out.print()

在这里插入代码片intage=18;Stringname="张三"System.out.print(age);System.out.print(name);//打印字符串System.out.print("我叫张三");//同时打印字符串和变量值intage1=18;Stringname1="张三"System.out.print("我叫"+name1+","+"我的年龄是"+age1);

下面是运行结果

我们可以看到所有输出内容都在同一行了,要想达到换行输出的目的还要单独打印换行符,没有上面那个方便

3.System.out.printf()

这种输出方式就和C语言的printf函数一样了,需要占位符,这里就不过多介绍了

二.输入

java的输入是通过用类创建对象,然后调用方法实现的,学习Java初期,了解并学会使用Scanner类即可,后续还有 BufferedReader 类,
Console 类,关于类和对象的概念后续会进行介绍,现在我们先来学习用Scanner类进行简单的输入。
现在使用Scanner类我们直接记住下面语句

在这里插入代码片importjava.util.Scanner;Scannersc=newScanner(System.in);

对于不同的数据,需要调用不同的方法,下面看代码示例

在这里插入代码片importjava.util.Scanner;publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);intnum=0;num=sc.nextInt();//整型doubled=0.0;d=sc.nextDouble();//浮点型floatf=0.0f;f=sc.nextFloat();//浮点型}

以此类推,short型用sc.nextShort(),long型用sc.nextLong(),boolean型用sc.nextBoolean,

重点说一下String型和char型,char型用sc.next()charAT(0),String型用sc.next(),或者sc,nextLine()

除了sc.nextLine()以换行符(回车)作为结束标志,其余全部已空白字符为结束标志(换行符,空格键,tab键),由此引出来两个注意事项,1:如果输入的字符串里面有空格或者tab键就不能用sc.next(),只能用sc.nextLine();2:如果用sc.nextLine()输入字符串之前输入了一个回车键(换行符);下面对这两个注意事项进行代码示例

在这里插入代码片//第一个注意事项//把zhang san存到字符串变量里面并打印出来Stringname1="S";name1=sc.next();System.out.println(name1);

下面是在idea中运行的结果

可以看到最后只打印了zhang,而不是zhang san,这就是因为zhang和san之间的空格键告诉sc.next()到这结束了,后面的东西不放到name1这个字符串变量里面,换成sc.nextLine()即可解决,运行结果如下

下面来看第二个注意事项

在这里插入代码片intnum=0;Stringname="s";num=sc.nextInt();name=sc.nextLine();


我们发现输入500之后按下回车程序就直接打印出500了,这就是因为回车键被next.Line给读取了,存放到了str里面,因此为避免这种情况出现,我们再str=sc.nextLine()前面加入一条sc.nextLine()语句即可,下面是加入sc.nextLine()语句之后的运行截图

认识Java中的方法

其实java中的方法可以理解成C语言中的函数,目的就是把代码模块化,可重复利用。方法体就是函数体,参数的写法也和C语言函数的参数写法一样,方法也有返回值,java方法和C语言函数都有限制符,后续会对Java中方法的修饰符做详细介绍,目前我们把所有自定义方法的修饰符全部写成public static。

下面来看一下方法的写法,注意方法是写在类里面的,且java中方法不能嵌套定义,即在一个方法中不能定义另外的方法,只可调用,调用方法和C语言调用函数一样,用方法名调用

1.方法的语法格式

修饰符 返回值类型 方法名(参数列表){
方法体
return 返回值;(void型可以不写### 方法的嵌套调用

写一个add方法,功能是返回两个整数的和

在这里插入代码片publicclassTest{publicstaticintadd(inta,intb){returna+b;}publicstaticvoidmain(String[]args){//调用add方法intret=add(3,5);System.out.println(ret);}}

运行结果如下

2.方法重载

在介绍方法重载之前我们先看一个引例,一个服装设计师花了三个月设计出来一件版型很好的衣服,服装厂为了盈利,肯定会做出各种尺寸的衣服,那回到java中,我们设计出来了能够计算两个整数的和的add方法,那如果我i们想计算三个整数的和,三个小数的和呢?重新写别的方法吗?那要记住的方法名是不是太多了?看起来有点麻烦,为此Java提供了方法重载

所谓方法重载就是一系列的方法的名字都一样,但是它们的参数列表不一样(个数,类型,顺序不同)。下面看代码示例
在这里插入代码片publicclassTest(){publicstaticintadd(inta,intb){returna+b;}publicstaticintadd(inta,intb,intc){returna+b+c;}publicstaticdoubleadd(doublea,doubleb,doublec){returna+b+c;}publicstaticvoidmain(){System.out.println(add(3,5));System.out.println(add(1,2,3));System.out.println(add(1.1,2.2,3.3));}}

运行结果如下

三个名字都为add的方法,由于参数列表的不同,因而实现了不同的功能,这就是方法重载

3.方法的递归

Java方法的递归和C语言函数递归一样,只是语法不同而已,这里不再过多赘述递归的定义和递归的注意事项了,直接看代码示例

在这里插入代码片importjava.util.Scanner;//汉诺塔问题,打印出转移过程,并统计挪动了多少次盘子publicclassTowerOfHanoi{staticintcount=0;publicstaticvoidTower(intn,charsource,charmid,chardestination){if(n==0){return;}Tower(n-1,source,destination,mid);System.out.println(source+"->"+n+"->"+destination);count++;Tower(n-1,mid,source,destination);}publicstaticvoidmain(String[]args){intn=0;chara;charb;charc;Scannersc=newScanner(System.in);System.out.println("请输入盘子数目和柱子编号,第一个编号对应盘子最初放的位置");n=sc.nextInt();a=sc.next().charAt(0);b=sc.next().charAt(0);c=sc.next().charAt(0);//调用Tower方法,完成汉诺塔问题Tower(n,a,b,c);System.out.println("所有盘子已转移完毕");System.out.println("一共挪了"+count+"次盘子");}}

下面是输入和执行结果

在这里插入代码片//递归求汉诺塔的第n项importjava.util.Scanner;publicclassFib{publicstaticintFact(intn){if(n==1||n==2){return1;}else{returnFact(n-1)+Fact(n-2);}}publicstaticvoidmain(){Scannersc=newScanner(System.in);intn=sc.nextInt();System.out.print("斐波那契数列的第n项是 ");System.out.println(Fact(n));}}

下面是输入和执行结果

4.方法的嵌套调用和链式访问

方法的嵌套调用

方法的嵌套调用指的是在一个方法内部调用另一个方法。这种方式可以将复杂任务分解为多个小任务,每个方法负责完成特定的功能,提高代码的可读性和可维护性。

defadd(a,b):returna+bdefmultiply(a,b):returna*bdefcalculate(a,b):# 嵌套调用 add 和 multiply 方法sum_result=add(a,b)product_result=multiply(a,b)returnsum_result,product_result result=calculate(3,4)print(result)# 输出 (7, 12)

链式访问

链式访问是指通过连续调用多个方法来实现功能,每个方法的返回值是下一个方法调用的对象。这种方式常见于面向对象编程中,尤其是构建流畅接口(Fluent Interface)。

classCalculator:def__init__(self,value):self.value=valuedefadd(self,num):self.value+=numreturnself# 返回 self 以实现链式调用defmultiply(self,num):self.value*=numreturnselfdefget_result(self):returnself.value# 链式调用result=Calculator(5).add(3).multiply(2).get_result()print(result)# 输出 16

嵌套调用与链式访问的区别

  • 嵌套调用:一个方法内部调用其他方法,通常用于分解任务。
  • 链式访问:通过返回对象自身(如self)或其他对象,实现连续调用方法。

实际应用场景

  • 嵌套调用:适合将复杂逻辑拆分为多个小方法,便于测试和复用。
  • 链式访问:适合构建流畅的 API,例如数据库查询构建器或字符串处理。
# 链式访问的字符串处理示例text=" HELLO, WORLD! "cleaned=text.strip().lower().replace(",","")print(cleaned)# 输出 "hello world!"

通过合理使用嵌套调用和链式访问,可以编写出更加清晰、高效的代码。上面有关对象和类的内容后续会介绍
1

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询