本帖最后由 luckyhanx 于 2018-3-24 21:32 编辑
依据旧数组创建新数组并较两个数组元素的算法及方法编写及调用的注意事项: 1.将数组arr1中的元素赋值给一个新数组arr2 int j =0; for(i=0;i<arr1.length;i++){ arr2[j++]= arr1; } 算法:以索引j为新数组的索引,并将j初始化为0.随后对原数组arr1进行遍历,并赋值给新数组arr2,并将索引j自增即可.(不需要对新数组进行遍历)
2. 比较长度相同的两个数组的元素内容是否相同: for (i=0;i<arr1.length;i++){ if(arr1!= arr2) { returnfalse; } } returntrue; 算法:先将第一个数组进行遍历,然后直接将第二个数组同样索引的元素与第一个数组遍历的元素进行比较(不需要对第二个数组进行遍历),如果有不相同的则返回false,否则就返回true.
3. 寻找长度相同的两个数组中不同的元素: String str =” “; for(i=0;i<arr1.length;i++) { for(j=0;j<arr2.length;j++){ if(arr1== arr2[j]) { break; } if(j==arr1.length-1){ str+= arr1; } } //先将arr1作为主数组进行遍历,再在arr1中遍历arr2,将arr1[0]与arr2中的所有元素进行比较,如果有相同的则跳出,如果均不同,则会比较到arr2的最后一个元素(即索引位置为 arr.length-1),此时就说明arr1[0]与arr2中的所有元素都不同,将arr1[0]打印出来即可.之后再继续循环至arr1[1],arr1[2]……最后便可找出arr1中所有与arr2不同的元素 for(i=0;i<arr2.length;i++){ for(j=0;j<arr1.length;j++){ if(arr2== arr1[j]) { break; } if(j==arr2.length-1){ str+= arr2; } } //同理,再将arr2作为主数组进行遍历,将arr1 作为比较数组进行循环,重复以上过程,最后便可找出arr2中所有与arr1不同的元素,最终将str输出即可.
4.方法书写及调用时的注意事项 <1>方法与主方法同级(没有写在其它类中)时,需要加static, 且调用时直接通过方法名(参数)的方式调用 print(a); 方法写在类中时,不需要加static,且调用时必须通过创建对象调用. 如 Print a = new Print(); a.print(); 但构造方法除外,构造方法在创建对象的时候就调用了,如Print a = new Print(),不能通过a.print()的方式调用
<2>方法不能嵌套.(即不能在方法里面写方法)
<3>没有返回值的方法只能单独调用.即不能赋值或输出.
<4>当类的方法中,最终要传回值时需定义相关类型,如不需要传回值(如直接显示输出语句),则类型为void.
<5>当方法的参数是基本数据类型时,形式参数的改变不影响实际参数. 当方法的参数是引用数据类型(类,接口,数组,枚举)时,形式参数的改变直接影响实际参数. 这里经常会有一个误区,即对一个数组进行方法的调用时,不再需要返回改变后的新的数组,即返回值为void即可,因为数组通过方法调用后,原数组就已经发生了改变.
5.构造方法特点及注意事项 <1>构造方法特点: 1).方法名与类名相同(大小写一致) 2).没有返回值类型,连void都没有 <2>构造方法注意事项: 1.)构造方法可以重载,与方法重载的方式相同: 方法名相同,参数列表不同,与返回值无关.(通过参数列表的个数/类型不同来区分) 2).如果我们没有给出构造方法,系统默认会提供一个无参构造方法 3).如果我们已经给出构造方法,系统将不会提供无参构造方法,这个时候如果需要无参构造方法,需要手动给出,建议永远手动给出 4.)在创建对象时,构造方法即会自动调用 5.) 构造方法只能用 new 方法名()的方式调用,如果有多个构造方法,通过参数值个数的不同来区分. 不能用创建新对象,引用对象名的的方法调用. 如构造方法为: public Student(){} 则只能用 new Student()的方式调用, 不能用 Student s1 = newStudent(); s1.Student()的方法调用 |