Java评论整合
第3天:数组、方法
1.什么是数组?
数组:在内存中打开的连续空间,用于临时存储同类数据。如果要永久存储数据,可以通过流将其存储在数据库或文件中。
为什么有数组(必需)?
因为我们需要一次存储多个数据,而之前学过的变量一次只能存储一个数据。
数组和变量之间的区别
1.变量是内存中的一个小空间,而数组是内存中的一个连续空间。
2.变量一次只能存储一个数据,而数据一次可以存储多个数据。
3.内存中变量的分布是无序的、杂乱的、随机的,而数组分布是连续的、有序的。
4.变量没有默认值,而数组有默认值。
定义数组的两种方法(动态声明和静态声明)
1.动态定义
数组类型[]数组名称=新数据类型[数组长度];
示例:int[]arr=new int[10];//在内存中打开一个长度为10的连续空间。
如何给数组赋值需要索引(下标、角度)的帮助。
在计算机中,下标通常从0开始。
赋值方法:数组名[下标]=值;示例:arr[0]=1;
取值方式是通过下标(index) :arr[0]输出arr[0]得到值。
注意:如果超出数组值的范围,将报告数组角点超出范围的异常。
数组遍历:for(int I=0;长度;I){ 0
system . out . println(' array:' arr[I])
}
数组长度:arr.length数组名称。属性名
数组默认值为:字节短int长3360 0浮点双: 0.0
字符:空字符串:空布尔值:假
数组:静态声明的第二个声明方法
数据类型[]数组名称={value1,value2,valuen };
示例:int[] arr={10,20,30,40 };
特性:一步到位,赋值和长度都可用,数组的长度和值的个数一样多。
思考数组是否只能存储相同的数据类型?初衷是正确的。编译时,数据将统一为相同的数据类型。
基本练习:
1.阵列复制
//阵列的复制
int[] arr={1,2,34,5 };
int[]arr 1=new int[arr . length];
//遍历循环
for(int I=0;一、长度;I){ 0
//将arr数组中的元素复制到arr1
arr 1[I]=arr[I];
}
2.数组合并
//数组的合并
int[] brr={1,2,3,5 };
int[] brr1={4,5,9 };
int[]crr=new int[brr . length brr 1 . length];
for(int I=0;长度;I){ 0
crr[I]=brr[I];
}
//因为上一个brr数组中元素的值已经复制到crr了,现在把brr1的值赋给crr,我就够brr数组的长度了。
for(int I=0;i brr1.lengthI){ 0
crr[brr . length I]=brr 1[I];
}
//遍历crr
for(int I=0;i crr.lengthI){ 0
system . out . print(crr[I]' ');
}
3.找出数组元素的最大值、最小值和和,并反向遍历数组。
//数组最大值和最小值之和
int[] arr={1,2,3,4,5 };
int sum=0;
int min=arr[0];//默认数组的第一个元素是最小值。
int max=arr[0];//默认数组的第一个元素是最大值。
for(int I=0;一、长度;I){ 0
if (arr[i]max){
max=arr[I];
}
if(arr[I]min)}
min=arr[I];
}
sum=arr[I];//先遍历数组中的元素,然后累加。
}
System.out.println('数组长度:' arr . length ');
system . out . println(' sum=' sum ');
system . out . println(' max:' max ');
system . out . println(' min:' min ');
//依次遍历数组。
for (int i
= arr.length-1; i =0 ; i--) {
System.out.println("数组"+arr[i]);
}
4.从键盘输入一个数字在数字找它的小标并且打印出来。
//从键盘输入一个数字在数字找它的小标并且打印出来。 System.out.println("请输入要查找的数据:"); int[] arr={11,22,333,222,111}; Scanner sc = new Scanner(System.in); int number = sc.nextInt(); int index=-1;//索引为负数表示数组找那个没有这个数据 for (int i = 0; i arr.length ; i++) { //判断数组中是否有这个数 if(number==arr[i]){ index=i;//输出number的小标 System.out.println(number+"的下标是"+index); break;//找到了跳出这个循环 } } if (index==-1){ System.out.println("没有找到这个数据"); }
2.方法
2. 1 方法是什么,作用
方法(method)是将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集。
方法就是将某些具有独立的功能的代码,把它包(封装)起来
如何定义方法----可以照着主方法声明
方法定义好之后,使用(调用)方法
如何去定义一个方法
方法的语法结构:
public 返回值类型 方法名(参数1,参数2.....){
方法体;
}
例子:
//调用方法并输出方法的结果 System.out.println(FuntionDemo1.sum(1,2)); } //定义方法 public static int sum(int a,int b){ return a+b; } }
2.2方法的分类----共分为四类
1.无参无返:没有参数,也没有返回值
例如:public void A{
System.out.println("这是无参无返的方法");
}
自己不用给别人东西,别人也不用给自己东西
一般用于直接输出打印
自己定义方法:
格式:
public static 返回值类型 方法名(参数){
方法体-------这个方法封装的功能代码
}
没有返回值的标志: void
有返回值的标志: return
public static void 方法名(){
方法体
}
static:静态的
void:无返回值的
2.无参有返:没有参数,但是有返回值,调用者不用给方法东西,方法需要返回给调用东西, 自己不用给别人东西,别人需要给自己东西
例如:public int A{
System.out.println("这是无参有返的方法");
return 1;
}
3.有参无返(有参数,没有返回值):调用者给方法东西,而方法不需要给调用者东西
自己给别人东西,而别人不需要给自己东西
huanQian()
public void 方法名(int a){
方法体;
System.out.println("这是无参有返的方法"+a);
}
4.有参有返(有参数有返回值) :自己要给别人东西,别人也要给自己东西
public 参数类型 方法名(参数1,参数2...){
方法体
}
例子:
//变量如果是基本数据类型,必须先赋值,才能去使用,因为基本数据类型没有默认值
//定义方法
public static int sum(int a,int b){
return a+b;
}
2.3参数和返回值进行理解
写好一个方法之后,需要被调用。角色: 方法本身(别人)-----调用者(主方法)(自己)
参数与返回值就是这两个角色之间的数据传递
参数:调用者传给方法的数据
返回值:方法返回给调用者的数据
2.4方法重载的概念
什么是方法重载
方法重载是在同一个类中方法名相同,参数列表不同(参数包含参数个数,参数类型,参数顺序)与返回值无关(跟返回值没有关系)。
面试题方法重载与方法重写的区别
方法重载是在同一个类中方法名相同,参数列表不同(参数包含参数个数,参数类型,参数顺序)与返回值无关(跟返回值没有关系)。
方法重写是在子父类中,子类继承父类的方法,当父类的方法不满足子类时候,我们就可以对父类的方法进行重写。
2.5方法在内存中是如何存储的
@1b6d3586------理解成是数组在内存中位置的表现形式(地址值)
int[] arr=new int[]{1,2,3};
arr这个对象名携带的是一个地址值(对象的引用)例如:xx001
这个地址值指向堆内存中的内存空间。
数组会存储到堆空间中,在堆空间开辟一块空间。
2.6理解形参与实参的区别
什么是形参参数(形式参数)
形参:在自定义方法(方法)的声明上面(参数声明上面)
例子:
int a=10;//实参
System.out.println(A(a))
public int A(int a){//形参
retrun a;
}
什么是实参实际参数
在main方法中定义的一个实际变量
2.7 形参是基本数据类型和引用数据类型时,形参的改变是否对 实参有影响
形参如果是基本数据类型,形参的改变会不会影响实参不会
形参如果是引用数据类型,形参的改变会不会影响实参会
为什么
1.形参是基本数据类型,形参发生改变不会直接影响实参,基本数据类型保存在栈内存中,在栈中开辟一块内存空间可以称为栈帧,
栈帧1和栈帧2本质上是两个不同的空间,没有直接的联系,形参改变之后,方法(method)执行完后,method直接就弹栈了,
被jvm虚拟机中的垃圾回收机制(GC)释放了,跟main方法中的实参没有任何联系。
2.形参是引用数据类型,形参发生改变会直接影响实参,因为中间有地址值做牵引,两个参数指向的是同一个堆内存的地址。
8.使用方法需要注意的细节
细节:
1.方法可以调用其他方法吗可以
2.方法可以调用自己本身吗可以,但是会出现栈内存溢出,因为方法加载进栈中,会占用栈内存的空间,如果一直调用方法本身,最终栈内存空间会消耗完,没有多余的空间去加载了,所有会出现栈内存溢出。
3.方法里面可以写方法吗不可以
无返回值的方法可以有return吗可以,是用来结束方法的,结束(跳出)循环时break。
4.方法中的参数只能是同种数据类型吗不是,可以是不同种类的数据类型的,只是传参数的时候对应好(匹配)参数类型即可。
今日学习感受:
学习java其实比较容易的,有些之前不懂得,现在也有了新的领悟,真的,需要自己一步一个脚印扎扎实实的走好每一步,才能不负自己的付出。
学习java不难,难的是坚持,希望自己能继续,日复一日的坚持下去。
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/132068.html