扎实学Java之数组与方法
什么是数组?
数组是一个容器,用来存储多个数据(数据类型相同)
声明一个数组就是在内存中开辟一串连续的空间
数组的结构和基本要素
- 标识符:数组的名称,用于区分不同的数组
- 数组元素:向数组中存放的数据
- 元素的索引:对数组元素进行编号
- 元素类型:数组元素的数据类
注意:
- 数组只有一个名称,即标识符
- 元素索引标明了元素在数组中的位置,下标从0开始
- 数组中的每个元素都可以通过索引来访问
- 数组长度固定不变,避免数组索引越界
- 数组变量属于引用数据类型
如何使用数组
使用数组的方式
1.动态初始化
数组的创建与初始化分开完成
int[] a = new int[3];
a[0] = 1;//通过索引赋值
a[1] = 2;
a[2] = 3;
2.静态初始化
在创建数组对象时就完成初始化
int[] a = {1,2,3};
int[] a = new int[]{1,2,3};
单独的去访问数组里的值
//因为数组使用索引操作,下标从0开始
System.out.println(a[0]);
System.out.println(a[1]);
System.out.println(a[2]);
利用循环遍历数组中的值
/* a.length 是求出输出的长度
a.length结果为3
因为索引从0开始,所以 i = 0;
*/
for(int i = 0;i < a.length ; a++){
// i的最大值为2 ,所以判断的时候 i<a.length
System.out.println(a[i]);
}
注意:操作数组时可能会出现的异常及原因
数组索引越界异常:
ArrayIndexOutOfBoundsException
原因:访问了数组中不存在的索引
例如:int[] a = {1,2,3};System.out.println(a[3]);
空指针异常
NullPointerException
原因:当数组的索引被置为null,然后还去访问数组里面的元素,就会出现空指针异常。
增强for循环遍历数组
int[] b = {3,4,5,2,1};
for(int i : b){
System.out.println(i);// 不能操作索引
}
二维数组
什么是二维数组?
二维数组本质上是以数组作为数组元素的数组,即“数组的数组”,二维数组又称为矩阵,行列数相等的矩阵称为方针
怎么创建一个二维数组
数据类型[][] 对象名 = new 数据类型[x][y];
x代表行
y代表列
例如:
int[][] a = new int[2][2];
数组:使用索引来操作元素,下面给二维数组赋值
a[0][0] = 1;//第一行第一列
a[0][1] = 2;//第一行第二列
a[1][0] = 3;//第二行第一列
a[1][1] = 4;//第二行第二列
如何遍历一个二维数组:
for(int i = 0;i<a.length;a++){ // 外层循环代表行 a.length 求行数
for(int j = 0;j<a[i].length;j++){//内层循环代表列 a[i].length 求每一行的列数
System.out.print(a[i][j]);//打印第i行第j列的值
}
System.out.println();
}
二维数组直接赋值:
//第一种情况
int[][] b = {
{1,2},
{3,4}
};
// 这个数组与上述例子一样
System
第二种情况:
int[][] c = new int[][]{
{1,2},
{3,4}
};
学到这里二维数组完了吗?没呢,还有一种情况。
// 先声明行,后声明列:
String[][] y = new String[2][];
y[0] = new int[2]; // 定义第一行有2列
y[1] = new int[3];//定义第二行有3列
// 例如:多个市属于一个省
// 广东省
y[0][0] = "广州市";
y[0][1] = "深圳市";
//陕西省
y[1][0] = "宝鸡市";
y[1][1] = "西安市";
方法
什么是方法?
实现某个目的的具体过程
为什么要用方法?
提高代码的复用性
方法分为两类四种
访问修饰符 是否静态 有无返回值 方法名( 有无参数 ){
}
//相似与
public static void main(String[] args){
}
一、无返回值
// 1.无参数无返回值
public static void demo1(){
System.out.println("我是无参数无返回值");
}
// 1.有参数无返回值
// 何为参数? f(x)这个函数里面的 x 就叫做参数
public static void demo2(int i){// int i 就是参数
System.out.println(i);
}
二、有返回值
// 1. 无参数有返回值
// 什么是返回值? 把void这个关键字改为 数据类型时就说明这个方法是有返回值的
// 怎么返回? 用 return 关键字, 返回的值的类型与方法上面的数据类型一致
public static int demo3(){
return 5; // 返回值,顾名思义返回的是一个值
}
public static int demo4(){
int a = 5;
return a;
}
//2.有参数有返回值
public static int demo5(int i){ return i;
}
注意:其实每一个方法最后一行都有一个return,没有返回值可以省略不写,但系统会帮我们添加一个,其作用就是为了结束方法,如果手动的写出return就不允许带回任意的数据
public static void test(){
return;
}
1.定义方法的步骤是什么?
定义方法有两个明确:
a.是否有返回值
b.是否有未知参,参与运算
2.方法的执行流程是什么?
自己定义的方法不被调用的时候是不会被执行的。
在主函数里直接写上方法的名字即可(要考虑是否需要参数)
调用者: 主函数,main
执行者: 某一个方法本身
实际参数: 实际参与运算的数据
形式参数: 方法小括号里的变量
定义及使用方法的注意事项有哪些?
1、方法不能定义在另一个方法的里面
2、写错方法名字
3、写错了参数列表
4、方法返回值是void,方法中可以省略return不写(return后面与下面不能有代码)
5、方法返回值类型和return后面数据类型必须匹配
6、调用方法的时候,返回值void不能写在输出语句中
方法重载
什么是方法重载?
在同一个类中:方法名相同,参数列表不同(参数个数,类型,顺序),与返回值无关
public static void test1(){
}
public static void test2(int i){
}
public static void test3(String name){
}
public static void test4(char sex){
}
public static void test5(double weight){
}
public static void test6(int i,int j){
}
public static void test7(int i,String name){
}
方法参数分两种
一、基本数据类型
基本数据类型的变量当作参数传递的时候,方法的局部变量会随着方法的执行完毕而释放
局部变量:定义在方法的声明上和方法体内
二、引用数据类型
引用数据类型当作参数传递,其实传递的是地址值
即使方法执行完毕,但是实体(对象,数组)还在内存中
扎实学Java之数组与方法的更多相关文章
- Java翻转数组的方法
java的api没用翻转数组的工具类,只能自己写了. int [] testIntArr = {1,2,3}; //翻转数组 for (int i = 0; i < testIntArr.len ...
- Java学习--数组与方法
1. public class MethodDemo01{ public static void main(String args[]){ printInfo() ; // 调用printInfo() ...
- 零基础学Java(13)方法参数
前言 首先回顾一下在程序设计语言中关于如何将参数传递给方法的一些专业术语.按值调用表示方法接收的是调用者提供的值.而按引调用表示方法接收的是调用者提供的变量地址.方法可以修改按引用传递的变量的值,而不 ...
- java与java web数组括号的不同
由于之前学JAVA SE数组时习惯了数组括号的写法,到了Web这里写了有点不太习惯了,赶快写篇博客加深一下印象哈 一. java和java web中的数组的不同 java: int[] arr = n ...
- 学JAVA第十天,一维数组及二维数组的使用。
今天老师讲了JAVA数组,之前学C#的时候就学过一维数组,至于二维数组当时只是粗略普及了一下. 现在想学JAVA又学到了数组,但是这次不同,注重讲二维数组,因为老师知道我们都了解一维数组了. 所以现在 ...
- Java中的数组和方法
3.1 数组的定义和使用 数组(Array)是用来存储一组相同数据类型数据的集合.数组中的每个数据称为一个元素(element),数组可以分为一维数组,二维数组和多维数组.我们 主要讲解一维数组和二维 ...
- java基础学习04(数组与方法)
数组与方法 一.完成的目标 1. 掌握数组的定义.使用方法.引用传递 2. 掌握方法及其方法的重载 3. 使用方法接收和返回一个数组 4. java新特性对数组的操作支持 二.数组的定义和使用 数组是 ...
- java去除数组重复元素的方法
转载自:https://blog.csdn.net/Solar24/article/details/78672500 import java.util.ArrayList; import java.u ...
- Java 数组拷贝方法 System.arraycopy
System类提供的数组拷贝方法: public static native void arraycopy(Object src, int srcPos, Object dest, int destP ...
随机推荐
- angularJs实现数据双向绑定的原理
angular1.x在指定的事件触发时(比如dom事件,xhr响应事件,浏览器定位变更事件,定时器事件),通过脏值检测的方式比对数据是否有变更,来决定是否更新视图. angular2使用了zone.j ...
- FZU 2285 迷宫寻宝
思路: bfs求最短路径. #include<stdio.h> #include<iostream> #include<queue> #include<cst ...
- django中models field详解
本文参考自:django官方文档models/field 在model中添加字段的格式一般为: field_name = field_type(**field_options) 一 field o ...
- vue-cli模拟后台数据交互
作为一个前端入坑的妹子,在学习vue的道路上挣扎徘徊,由一开始的对vue一直蒙圈只知道双向数据绑定和一些'V-x'的指令,慢慢通过一个视频的学习渐渐入坑,对于我这个js基础不怎么好而且编程思维又不是很 ...
- Tutorial中的Hello2代码
该hello2应用程序是一个Web模块,它使用Java Servlet技术来显示问候语和响应. 1.GreetingServlet.java源码文件: 1 @WebServlet("/gre ...
- JavaScript 特效之四大家族(offset/scroll/client/event)
三大系列:offset.scroll.client 事件对象:event(事件被触动时,鼠标和键盘的状态)(通过属性控制) 三大系列都是以DOM元素节点的属性形式存在的. 类比访问关系,也是以 ...
- HTML5_canvas 画布
<canvas></canvas> 画布 <canvas id="my_canvas" width="400" height=&q ...
- 什么是Hash?Hash有哪些特性?
Hash 把任意长度的输入通过散列算法变换成固定长度的输出 Hash的特性: 输入域无穷,输出域有限.例如:有无穷多个(在工程中可以具体到多少个,例如1000)输入参数经过hash函数映射后得到有限的 ...
- symfony采坑
2018年7月31日21:43:17 安装 首先安装composer 注意 windows下注意 [curl] curl.cainfo =E:\phpStudy\PHPTutorial\php\p ...
- 20175320 2018-2019-2 《Java程序设计》第6周学习总结
20175320 2018-2019-2 <Java程序设计>第6周学习总结 教材学习内容总结 本周学习了教材的第七及第十章的内容.在这两章中介绍了接内部类与异常类以及输入.输出流,第七章 ...