Java基础之方法、数组

此为个人学习笔记,如有错误,欢迎指教

八、函数

概述:

-在Java中也被称为函数
-使用{}括起来,封装完成某些功能的代码块

格式:

修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2…){
  函数体
  return 返回值
}
当返回值类型是void的时候格式(无返回值):
修饰符 void 方法名(参数类型 参数名1,参数类型 参数名2…){
  函数体;
}

说明:

-修饰符:public private 等
-返回值类型:限定此方法得到的值的数据类型
-方法名 :就是个名称
-参数类型:在执行方法体时需要的数据的类型
-return :return 值 ,此值的数据类型就是返回值类型;当时有返回值类型的时候可以看成为此方法的值(只理解),由return带给调用者;return结束该方法。

理解:参数类型与参数名,有点像声明1个变量,当该方法被调用的时候给参数赋值,在方法体内,变量被使用;

方法重载:

在同一类中,允许存在一个以上的同名方法,只要他们的参数个数或者参数类型不同即可;

方法重载,只与方法名和参数列表来区分的,与返回值类型无关
在调用时,虚拟机通过参数列表的不同来区分同名方法;

九、数组

概述:

-存储 多个元素(同一种数据类型的) 的容器
-数组可以存储数据的类型:基本数据类型+引用数据类型

定义的格式:

-数据类型[] 数组名;推荐使用这种,工作中也常用这种
-数据类型 数组名;

数组的初始化:

-Java中的数组必须先初始化才能使用(就跟变量也得初始化才能使用)
-数组的初始化:为数组中的数组元素分配了内存空间;
-动态初始化:指定数组长度,由系统为数组分配初始值;
    数据类型[] 数组名 = new 数据类型[数组长度];
-静态初始化:指定每个数组元素的值,由系统决定数组长度;
    数据类型[] 数组名 = new 数据类型[]{数据1,数据2……数据n};
-数组是带有编号的,下标的,索引的
-数组是引用类型

各种图说明

1) 图说明在创建一个数组时内存中的流程(创建一个对象)


2) 数组的赋值及取值时内存中的流程:图和代码结合


图数组元素赋值取值
    图数组元素赋值取值  对应的代码
public class ArrayDemo2 {

    public static void main(String[] args) {
        int[] arr1 = new int[3];
        /*
         arr1[0] = 11;把11赋值给数组中下标为0的元素
         拿着值11按照线路寻找,使用11替代原有的值
         line1->line2->line3-line4->改值
         */
        arr1[0] = 11;
        /*
         arr1[1] = 22;把11赋值给数组中下标为1的元素
         拿着值22按照线路寻找,使用11替代原有的值
         line1->line2->line5-line6->改值
         */
        arr1[1] = 22;
        /*
         arr1[2] = 33;把11赋值给数组中下标为2的元素
         拿着值33按照线路寻找,使用33替代原有的值
         line1->line2->line7-line8->改值
         */
        arr1[2] = 33;
        /*
         找值:arr1 = line1 = 0x0001
         0x0001是演示过程中为了方便随便写的,输出的才是真正的地址值;
         */
        System.out.println(arr1);//输出:[I@7852e922
        /*
         找值:arr1[0] = line1->line2->line3-line4->取值=11
         */
        System.out.println(arr1[0]);//输出:11
        /*
         找值:arr1[1] = line1->line2->line5-line6->取值=22
         */
        System.out.println(arr1[1]);//输出:22
        /*
         找值:arr1[1] = line1->line2->line7-line8->取值=33
         */
        System.out.println(arr1[2]);//输出:33
        //与arr1是一样的;
        int[] arr2 = new int[3];
        arr2[0] = 111;
        arr2[2] = 333;
        System.out.println(arr2);//输出:[I@4e25154f
        System.out.println(arr2[0]);//输出:111
        //arr2[1]没有改过值,所以还是默认值0
        System.out.println(arr2[1]);//输出:0
        System.out.println(arr2[2]);//输出:333
        
        /*
         int[] arr3 = arr1;arr1 = 0x0001
         所以 arr3 = 0x0001;
         */
        int[] arr3 = arr1;
        //
        /*
         arr3在内存中指向的是0x0001,所以改值走的也是0x0001的线
         arr3[0] = 100;把11赋值给数组中下标为0的元素
         拿着值100按照线路寻找,使用100替代原有的值
             line31->line32->line3-line4->改值为100
         */
        arr3[0] = 100;
        /*
         arr3在内存中指向的是0x0001,所以改值走的也是0x0001的线
         arr3[0] = 200;把200赋值给数组中下标为0的元素
         拿着值200按照线路寻找,使用200替代原有的值
         line31->line32->line5-line6->改值为200
         */
        arr3[1] = 200;
        System.out.println(arr3);//输出:[I@7852e922
        /*
         找值:arr3[0] = line31->line32->line3-line4->取值=100
         */
        System.out.println(arr3[0]);//输出:100
        System.out.println(arr3[1]);//输出:200
        /*
         没有使用arr3更改过此值,所以取的还是33
         找值:arr3[2] = line31->line32->line7-line8->取值=33
         */
        System.out.println(arr3[2]);//输出:33
        
        /**
         使用arr1改值,arr3拿值,取的值是最后更改过的值,
         原因就在与arr1和arr3执行的是同一个内存地址;
         */
        arr1[2] = 300;
        System.out.println(arr3[2]);//输出:300
        
    }
}

