Java 方法详解 与数组
基础阶段:
1、何谓方法
何谓方法?
◆System.out.println(),那么它是什么呢?
◆Java方法是语句的集合,它们在- -起执行一个功能。
◆方法是解决一类问题的步骤的有序组合
◆方法包含于类或对象中
◆方法在程序中被创建,在其他地方被引用
◆设计方法的原则:方法的本意是功能块,就是实现某个功能的语句块的集合。我们设计方法的
时候,最好保持方法的原子性,就是一个方法只完成1个功能,这样利于我们后期的扩展。
◆回顾:方法的命名规则?
1 package com.zhexuejia.www.method;
2
3 public class Demo01 {
4 //main方法
5 public static void main(String[] args) {
6 // int sum = add(1, 2);
7 //// System.out.println(sum);
8 test();
9 }
10
11 //加法
12 public static int add(int a,int b){
13 return a+b;
14 }
15 public static void test(){
16 //用while或for循环输出1-1000之间能被5整除的数,并且每行输出3个
17 for (int i = 0; i <= 1000; i++) {
18 if(i % 5==0){
19 System.out.print(i+"\t");
20 }
21 if(i%(5*3)==0){
22 System.out.println();
23 }
24 }
25 }
26 }
2、方法的定义及调用
◆Java的方法类似于其它语言的函数,是-段用来完成特定功能的代码片段,-般情况下,定义
一个方法包含以下语法:
◆方法包含一个方法头和一个方法体。下面是一个方法的所有部分:
◆修饰符: 修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。
◆返回值类型:方法可能会返回值。returnValueType 是方法返回值的数据类型。有些方法执行所需的操作,但没有
返回值。在这种情况下,returnValueType 是关键字void。
◆方法名:是方法的实际名称。方法名和参数表共同构成方法签名。
◆参数类型:参数像是-个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的
参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。
◆形式参数: 在方法被调用时用于接收外界输入的数据。
◆实参:调用方法时实际传给方法的数据。
◆方法体:方法体包含具体的语句,定义该方法的功能。
修饰符返回值类型方法名(参数类型参数名){
方法体
return返回值;
}
方法调用:
◆调用方法:对象名.方法名(实参列表)
◆Java 支持两种调用方法的方式,根据方法是否返回值来选择。
◆当方法返回一个值的时候,方法调用通常被当做一个值。例如:
int larger = max(30,40);
◆如果方法返回值是void,方法调用- -定是一条语句。
System. out . println( "Hello, kuangshen!");
◆课后拓展了解:值传递和引用传递
值传递(pass by value):在调用函数时,将实际参数复制一份传递到函数中,这样在函数中对参数进行修改,就不会影响到原来的实际参数;
引用传递(pass by reference):在调用函数时,将实际参数的地址直接传递到函数中。这样在函数中对参数进行的修改,就会影响到实际参数;
3、方法重载
◆重载就是在一个类中,有相同的函数名称,但形参不同的函数。
◆方法的重载的规则:
◆方法名称必须相同。
◆参数列表必须不同(个数不同、或类型不同、参数排列顺序不同等)。
◆方法的返回类型可以相同也可以不相同。
◆仅仅返回类型不同不足以成为方法的重载。
实现理论:
◆方法名称相同时,编译器会根据调用方法的参数个数、参数类型等去逐个匹配,以选择对
应的方法,如果匹配失败,则编译器报错。
4、命令行传参
◆有时候你希望运行一-个程序时候再传递给它消息。这要靠传递命令行参数给main()函数实现。
1 public class CommandLine {
2 public static void main(String args[]){
3 for(int i=0; i<args.length; i++){
4 System. out . println("args["+ i + "]:”+ args[i]);
5 }
6 }
7 }
5、 可变参数
JDK 1.5开始,Java支持传递同类型的可变参数给一个方法。
在方法声明中,在指定参数类型后加一个省略(..))。
一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在它
之前声明。

6、递归
A方法调用B方法,我们很容易理解!
◆递归就是: A方法调用A方法!就是自己调用自己
◆利用递归可以用简单的程序来解决- -些复杂的问题。它通常把一个大型复杂的问题层层转化为
一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所
需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象
的无限集合。
◆递归结构包括两个部分:
◆递归头:什么时候不调用自身方法。如果没有头,将陷入死循环。
◆递归体:什么时候需要调用自身方法。
1 public class Demo05 {
2 public static void main(String[] args) {
3 System.out.println(f(5));
4 }
5 //阶乘
6 //1! 1
7 //2! 2*1
8
9 public static int f(int n){
10 if(n==1){
11 return 1;
12 }else {
13 return n * f(n-1);
14 }
15 }
16 }

