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基础篇的系列博客后准备开始写的新系列. 这些文章将整 ...
随机推荐
- Mac 安装nvm
根据命令安装 nvm: curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash 当前窗口执行nv ...
- 使用python做基本的数据处理
使用python做基本的数据处理 1.常用的基本数据结构 元组.列表.字典.集合.常用的序列函数 1.1基本操作 1.1.1 元组:逗号分开的序列值. tup = tuple (4,5,6) tup ...
- linux mint 常用软件安装
deepin版 qq 微信 迅雷安装 https://github.com/wszqkzqk/deepin-wine-ubuntu inkscape sudo add-apt-repository p ...
- vs code for macOS的安装
参考下载链接:http://www.pc6.com/mac/147684.html 汉化方法: 中文设置方法(如下图)在插件设置的搜索栏中输入"chinese",选择第一个简体中文 ...
- hibernate的校验
//不使用@valid进行校验Set<ConstraintViolation<CommonValidator>> validates = validator.validateV ...
- 一 MySQL的架构与历史1.1--1.4
1.1 MySQL逻辑架构 最上层的服务并不是 MySQL 所独有的,大多数基于网络的客户端/服务器的工具或者服务都有类似的架构.比如连接处理.授权认证.安全等等. 第二层架构是MySQL比较有意思的 ...
- 接口设置ip跨域
// 允许跨域请求的地址'allowUrls' => [ 'http://localhost:8080', 'http://192.168.2.224', 'http://192.168.2.2 ...
- centos7 双网卡同网段双网关配置
需求: #1.服务器为双网卡: #2.网卡1为互联网 172.16.137.99/24/254 #3.网卡2为旅游专网 172.16.137.97/24/1 #4.互联网路由器为172.16.137. ...
- Pytorch Dropout函数
Dropout layers class torch.nn.Dropout(p=0.5, inplace=False) 随机将输入张量中部分元素设置为0.对于每次前向调用,被置0的元素都是随机的. 参 ...
- 2022-3-10内部群每日三题-清辉PMP
1.一位项目经理得知,由于持续的罢工,该项目的进口设备尚未被海关放行.项目经理首先应该怎么做? A.执行定性风险分析 B.执行定量风险分析 C.与团队一起审查风险影响 D.实施风险应对计划 2.一位团 ...