一、方法:
(概念:什么是方法?)
可以看成是一个可以完成独立功能的代码块,可以反复使用,每次使用都是独立的!存在于类的结构体;(简单理解:一个设计好的功能代码块,可以反复使用)
(方法的作用:)
完成功能,数据的处理!方法可以拿来反复使用。每次使用都是独立的
(方法的认识:)
结构:public static void main(String[] args){ }
具体分析:public static修饰符(修饰给予特殊意义)
Void 这里写的是返回值得类型;void代表没有返回值
Main 方法的名字
(String[] agrs)形式参数;String[] 数据类型 args形式参数的名字
(告诉函数的使用者,当你要使用函数的时候,应该给函数什么数据
对于函数的设计者而言:自己定义形式参数,完成函数功能的设计)
(形式参数: 本质没有值的;可以看成是有值的,在方法的内部完成功能的设计)
{} 方法的功能代码块(设计的代码都是放在这个代码块中的)
(方法的语法:)
返回值(如果这里要返回值,那么这里就是返回值得类型) 方法名字(数据类型 形式参数名字){ //形式参数不是必须的,根据需求设计的
}
(方法的使用:)
(使用方法的时候,要传入对应类型(对应形式参数中设计的数据类型)的数据)
【必须掌握的】
1.一个方法在同一个类中,直接使用方法名+参数列表【数据类型,个数,顺序】,调用
2.一个方法如果有static修饰:应该通过类名.方法名++参数列表【数据类型,个数,顺序】
3.一个方法如果没static修饰,应该通过对象名.方法名+参数列表【数据类型,个数,顺序】
(方法签名:)
方法名字+参数列表[类型,顺序,个数]
----->方便在使用一个类中的,一个方法的时候,确定到底使用的是哪个
(方法重载)
在同一个类中,方法名字相同,参数列表不同
方法名:见名知意:方便我们调用方法
(方法return)
概念:一个方法:使用完成之后,如果有结果值,返回给方法使用者[需要返回就设计返回]
注意事项:
1.一个方法设计:return的数据类型,必须与方法返回值的类型一致
2.一个方法:内部代码只看结构的,不看值的
注:(1)如果一个方法的返回类型不是void,那么要求[不管方法里面做了什么事情]
都必须返回一个和返回值类型匹配的值
(如果方法类型不是void,方法后面必须写上返回“return+值”)
(2)对于结构体语句中写返回值:编译检查语法,只看结构不看值:
结构体中写了返回值不一定执行的到,编译语法会不通过!
二、数组
1.概念:
可以理解成在计算机中的多个连续的存储空间,里面可以按顺序存放多个类型相同的数据。
2.语法结构:
数据类型[] 数组变量名 = new 数据类型[数组长度] (申明数组)
3.数组的构成
-
数组名 : 数组的名字
-
数组元素 :就是存放在数组里面的数据
-
数组索引 :就是数组里面连续存储空间的编号,从0开始
-
length :数组的属性长度 通过 数组名.length 可以拿到数组的长度
使用: 存值:: 数组名[索引位置] = 值
取值:: 数组名[索引位置]4.JVM存储数据分析:
-
堆:可以理解为凡是new 出来的东西都放在这里面,堆内存可以被虚拟机动态的分配内存大小,无需事先告诉编译器的数据的大小、生命周期等相关信息
-
栈:主要存放一些变量容器名 (例如局部变量名,还可以存放局部变量 基本类型 数据值),栈内存被要求存放在其中的数据的大小、生命周期必须是已经确定的
图例:5.数组特点
1.数据类型限定了数组可以存放的数据类型
2.一个数组可以存储多个元素
3.一旦数组对象被创建好,那么其长度就固定不变了
4.动态创建好数组之后,会自动分配默认值,和数组中的元素类型有关(类似之前成员变量的默认值)
数组问题:
1) 数组索引越界【索引有哪些,索引的范围?(所有数组都有一个length属性)】
2) 空指针异常(没有指向数组)
3) 如果有返回值,不知道return写在哪里
6.数组的常用语法结构:
声明的同时赋值
数据类型 [] 数组变量名 = new 数据类型[] {多个以英文逗号分隔的数据};
数据类型[] 数组变量名 = {多个以英文逗号分隔的数据};
注:打印数组
可以想象成数组的遍历,将数组中的值都一一取出来
7.方法参数传递
1.值传递:
方法传递的是值
1.形式参数类型是基本数据类型
2.基本类型数据传递的是值
2.值引用:
方法传递的是值的引用
a) 形式参数类型是引用数据类型
b) 引用传递其实传的是地址,形式参数类型是引用数据类型或数组。
c) 实际参数(数据)是对象(或数组),这时实际参数与形式参数指向同一个地址
d) 在方法执行中,对形式参数的操作实际上就是对实际参数的操作,这个结果在方法结束后被保留了下来,所以方法执行中形式参数的改变将会影响实际参数。
注意:方法调用时,实际参数把它的值传递给对应的形式参数,相当于拷贝了一份值给形式参数, 所以方法执行中形式参数值的改变不影响实际参数的值。
a) 基本数据不影响原来的值
b) 引用数据不影响原来的地址值:
引用地址,引用的值,如果被改变,原来引用的的值所引用的值也会被改变,
因为都是同一个引用