使用:

数组遍历(依次输出数组中的每一个元素)
数组获取最值(获取数组中的最大值最小值)
数组元素逆序 (就是把元素对调)
数组查表法(根据键盘录入索引,查找对应星期)
数组元素查找(查找指定元素第一次在数组中出现的索引)
在demo中

二维数组:

概述:

元素为一个数组的数组就是二维数组

格式:

格式1:
int[][] arr = new int[m][n];
m是二维数组的长度,n是元素数组的长度;
格式2:静态初始化,给定数组值,由系统给出数组长度
int[][] arr = new int[m][];
m是二维数组的长度
格式3:静态初始化,给定数组值,由系统给出数组长度
int[][] arr = new int[][]{{1,2,3},{4,5,6}};

各种图说明

二维数组的初始化、赋值、取值过程(格式1)


二维数组的初始化、赋值、取值过程(格式2)
(格式1和格式2,在内存不同在于一维数组元素是先分配还是后分配)


二维数组的初始化、赋值、取值过程(格式3)


使用:

  查看demo

思考:

Java中参数传递问题


图-参数传递
/**
 * Java中参数传递:与图-参数传递配合
 * @author sexyhair
 */
public class ArrayDemo {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        change(a,b);
        System.out.println("main(String[] args)--a="+a+",b="+b);
        int[] arr = new int[]{1,2,3,4,5};
        change(arr);
        System.out.println("main(String[] args)--arr[1]="+arr[1]);
    }
    
    public static void change(int a ,int b){
        a = b;
        b = a+b;
        System.out.println("change(int a ,int b)--a="+a+",b="+b);
    }
    public static void change(int[] arr){
        String str = "[";
        for(int i = 0 ; i < arr.length ; i++){
            if(arr[i] % 2 == 0){
                arr[i]*=2;
            }
            str = str+arr[i]+" ";
            if(i == arr.length-1){
                str = str+"] ";
            }
        }
        System.out.println("change(int[] arr)-----"+str);
    }
}
参考书籍视频:
-学习视频:黑马程序员_Java基础视频-深入浅出精华版
-阅读书籍:Java核心技术 卷I(机械工业出版社)
          API1.8
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,240评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,328评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,182评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,121评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,135评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,093评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,013评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,854评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,295评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,513评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,398评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,989评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,636评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,657评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352

推荐阅读更多精彩内容

  • 12:00.分,因为给自己定了一个要形成写日记的习惯的要求,所以现在来写点什么。可是实际上现在我没有什么特别想说的...
    游嬷嬷阅读 58评论 0 0
  • 大学时有个同学,熟读古典文学,周易孔子。他常常会用课上的时间跟我们讲道家五行,期间还涉及股票基金,国际形势等等。在...
    三横三阅读 376评论 0 1
  • 我高中毕业之后,跟一个男生表白了。 为了给那段无边无际的暗恋画上一个句号。 我没有多期待结果怎样,我只是觉得在心里...
    夏小喵喵阅读 1,363评论 2 6
  • 从2012年至今,国内花艺以每年20%的需求量递增,预计到2018年,国内花卉行业销售总额将达到2881.44亿元...
    我是哦年阅读 947评论 0 2