二维数组和方法(2019年10月11日)

for循环中关于输出质数之内的东西 解决思路:

在输出质数的情况中,我们想假定所有的数都为质素(因为只要这个数可以被某个在2和比它本身小1的数整除,那么就可以判断他不是一个素数),也就是将一个比较难判断的情况定为true
详细代码如下:

for(int i=2;i<201;i++){
boolean flag=true;
for(int j=2;j<i;j++){
if(i%j==0){
flag=false;
break;
}    
}
if(!flag){ 
System.out.print{i+“是质数”};
}
}
对于一维数组我们可以用增强for循环来遍历
for(int a:arr){
System.out.println(a);
}

思路就是用a来盛放arr的每一个元素,然后再打印出来,循环比较强简单但是不能拿到对应元素的下标
copy数组的三种操作:
1.int [] arr=Arrays.copyOf(array,4) array是原数组,4代表新的数组arr的长度
2.int [] arr=Arrays.copyOfRange(array,2,4) 2和4是左开又闭区间[2,4)
3.System.arraycopy(array,1,arr,3,4) array是原数组,1代表复制的原数组的下标,arr表示存放的数组,3表示放入到arr数组的下标为3的位置,4表示复制元素的个数

二维数组的定义方式:int arr[][]=new int[5][4];和一维数组一样,也有三种定义方式,两种静态定义,一种动态定义

方法:如果不用方法:1.代码结构混乱,不清晰 2.代码不能能够复用

语法:访问修饰符 返回值类型 方法名 (形参数列表){
方法体
}
方法写在类中,不能写在其他方法中,方法也不能嵌套
返回值类型:输出
形参数列表:输入
方法名:小驼峰命名方式,见名知意

方法的调用:在同一个类体中:方法名();
在不同的类体中:类名.方法名();
形参:形式参数 实参:实际参数
注意:形参和实参要一一对应(个数,顺序,类型)
有一种方法的定义形式如下:
public static void method(int ...a){
}
这个意思是把用户输入的参数放到一个名字为a的数组中,可以通过下标a[i]拿到值

对于数组这种引用类型来说 他们保存的是一个指向堆内存中的地址

String这种引用数据类型是特殊的,他是自带new的 例如;String i="sdad",i="dasdsada",看上去像是重新赋了一个字符串给i,其实是在堆内存中,重新给一个地址用来存放之后的字符串,String在Java底层是用char数组存储的,所以会有特殊情况
关键字new:在堆内存中申请空间

方法中的一种特殊情况:递归
操作的时候可能会报错:StackOverErro(栈内存溢出) 在进行递归时一定要记得添加一个终止条件,不然就会报错
递归他的逻辑要简单明了一些,但是会以牺牲内存空间为代价,
那么为什么要用递归呢? 答:在进行文件管理系统的时候,我们就要用到递归的方法

在方法中如果有返回值的话,就需要在方法体中添加一个return 后面的类型要和返回值类型一样,rerun是用来停止整个方法的,写在return后面的代码块就不会再运行了,如果没有返回值类型的话(比如是void)也还是可以写return的,但是后面不可以接内容,打上分号结束就行了

每日一练

1,有一个数组{1,2,3,4,5},将这个数组扩容到10。

答:int[] arr = { 1, 5, 3, 4, 44 };
int[] b = Arrays.copyOf(arr, 10);
for (int a : b) {
System.out.println(a);
}

2.求10的阶乘,要求通过递归算法。

答:public static int method(int a) {
if (a == 1) {
return 1;
}
return method(a - 1) * a;
}

3,有一个数组{7,5,14,23,19,2,4},要求使用冒泡进行排序(从大到小)

private static void method(int[] arr) {
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr.length - i - 1; j++) {
if (arr[j] < arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;

}
}
}
// 控制台输出排序之后的数组
for (int a : arr) {
System.out.println(a);
}
}
原文地址:https://www.cnblogs.com/Starlets/p/11679583.html