本节重点思维导图

 方法的定义

例题:1!+2!+3!+4!+…..+15!=?

public class Demo {
public static void main(String[] args) {
long sum = 0;
for(int i =1;i<=15;i++) {
sum += fun(i);
}
System.out.println(sum);
} /**
* 求参数的阶乘
* @param digit 待求阶乘的数字
* @return 阶乘结果
*/
public static long fun(int digit) {
long res = 1;
for (int i = 1; i <= digit; i++) {
res *= i;
}
return res;
}
}

main 方法是被 JVM 调用的,除此之外,main 方法和其它方法没什么区别。

main 方法的头部是不变的,如例子所示,带修饰符 public 和 static,返回 void 类型值,方法名字是 main,此外带个一个 String[] 类型参数。String[] 表明参数是字符串数组

方法的重载

public static double max(double num1, double num2) {
if (num1 > num2)
return num1;
else
return num2;
}
public static int max(int num1, int num2) {
if (num1 > num2)
return num1;
else
return num2;
}

如果你调用max方法时传递的是int型参数,则 int型参数的max方法就会被调用;

如果传递的是double型参数,则double类型的max方法体会被调用,这叫做方法重载;

【Java编译器根据方法签名判断哪个方法应该被调用】

就是说一个类的两个方法拥有相同的名字,但是有不同的参数列表

变量的作用域

构造方法

一个对象被创建时候,构造方法用来初始化该对象

构造方法和它所在类的名字相同,但构造方法没有返回值

通常会使用构造方法给一个类的实例变量赋初值,或者执行其它必要的步骤来创建一个完整的对象

不管你是否自定义构造方法,所有的类都有构造方法,因为Java自动提供了一个默认构造方法,默认构造方法的访问修改符和类的访问修改符相同(类为 public,构造函数也为 public;类改为 private,构造函数也改为 private),把所有成员初始化为0。

一旦你定义了自己的构造方法,默认构造方法就会失效

简单构造方法:

class MyClass {
int x; // 以下是构造函数
MyClass() {
x = 10;
}
}

调用构造方法来初始化一个对象:

public class ConsDemo {
public static void main(String args[]) {
MyClass t1 = new MyClass();
MyClass t2 = new MyClass();
System.out.println(t1.x + " " + t2.x);
}
}

有参数情况下的构造方法及调用构造方法来初始化对象:

class MyClass {
int x; // 以下是构造函数
MyClass(int i ) {
x = i;
}
}
public class ConsDemo {
public static void main(String args[]) {
MyClass t1 = new MyClass( 10 );
MyClass t2 = new MyClass( 20 );
System.out.println(t1.x + " " + t2.x);
}
}

当创建对象时,系统会自动调用构造方法

  1. 没有自定义构造方法时,系统会调用默认构造方法
  2. 构造方法可以重载,不同的构造方法名字相同,参数列表不同,参数列表是其识别的依据、标志,类似不同人可能有相同的名字,但有不同的身份证号。
  3. 当自定义构造方法时,系统依据传入的参数类型、数量,自动匹配构造方法初始化对象

最新文章

  1. 无向图的DFS遍历(方法之一)
  2. UML中依赖(Dependency)和关联(Association)之间的区别
  3. ngnix编译遇到的问题.
  4. centos6.4搭建基于ftp的yum源让本地局域网服务器使用
  5. ACM——第几天
  6. 北漂面试经历(一(两)年工作经验)-- Java基础部分
  7. CF798E. Mike and code of a permutation [拓扑排序 线段树]
  8. Groovy中的GString
  9. Rabin-Karp ACM训练
  10. 五、RemoteViews
  11. pandas进行条件格式化以及线性回归的预测
  12. pyautogui 文档(四):消息框功能
  13. 解决:MVC对象转json包含\r \n
  14. Django ORM操作的几个细节
  15. php 处理上百万条的数据库如何提高处理查询速度
  16. LVDS接口分类,时序,输出格式
  17. Android--------TabLayout实现新闻客户端顶部导航栏
  18. 启动Tomcat 卡在 Initializing Spring FrameworkServlet &#39;SpringMVC&#39;
  19. Gitlab Webhooks, External Services, and API(二)
  20. fitnesse页面增加认证

热门文章

  1. 基于Nginx+nginx-rtmp-module+ffmpeg搭建rtmp、hls流媒体服务器(二)
  2. CentOS7.6中 KVM虚拟机内存、CPU调整
  3. Linux上进行常用软件的配置
  4. JS中对象的定义及相关操作
  5. 如何算gama(1/2)=sqrt(pi)?
  6. Granger Causality 格兰杰因果关系
  7. 博弈论(Game Theory)相关Paper阅读
  8. [每日一学]apache camel|BDD方式开发apache camel|Groovy|Spock
  9. 初始化一个React项目
  10. (41)freeRTOS之任务管理