public class TestDemo {
public static void main(String[] args) {
print(); //主方法里面直接调用方法
}
public static void print() {
System.out.println("Hello World!"); //定义方法
}}12345678
范例: 定义一个有参数无返回值的方法
public class TestDemo {
public static void main(String[] args) {
print("Hello"); //主方法里面直接调用方法
print(" world");
print("!");
}
public static void print(String msg) { //定义方法
System.out.print(msg);
}}12345678910
范例: 有参数有返回值的方法
public class TestDemo {
public static void main(String[] args) {
int result = add(10, 20);
System.out.println(result);
//既然方法有返回值,那么这些返回值也可以直接输出
System.out.println(add(100, 200));
}
public static int add(int x, int y) { //定义方法
return x + y;
}}1234567891011
public class TestDemo {
public static void main(String[] args) {
//此时将根据参数的类型和个数的不同执行不同的方法体
System.out.println(add(10, 20));
System.out.println(add(30, 40, 50));
System.out.println(add(1.1, 2.1));
}
public static int add(int x, int y) {
return x + y;
}
//此时方法名称相同,参数的个数不同
public static int add(int x, int y, int z) {
return x + y + z;
}
public static double add(double x, double y) {
return x + y;
}}123456789101112131415161718
在进行方法重载的时候有一个重要的原则:要求方法的返回值类型一定要相同。
范例: 观察如下程序
public class TestDemo {
public static void main(String[] args) {
//此时将根据参数的类型和个数的不同执行不同的方法体
System.out.println("hello"); //输出字符串
System.out.println(1); //输出整形
System.out.println(1.1); //输出浮点型
System.out.println('A'); //输出字符
System.out.println(true); //输出布尔
}}12345678910
public class TestDemo {
public static void main(String[] args) {
System.out.println(sum(100));
}
public static int sum(int num) {
if(num == 1)
return 1;
return num + sum(--num);
}}12345678910
[main()调用] 第1次执行sum()方法 return 100 + sum(99);
[sum()递归] 第2次执行sum()方法 return 99 + sum(98);
[sum()递归] 第3次执行sum()方法 return 98 + sum(97);
…
[sum()递归] 倒数第2次执行sum()方法 return 2 + sum(1);
[sum()递归] 倒数第1次执行sum()方法 return 1;
范例: 实现60!,这个结果太大,应该使用double。
public class TestDemo {
public static void main(String[] args) {
System.out.println(mul(60));
}
public static double mul(int num) {
if(num == 1)
return 1;
return num * mul(--num);
}}12345678910
Java方法是语句的集合,它们在一起执行一个功能
·方法是解决一类问题的步骤的有序组合
·方法包含于类或对象中
·方法在程序中被创建,在其他地方被引用
Java中的类:可以看成是创建Java对象的模板
举例:
public class Dog{
String breed;
int age;
String color;
void barking(){
}
void hungry(){
}
void sleeping(){
}
}
Dog是类
barking(),hungry(),sleeping() 叫方法
限制条件:在主类中定义,并且由主方法直接调用的方法形式。
方法就是一段可以被重复调用的方法块。在Java中要想进行方法的定义,则可以使用如下的语法完成。
public static 返回类型 方法名称([参数类型 变量, ......]) {
方法体代码;
[return [返回值];]
}
什么是方法
在刚开始学习Java语言时,还没有从函数的角度脱离出来,会经常不停的将方法说为函数。那方法 和函数 有什么区别呢?通过查找资料和自我理解,有如下的思考,如果有不对的,请大家回复改正。
函数: 是一段可以重复调用的代码,通过名字来进行调用。它能将数据传递进去进行一些处理,然后返回数据(或者没有返回值),函数和对象无关。
方法: 也是一段可以重复调用的代码,也通过名字来进行调用的,但是它跟一个对象相关联。方法可以操作类内部由private封装的数据。
根据以上解释我们可以将方法看作时函数也无妨,它决定了一个对象能够接收什么样的消息。
方法的定义
我们可以看到方法的基本组成包括:名称、参数、返回值和方法体。
修饰符:方法的修饰符较多,有对访问权限进行限定的,有静态修饰符static,还有最终修饰符final等。
返回值类型:用于限定方法返回值的数据类型。
参数类型:用于限定调用方法时参数参数的类型。
参数名:是一个变量,用于接收调用方法时传入的数据。
return关键字:用于结束方法以及返回方法指定类型的值。
当方法以void关键字声明,那么此方法没有返回值;但可以使用return来结束调用。
举例: 定义一个在主方法调用的方法
举例: 测试void关键字声明的方法,可以使用return结束方法调用
我们可以看到方法的基本组成包括:名称、参数、返回值和方法体。
修饰符:方法的修饰符较多,有对访问权限进行限定的,有静态修饰符static,还有最终修饰符final等。
返回值类型:用于限定方法返回值的数据类型。
参数类型:用于限定调用方法时参数参数的类型。
参数名:是一个变量,用于接收调用方法时传入的数据。
return关键字:用于结束方法以及返回方法指定类型的值。
方法的最大好处是可以进行重复调用,但是至于说那些操作要形成方法,这些都要根据你的实际项目经验而自我总结的。
##方法的基本定义
限制条件:在主类中定义,并且由主方法直接调用的方法形式。
方法就是一段可以被重复调用的方法块。在Java中要想进行方法的定义,则可以使用如下的语法完成。
在定义方法的时候对于方法的返回值有一下的两类:
void:没有返回值;
数据类型(基本类型,引用类型)。
范例: 定义一个没有返回值,没有参数的方法
范例: 定义一个有参数无返回值的方法
范例: 有参数有返回值的方法
但是在定义方法的时候有一点特别要注意,如果某一个方法上使用了void定义,那么该方法可以直接用return来结束调用。一般而言,这种return的处理往往需要结合if判断来实现。
对于第一次接触方法的人来讲,先将语法记住,至于怎么用,需要时间来消化。
##方法重载(重点)
方法重载指的是:方法名称相同,参数的类型和个数不同。
范例: 实现方法重载
在进行方法重载的时候有一个重要的原则:要求方法的返回值类型一定要相同。
范例: 观察如下程序
证明:System.out.println()是一个被重载的方法
方法递归调用
方法的递归调用指的是一个方法自己调用自己的形式。一般如果要进行方法的递归操作往往都具备有以下的特点:
方法必须有一个递归的结束条件;
方法在每次递归处理的时候一定要做出一些变更;
范例: 实现1 ~ 100的累加操作
[main()调用] 第1次执行sum()方法 return 100 + sum(99);
[sum()递归] 第2次执行sum()方法 return 99 + sum(98);
[sum()递归] 第3次执行sum()方法 return 98 + sum(97);
…
[sum()递归] 倒数第2次执行sum()方法 return 2 + sum(1);
[sum()递归] 倒数第1次执行sum()方法 return 1;
范例: 实现60!,这个结果太大,应该使用double。
通过代码可以发现使用while循环的操作其实大部分都可以更换为递归,之所以使用递归主要是一个方法可以执行的操作很多,而且结构要好。
在类(class)中定义:
eg: class test
{
public int a;
public int test(int b)
{
a=b;
}
public int get_a() //方法1
{
return a;
}
public void print() //方法2
{
System.out.println(this.get_a());
}
public static void main(String [] args) //主函数
{
test aa=new test(3); //初始化 aa
aa.print(); //调用 print方法
}
}
现实中的方法是可以解决某种问题,
java中的方法是具有特定功能的代码段,也就是说,把一些常用的代码起个名字用大括号包起来,用的时候直接用这个名字来代替这段代码,变得简单外,还提高了代码的复用性
相关问题推荐
里氏代换原则(Liskov Substitution Principle, LSP):所有引用基类(父类)的地方必须能透明地使用其子类的对象里氏代换原则告诉我们,在软件中将一个基类对象替换成它的子类对象,程序将不会产生任何错误和异常,反过来则不成立,如果一个软件实体使用的是一...
心里有个预期,然后看看是以什么目的进这家企业工作,要是赚钱的话,那就多要点,要是学习的话,可以根据情况要一个能养活自己的价格。
Java中有八种数据类型,基础数据类型分别是:byte,short,int,long,float,double,char,boolean,引用数据类型分别是:数组,类和接口。方法传参的时候我们有两种,一种是形式参数(定义方法时写的参数),一种是实际参数(调用方法时给的具体值)。首先...
现在的架构很多,各种各样的,如高并发架构、异地多活架构、容器化架构、微服务架构、高可用架构、弹性化架构等,还有和这些架构相关的管理型的技术方法,如 DevOps、应用监控、自动化运维、SOA 服务治理、去 IOE 等等,还有很多。分布式架构其实就是分布式系...
1、监控GC的状态使用各种JVM工具,查看当前日志,分析JVM参数的设置,分析堆内存快照和GC日志,根据实际的各区域的内存划分和GC的执行时间,判断是否需要进行优化2、分析结果、判断是否需要优化如果各项参数设置合理,系统没有超时的日志出现,GC频率也不高,...
MyBatis 每次创建结果对象的新实例时,它都会使用一个对象工厂(ObjectFactory)实例来完成。 默认的对象工厂需要做的仅仅是实例化目标类,要么通过默认构造方法,要么在参数映射存在的时候通过参数构造方法来实例化。 如果想覆盖对象工厂的默认行为,则可以...
学vue应该要先学习javascript 的基础知识和用法。
1、lambda是jdk8的新特性2、使用lambda的前提,必须是一个接口,接口只能有一个抽象方法3、Lambda 表达式的简单例子:// 1. 不需要参数,返回值为 5 () -> 5 // 2. 接收一个参数(数字类型),返回其2倍的值 x -> 2 * x // 3. 接受2个参数(数...
你没有把jdk配置到eclipse里,步骤如下:打开eclipse,菜单栏找到window -> preference -> java -> install jres -> add -> standard vm -> 设置好相应的jre home就可以了。
使用场景:常规key-value缓存应用。常规计数: 微博数, 粉丝数。实现方式:String在redis内部存储默认就是一个字符串,被redisObject所引用,当遇到incr,decr等操作时会转成数值型进行计算,此时redisObject的encoding字段为int。...
1. 区别:堆和栈区别堆:主要用于储存实例化的对象,数组。由JVM动态分配内存空间。一个JVM只有一个堆内存,线程是可以共享数据的。栈:主要用于储存局部变量和对象的引用变量,每个线程都会有一个独立的栈空间,所以线程之间是不共享数据的。2. 堆内存和栈内...
至少h5、CSS、JS,包括数据库连接技术,ajax都要会哦
对于一个秒杀系统来说,瞬时的大量请求会对后台服务造成冲击,需要保证服务的可用性以及业务的正确性。设计了一个高并发高可用的系统简要流程架构如下图:1.将商品(或券)的信息等静态数据放到cdn节点,实现动静分离2.业务请求和业务处理之间使用MQ对请求进行削...
为了避免上面出现的几种情况,在标准SQL规范中,定义了4个事务隔离级别,不同的隔离级别对事务的处理不同。未授权读取(Read Uncommitted):允许脏读取,但不允许更新丢失。如果一个事务已经开始写数据,则另外一个数据则不允许同时进行写操作,但允许其他事...
封装就是把抽象出来的JAVA类的变量和方法集成为一个集体,就像集成电路元件成为一个独立的芯片一样,它只留出对外的接口,使用者可以直接使用它,但看不到其内部是怎样实现的,JAVA类的封装就是对外而言能直接使用它来定义的对象去调用相关变量和方法。...
1. java.awt:提供了绘图和图像类,主要用于编写GUI程序,包括按钮、标签等常用组件以及相应的事件类。2. java.lang:java的语言包,是核心包,默认导入到用户程序,包中有object类,数据类型包装类,数学类,字符串类,系统和运行时类,操作类,线程类,错...