IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> java 方法 和 数组 -> 正文阅读

[Java知识库]java 方法 和 数组

目录

一、方法的使用

1、方法的定义

2、方法重载

二、数组的定义和使用

1、数组的基本概念

(1)数组的创建

(2)数组的初始化

(3)数组的遍历

2、数组是引用类型(JVM的内存分布)

3、引用变量

4、数组拷贝函数

5、二维数组的for.each遍历


一、方法的使用

1、方法的定义

java中的方法就相当于C语言中的函数

方法的语法格式

//方法的定义

修饰符? 返回值类型? 方法的名称(【参数类型 参数】){

? ? ? ? ? ? ? 方法体代码;

? ? ? ? ? ? ?【return 返回值】;

}

【注意事项】

  1. 修饰符:现阶段直接使用public static 固定搭配
  2. 返回值类型:如果方法有返回值,返回值类型必须要与返回的实体类型一致,如果没有返回值,必须写成void
  3. 方法名字:采用小驼峰命名
  4. 参数列表:如果方法没有参数,()中什么都不写,如果有参数,需指定参数类型,多个参数之间使用逗号隔开
  5. 方法体:方法内部要执行的语句
  6. ?在java当中,方法必须写在类当中
  7. ?在java当中,方法不能嵌套定义
  8. ?在java当中,没有方法声明一说

2、方法重载

如果多个方法的名字相同,参数列表不同,则称该方法被重载。

public class TestMethod {
    public static void main(String[] args) {
        add(1, 2);    //调用函数add(int,int)
        add(1.5, 2.5);//调用函数add(double,double)
        add(1, 3, 5);//调用函数add(int,int,int)
    }
    public static int add(int x, int y) {
        return x + y;
    }
    public static double add(double x, double y) {
        return x + y;
    }
    public static double add(int x, int y, int z) {
        return x + y + z;
    }
}

【注】

  • ?方法名必须相同
  • 参数列表必须不同(参数的个数不同、参数的类型不同、类型的次序必须不同)
  • 与返回值类型是否相同无关

二、数组的定义和使用

1、数组的基本概念

(1)数组的创建

T[ ] 数组名 = new T[N];

T:表示数组中元素的类型

N:表示数组的大小

int[] array1 = new int[10]; // 创建一个可以容纳10个int类型元素的数组
double[] array2 = new double[5]; // 创建一个可以容纳5个double类型元素的数组
String[] array3 = new double[3]; // 创建一个可以容纳3个字符串元素的数组

(2)数组的初始化

  • 动态初始化:在创建数组时,直接指定书中元素的个数
int[] array = new int[10];  //默认值为0
  • 静态初始化:在创建时不直接指定数据元素个数,直接将元素内容指定。

语法格式:T[ ] 数组名 = {data1,……,datan};

int[] array1 = new int[]{0,1,2,3,4,5,6,7,8,9};
double[] array2 = new double[]{1.0, 2.0, 3.0, 4.0, 5.0};
String[] array3 = new String[]{"hell", "Java", "!!!"};

【注意】

  • 静态初始化虽然没有指定数组的长度,编译器在编译时会根据{}中元素个数来确定数组的长度。
  • 静态初始化时, {}中数据类型必须与[]前数据类型一致。
  • 静态初始化可以简写,省去后面的new T[]。
  • 数组也可以按照如下C语言个数创建,不推荐。
  • 如果不确定数组当中内容时,使用动态初始化,否则建议使用静态态初始化。
  • 如果没有对数组进行初始化,数组中元素有其默认值。

(3)数组的遍历

  • 通过for循环来遍历,在数组中可以通过length来获取数组长
  • 使用for-each遍历数组
int[] array={1,2,3};
for(int x:array){
    System.out.println(x);
};
//遍历array中元素,将元素放在x中进行打印
  • 将数组以字符串的形式进行打印
Array.toString(array);//将数组以字符串的形式进行输出

2、数组是引用类型(JVM的内存分布)

?方法区(Method Area)和堆(Heap)为所有线程所共享,每个线程拥有独立的虚拟机栈(JVM Stack)、本地方法栈(Native Method Stack)以及程序计数器。

  • 程序计数器 (PC Register): 用来保存下一条执行的指令的地址
  • 虚拟机栈(JVM Stack):?用来保存方法执行相关的一些信息:局部变量、操作数栈、动态链接、返回地址以及其他的一些信息。当方法运行结束后,栈帧就被销毁了,即栈帧中保存的数据也被销毁了。
  • 本地方法栈(Native Method Stack):?虚拟机栈的作用类似. 只不过保存的内容是Native方法的局部变量.?
  • 堆(Heap):使用 new 创建的对象都是在堆上保存。堆是随着程序开始运行时而创建,随着程序的退出而销毁,堆中的数据只要还有在使用,就不会被销毁。
  • 方法区(Method Area): 用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据. 方法编译出的的字节码就是保存在这个区域
    ?

3、引用变量

  • 引用变量的0值为null,引用为空值时,不指向任何对象
  • 引用变量虚拟机栈中存储的是其在堆中空间的起始地址,通过改地址可以去操作对象。

举例如下:

public static void func() {
   int[] array1 = new int[3];
   array1[0] = 10;
   array1[1] = 20;
   array1[2] = 30;
   int[] array2 = new int[]{1,2,3,4,5};
   array2[0] = 100;
   array2[1] = 200;
   array1 = array2;
   array1[2] = 300;
   array1[3] = 400;
   array2[4] = 500;
   for (int i = 0; i < array2.length; i++) {
       System.out.println(array2[i]);
   }
}
  • 创建数组array1,没有设置初始值,因此其为0;
  • 通过下标修改数组array1中元素为10、20、30;
  • 创建数组array2,初始值为1、2、3、4、5;
  • 通过下标方式将数组array2中前两个元素设置为100、200;
  • array1=array2,既让array1去引用array2引用的数组的空间,此时array1和array2其实是一个数组;
  • 通过array1将2、3号元素修改为300、400;通过array2修改4号元素为500;
  • 此时打印array2的结果应为:100、200、300、400、500

4、数组拷贝函数

  • 完全拷贝(Array.copyof)
int[] arr={1,2,3,4,5};
int[] newarr=Array.copyof(arr,arr.length);
  • copyof方法在进行数组拷贝时,创建了新的数组
  • 此时arr和newarr引用的不是同一个数组
  • 范围拷贝(Array.copyofRange)
int[] newarr1=Array.copyofRange(arr,int i,int j);

拷贝从 i 下标的 j -1 下标的数组元素;

5、二维数组的for.each遍历

int[][]arr={{1,2,3,4},{5,6,7,8},{3,6,2,3}};
for(int[] tmp:arr){
   for(int x:tmp){
       System.out.println(x);
   }
}

二位数组就是特殊的一维数组

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-02-22 20:26:08  更:2022-02-22 20:29:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:52:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码