数组:
1、数组概述
数组是相同类型数据的有序集合.
数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成。
其中,每一个数据称作一个数组元素每个数组元素可以通过一个下标来访问它们.
2、数组声明创建
首先必须声明数组变量,才能在程序中使用数组。下面是声明数组变量的语法:
dataType[] arrayRefVar; t// 首选的方法中
或
dataType arrayRefVar[]; // 效果相同,但不是首选方法
◆Java语言使用new操作符来创建数组,语法如下:
dataType[] arrayRefVar = new dataType [arraySize];
数组的元素是通过索引访问的,数组索引从0开始。
获取数组长度:
arrays . length
数组的四个基本特点
◆其长度是确定的。数组一旦被创建, 它的大小就是不可以改变的。
◆其元素必须是相同类型,不允许出现混合类型。
数组中的元素可以是任何数据类型,包括基本类型和引用类型。
◆数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量。
数组本身就是对象,Java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,
数组对象本身是在堆中的。
Java内存分析:

1 public class ArrayDemo02 {
2 public static void main(String[] args) {
3 //静态初始化
4
5 int[] a = {1,2,3,4,5,6,7};
6
7 System.out.println(a[0]);
8
9 //动态初始化:包含默认初始化
10 int[] b = new int[10];
11
12 b[0]= 10;
13 System.out.println(b[0]);
14 }
15 }
数组边界:
◆下标的合法区间: [0, length-1],如果越界就会报错;
1 public static void main(String[] args) {
2 int[] a=new int [2] ;
3 System. out. println(a[2]);
4 }
◆ArrayIndexOutOfBoundsException :数组下标越界异常!
◆小结:
数组是相同数据类型(数据类型可以为任意类型)的有序集合
数组也是对象。数组元素相当于对象的成员变量
数组长度的确定的,不可变的。如果越界,则报: ArrayIndexOutofBounds
3、数组使用
For- Each循环
数组作方法入参.
数组作返回值
1 package com.zhexuejia.www.array;
2
3 public class ArrayDemo04 {
4 public static void main(String[] args) {
5 int[] arrays = {1, 2, 3, 4, 5, 6, 7, 8};
6
7 //遍历数组。打印数组所有的元素,取不到下标
8 // for (int array : arrays) {
9 // System.out.println(array);
10 // }
11 int[] resver = rverseArray(arrays);
12 printArrays(resver);
13
14 }
15
16 //数组反转
17 public static int[] rverseArray(int[] arrays){
18 int[] result = new int[arrays.length];
19 //反转
20 for (int i = 0,j=result.length-1 ; i < arrays.length; i++,j--) {
21 result[j] = arrays[i];
22 }
23
24
25 return result;
26
27 }
28
29 //打印数组元素
30 public static void printArrays(int[] arrays){
31 for (int i = 0; i < arrays.length; i++) {
32 System.out.println(arrays[i]+ " ");
33 }
34 }
35 }
4、多维数组
多维数组可以看成是数组的数组,比如二维数组就是-个特殊的一维数组,其每一个元素都是
一个-维数组。
◆二维数组
int a[][] = new int[2][5];
◆解析:以上二维数组a可以看成一个两行五列的数组。
思考:多维数组的使用?
num[1] [0];
5、Arrays 类
◆数组的工具类java.util.Arrays
◆由于数组对象本身并没有什么方法可以供我们调用,但API中提供了-个工具类Arrays供我们使
用,从而可以对数据对象进行一些基本的操作。
查看JDK帮助文档
◆Arrays类中的方法都是static修饰的静态方法,在使用的时候可以直接使用类名进行调用,而"不
用"使用对象来调用(注意:是"不用"而不是"不能")
◆具有以下常用功能:
◆给数组赋值:通过fill方法。
◆对数组排序:通过sort方法,按升序。
◆比较数组:通过equals方法比较数组中元素值是否相等。
◆查找数组元素: 通过binarySearch方法能对排序好的数组进行二分查找法操作。
冒泡排序:
◆冒泡的代码还是相当简单的,两层循环,外层冒泡轮数,里层依次比较,江湖中人人尽皆知。
◆我们看到嵌套循环,应该立马就可以得出这个算法的时间复杂度为0(n2)。
6、稀疏数组
Java 方法详解 与数组的更多相关文章
- C++调用JAVA方法详解
C++调用JAVA方法详解 博客分类: 本文主要参考http://tech.ccidnet.com/art/1081/20050413/237901_1.html 上的文章. C++ ...
- Java方法详解
Java方法详解 什么是方法? Java方法是语句的集合,它们在一起执行一个功能. 方法是解决一类问题的步骤的有序组合 方法包含于类或对象中 方法在程序中被创建,在其他地方被引用 示例: packag ...
- java 方法详解
什么是方法 方法的定义和调用 值传递与引用传递 值传递:指的是在方法调用时,传递的是参数是按值的拷贝传递. 特点:传递的是值的拷贝,也就是传递后就互不相关了. 引用传递:指的是在方法调用时,传递的参数 ...
- 21.java方法详解
public class MethondTest07{ //入口 public static void main(String[] args){ A.m1(); //error:若方法名字的前面什么都 ...
- Java提高篇——equals()与hashCode()方法详解
java.lang.Object类中有两个非常重要的方法: 1 2 public boolean equals(Object obj) public int hashCode() Object类是类继 ...
- Java中的main()方法详解
在Java中,main()方法是Java应用程序的入口方法,也就是说,程序在运行的时候,第一个执行的方法就是main()方法,这个方法和其他的方法有很大的不同,比如方法的名字必须是main,方法必须是 ...
- 使用Java操作文本文件的方法详解
使用Java操作文本文件的方法详解 摘要: 最初java是不支持对文本文件的处理的,为了弥补这个缺憾而引入了Reader和Writer两个类 最初java是不支持对文本文件的处理的,为了弥补这个缺憾而 ...
- java基础(十六)----- equals()与hashCode()方法详解 —— 面试必问
本文将详解 equals()与hashCode()方法 概述 java.lang.Object类中有两个非常重要的方法: public boolean equals(Object obj) publi ...
- Java构造和解析Json数据的两种方法详解一——json-lib
转自:http://www.cnblogs.com/lanxuezaipiao/archive/2013/05/23/3096001.html 在www.json.org上公布了很多JAVA下的jso ...
- Java集合详解1:一文读懂ArrayList,Vector与Stack使用方法和实现原理
本文非常详尽地介绍了Java中的三个集合类 ArrayList,Vector与Stack <Java集合详解系列>是我在完成夯实Java基础篇的系列博客后准备开始写的新系列. 这些文章将整 ...
随机推荐
- django日志集成输出器
在配置文件中 import os # ⽇志 LOGGING = { 'version': 1, # 自定义一个简单版本 'disable_existing_loggers': False, # 是否禁 ...
- 几十行代码实现简易版koa~
application.js const http = require("http")// 洋葱模型 function compose(middleware){ return fu ...
- 使用@RequestBody注解接收的实体类中的某些参数为null
原因 postman调试接口 为null的参数命名不符合"驼峰法",类似实体类A的属性 cEnterpriseId ,这种命名是不规范的 和lombook的@Data注解有关 用p ...
- python manage.py loaddata dumpdata 用于导出和导入数据库中的数据
1.数据导出python manage.py dumpdata python manage.py dumpdata [appname] > appname_data.json 指定appna ...
- okHttp3源码简要分析
首先看一下使用, public static void main(String[] args) throws IOException { OkHttpClient client = new OkHtt ...
- 在 RedHat 和 CentOS安装 Sphinx packages
一.Sphinx是什么 Sphinx是由俄罗斯人Andrew Aksyonoff开发的一个全文检索引擎.意图为其他应用提供高速.低空间占用.高结果 相关度的全文搜索功能.Sphinx可以非常容易的与S ...
- Onur Mutlu 18-447 Lecture9 分支预测-1
=============== 第一部分:branch prediction =========== 1. 最简单的分支预测:总是预测下一条指令的地址在 PC+4 如何让这种分支预测更加有效呢? Id ...
- 实践:带您用多种姿势将存储在腾讯云COS 上的视频播放
导语 随着5G时代的到来,短视频/直播行业开始流行,音视频逐渐成为信息传播中流量占比最大的部分.腾讯云对象存储(COS)作为可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务,早已不 ...
- 在centons7系统部署一套单master的k8s集群
架构图: 操作系统:CentOS Linux release 7.7.1908 (Core) docker:docker-ce-20.10.14-3.el7.x86_64 kubernetes: 1. ...
- 2022-3-17内部群每日三题-清辉PMP
1.一个项目预算为6000万美元,预计需要24个月才能完成.12个月后,该项目完成了60%,并使用了3500美元.那么预算和进度的状态如何? A.符合预算,并超前于进度 B.超出预算,但超前于进度 C ...