Java【U5-U7】

方法

1、注意什么是method signature。
在这里插入图片描述
2、return结束方法。return可返回数组。void方法return可有可无,可中止方法。return;
3、声明变量分配内存。定义不分配。
4、main方法由JVM调用。
5、控制流在调用者与被调方法间转换。
6、可兼容类型的参数可以不用显式转换。如int转double。
7、值传递:形参的变化不影响实参,实参该多少该多少。实参与形参内存独立。都在栈里。

在这里插入图片描述
8、重载:方法名相同,参数列表(个数+类型)不同。
模糊调用:多个匹配方法,编译器不知道该访问谁。

Math类

1、Trigonometic Method
public static double sin(double radians)//cos,tan
public static double toRadians(double degree)
public static double toDegrees(double radians)
public static double asin(double a)
2、Exponent Method
public static double exp(double x)//e^x
public static double log(double x)//ln(x)
public static double log10(double x)
3、Rounding Method
public static double ceil(double x)//向上取整
public static double floor(double x)//向下取整
public static double rint(double x)//取最近整数,等距取偶数。
public static int round(float x)//(int)Math.floor(x+0.5),即(x+0.5)向下取整。
public static long round(double x)
4、Math类和JOptionPane类无main方法。

Array

1、数组声明不为数组元素分配内存。只给数组的引用分配内存。
数组是引用数组元素的变量。
2、一维数组:int[ ]a=new int[10];//声明 赋值 创建
声明:int[] a;
创建:a=new int[10];
初始化:int[] a={8,6,3,4};ora[0]=8,a[1]=6,...
默认值:数值型0,字符型’\u0000’,布尔型false。
3、复制数组:复制引用值,不是数组内容。
在这里插入图片描述
方法:①循环赋值;②System.arraycopy(源数组,源起始复制位,目标数组,目标起始复制位,length);注:目标数组必须在此之前已建立。③clone();
4、匿名数组:new int[]{4,6,9,…};
5、传递:按共享传递pass-by-sharing,传引用值。方法内外的数组是一个。在方法内操作等同于在方法外操作,即调用方法会改变调用者原有数组的内容。
JVM把数组存在堆中。
在这里插入图片描述eg传递数组实参:

int[] a={1,2};
void swap(int n1,int n2){……};
void swap1(int[] array){……};
swap(a[0],a[1]);
syso(a[0],a[1]);
swap1(a);
syso(a[0],a[1]);

结果:1,2;2,1。
在这里插入图片描述
6、可变长参数:类型...变量名可作数组使用。double...num
注:①调用时,如果同时能匹配固定参数和可变长参数的方法,则优先匹配固定参数方法。
②如果同时和2个包含可变参数的方法匹配,则编译报错。(模糊调用)③一个方法只能有一个可变参数,且可变参数应放在所有参数里最后。

7、Arrays类:java.lang.Arrays
sort(array):array数组升序排列。
sort(array,s_pos,e_pos):第几位到第几位升序排列。
binarySearch(array,num):二分法找num,返回位置。
equals(array1,array2):两数组内容是否相同。
fill(array,num):整个数组都是num。
fill(array,s_pos,e_pos,num):第几位到第几位之间都是num。

8、二维数组:
int[][] a=new int[2][3]或new int[2][ ]; a[0][0]=1;a[0][1]=2;...
orint[][] a={{1,2,3},{4,5,6}};
x.length=2,x[0].length=3。x[0]=new int[3];
锯齿数组ragged array:每行元素个数不同。

算法
1、随机洗牌

double[] array={1,2.5,3,6.4};
for(int i=0;i<array.length;i++){
int index=(int)(Math.random()*array.length);
double temp=array[i];
array[i]=array[index];
array[index]=temp;
}

2、二分法查找
n个元素,查找log2(n)+1次。
3、选择排序:由小到大
第一个数作当前最小数,找剩余里最小的记位置再换。

public static void selectionSort(int[] a){
for(int i=0;i<a.length-1;i++){
	int currentMin=a[i];
	int currentIndex=i;
	for(int j=i+1;j<a.length;j++){
	if(a[j]<currentMin){
		currentMin=a[j];
		currentIndex=j;
		}
	if(currentIndex!=i){
		a[currentIndex]=a[i];
		a[i]=currentMin;
		}
	}
  }
}

4、插入排序:由小到大

public static void insertSort(int[] a) {
 for(int i=1;i<a.length;i++) {
  int temp=a[i];
  for(int j=i-1;j>=0;j--) {
   if(j>=1&&a[i]<a[j]&&a[i]>a[j-1]||j==0&&a[i]<a[j]) {
    for(int k=i-1;k>=j;k--) a[k+1]=a[k];
   a[j]=temp;}
   }
  }
 }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值