当前位置: 首页 > news >正文

Java学习第四天

break continue

break在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,不执行循环中剩余的语句(break语句也在switch语句中使用)

continue语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。

package struct;public class BreakDemo {public static void main(String[] args) {int i=0;while(i<100){i++;System.out.println(i);if(i==30){break;}}System.out.println("123");}
}
package struct;public class ContinueDemo {public static void main(String[] args) {int i=0;while(i<100){i++;if (i%10==0){System.out.println();continue;}System.out.println(i);}}
}

质数是指在大于1的自然数中,处了1和它本身以外不在有其他因数的自然数

java的方法

java方法是语句的集合,它们在一起执行一个功能

方法是解决一类问题的步骤的有序组合

方法包含于类或对象中

方法在程序中被创建

一个方法只完成一个功能

System.out.println()的意思是调用系统类中的标准输出对象out中的方法println

package method;public class Demo01 {//main方法public static void main(String[] args) {//实际参数:实际调用传递给它的参数int sum=add(1,2);//方法在程序中被创建,在其他地方被引用System.out.println(sum);}//加法//形式参数,用来定义作用的public static int add(int a,int b){return a+b;}pubic static void test(){...}
}

java的方法类似于其他语言的函数,是一段用来完成特定功能的代码片段

方法包括一个方法头和一个方法体,下面是一个方法的所有部分:

修饰符:修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。

返回值类型:方法可能会返回值。returnValueType是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType是关键字void。

方法名:是方法的实际名称。方法名和参数表共同高层方法签名

参数类型:参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为参数或者变量。参数方法是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数:

1.形式参数:在方法被调用时用于接收外界输入的数据

2.实参:调用方法时实际传给方法的数据

方法体:方法体包含具体的语句,定义该方法的功能。

修饰符 返回值类型 方法名(参数类型 参数名){...方法体...return 返回值;}

调用方法:对象名.方法名(实参列表)

java支持两种调用方法的方式,根据方法是否返回值来选择

当帆帆发返回一个值的时候,方法调用通常被当做一个值,例如:

int larger=max(30,40);

如果方法返回值是void,方法调用一定是一条语句,

System.out.println("Hello,qinqin!");

package method;public class Demo02 {public static void main(String[] args) {int max=max(10,20);System.out.println(max);}//比大小public static int max(int num1,int num2){int result=0;if(num1==num2){System.out.println("num1==num2");return 0;//终止方法}if(num1>num2){result=num1;}else {result=num2;}return result;}
}

值传递:把变量的值复制一份,传给方法参数

这个复制品和原件没有任何关系,你在方法里怎么改,也不会影响到原来的变量

引用传递:把变量的引用(也就是地址)传给方法参数

也就是说,方法参数和外面的变量其实是指向同一个内存的,改了一个就改了两个

这个行为像是共用同一个对象,一起哭一起笑

java只有值传递,不管是基本类型还是引用类型

如果是基本类型(int\double等),那值就是具体的数字,比如:5,7.1;

如果是引用类型(对象),那值其实是这个对象的地址

所以你传进方法里的,都是变量当前持有的值的复制品,只是引用类型这个值看起来像是引用,其实本质上也是地址的拷贝

面试推荐回答:java中其实只有值传递,区别在于基本类型传的是字面型,引用地址传的是对象的引用地址。像我们平时传个int,方法里怎么改都不会影响外面的变量;而传个对象,方法里能改对象的属性,是因为我们拿到了那份地址的拷贝,可以通过它改里面的内容。但如果在方法里new一个新对象再赋值给参数,这种改的是那份地址拷贝的本身,外面的引用就不会变了。所以严格来说,java的参数传递是值传递,只不过引用类型的“值”看起来有点像是“引用传递”。

方法的重载

重载就是在一个类中,有相同的函数名称,但形参不同的函数。

方法的重载的规则:

1.方法名称必须相同

2.参数列表必须不同(个数不同、或类型不同、参数排列顺序不同等)

3.方法的返回类型可以相同也可以不同

4.仅仅返回 类型不同不足以称为方法的重载

实现理论:方法名称相同时1,编译器会根据调用方法的参数个数、参数类型等去逐个匹配,以选择对应的方法,如果匹配失败,则编译器报错

命令行传参和可变参数

有时候你希望运行一个程序的时候再传递给它消息。这要靠传递命令行参数给main()函数实现

package method;public class Demo03 {public static void main(String[] args) {//args.Length数组长度for(int i=0;i< args.length;i++){System.out.println("args["+i+"]="+args[i]);}}
}

image-20250824143142185

在方法申明中,在指定参数类型后加一个省略号(...)

一个方法只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在它之前声明

递归(面试高频问点)

递归就是A方法调用A方法!就是自己调用自己

递归结构包括两个部分:

递归头:什么时候不调用自身方法。如果没有头将陷入死循环

递归体:什么时候需要调用自身方法

public class Demo05 {public static void main(String[] args) {Demo05 test=new Demo05();test.test();}public void test(){test();}
}
public class Demo06 {//2! 2*1//3! 3*2*1//5! 5*4*3*2*1public static void main(String[] args) {System.out.println(f(3));}//2 2*f(1)public static int f(int n){if(n==1){return 1;}else {return n*f(n-1);}}
}

边界条件:边界

前阶段:

返回阶段:n*(n-1)

递归思想:由于java栈机制大的计算能不用递归就不用递归

作业:写一个计算器,要求实现加减乘除功能,并且能够循环接收新的数据,通过用户交互实现

思路推荐:

1.写四个方法加减乘除

2.利用循环+switch进行用户交互

3.传递需要操作的两个数

4.输出结果

数组

数组的定义

数组是相同类型数据的有序集合

数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成

其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们,数组的下标是从0开始的

数组声明创建

http://www.hskmm.com/?act=detail&tid=7744

相关文章:

  • java学习第一天
  • Java学习第二天
  • 搜索百科(1):Lucene —— 打开现代搜索世界的第一扇门
  • 02020308 .NET Core核心基础组件08-结构化日志和集中日志服务
  • zookeeper的配置
  • 02020307 .NET Core核心基础组件07-什么是Logging、NLog
  • 算法第一周博客
  • 攻防世界-parallel-comparator-200 - xxx
  • Manim实现脉冲闪烁特效
  • 2025.9.17总结
  • nid修改dbid/dbname
  • office2024安装包下载安装教程(2025最新整理)office2024专业增强版下载安装教程
  • 2025竞赛学习资料
  • C++ 模板参数推导问题小记(模板类的模板构造函数)
  • axios两种写法
  • adobe illustrator中使用画笔工具切割图形
  • 2025年了,在 Django 之外,Python Web 框架还能怎么选?
  • AtCoder Beginner Contest 423
  • SRAM和DRAM的特点和区别
  • xml基本语法
  • Java25新特性
  • Day17多维数组
  • C++ lambda 匿名函数
  • D拼数
  • 20250917 - WETToken 攻击事件:价格操控产生的套利空间
  • 题解:P6798 「StOI-2」简单的树
  • 题解:P11704 [ROIR 2025] 旅行路线
  • 题解:P11292 【MX-S6-T4】「KDOI-11」彩灯晚会
  • 算法课程第一周作业
  • 实测对比:权威榜单之微信排版Top 5编辑器大揭秘