day-1-2-4

一、练习

  • 假如一个小球从100米高度自由落下,每次落地后就反跳回原高度的一半。那么求它在第10次落地时,共经过多少米?第10次反弹多高?
public static void main(String[] args) {
	System.out.println("一共经过了" + GG(10));
}
public static String GG(int n) {
	double height1 = 100;
	double sum = 0;
	double heightSum = 0;
	double height2 = 0;
	for (int i = 1; i <= n; i++) {
		height2 = height1 / 2.;
		sum = height1 + height2;
		height1 = height1 / 2.;
		heightSum += sum;
	}
	return "一共经过了" + (heightSum - height2) + ",第10次反弹了" + height2 + "米";
}
  • 十进制转8进制和16进制
public static void main(String[] args) {
	System.out.println(method(7692));
}
public static String method(int n) {
	String ss = "";
	while (true) {
		int n2 = n % 16;
		String n3 = "";
		n /= 16;
		if (n2 == 10) {
			n3 = "a";
		} else if (n2 == 11) {
			n3 = "b";
		} else if (n2 == 12) {
			n3 = "c";
		} else if (n2 == 13) {
			n3 = "d";
		} else if (n2 == 14) {
			n3 = "e";
		} else if (n2 == 15) {
			n3 = "f";
		} else {
			n3 = "" + n2;
		}
		System.out.println(n + "----" + n3);
		ss = n3 + ss;
		if (n == 0)
			break;
	}
	return ss;
}

二、数组

数组的定义

  • 声明并开辟数组
元素类型[] 数组名 = new 元素类型[元素个数或数组长度];
示例:int[] arr = new int[5];
初始化操作
arr[0]=10;
  • 静态初始化数组
    • 数组先开辟内存空间,而后再使用索引进行内容的设置,实际上这种做法都叫做动态初始化,而如果希 望数组在定义的时候可以同时出现设置内容,那么就可以采用静态初始化完成。
元素类型[] 数组名 = new 元素类型[]{元素,元素,……};
int[] arr = new int[]{3,5,1,7};
int[] arr = {3,5,1,7};

数组元素的默认初始值

  • 数组元素是整型:0
  • 数组元素是浮点型:0.0
  • 数组元素是char型:0或’\u0000‘,而非’0‘
  • 数组元素是boolean类型:false,Oracle的JVM中采用byte[]方式进行存储

数组的特点

  • 数组是有序排列的
  • 数组属于引用数据类型的变量。数组的元素,既可以是基本数据类型,也可以是引用数据类型
  • 创建数组对象会在内存中开辟一整块连续的空间
  • 数组的长度一旦确定,就不能更改。

数组常见异常

  • NullPointerException 空指针异常

    • 原因: 引用类型变量没有指向任何对象,而访问了对象的属性或者是调用了对象的方法。
  • ArrayIndexOutOfBoundsException 索引值越界

    • 原因:访问了不存在的索引值。数组角标越界异常:,注意:数组的角标从0开始。
  • 将50放入{ 12, 14, 23, 25, 45, 66, 68, 70, 77, 90, 91 }进行排序

练习

int[] old = { 12, 14, 23, 25, 45, 66, 68, 70, 77, 90, 91 };
int kk = 50;
boolean bb = true;
int[] newArray = new int[old.length + 1];
for (int i = 0; i < old.length; i++) {
	if (old[i] < kk) {
		newArray[i] = old[i];
	} else {
		if (bb) {
			newArray[i] = kk;
			bb = false;
		}
		newArray[i + 1] = old[i];
	}
}
for (int i : newArray) {
	System.out.print(i + " ");
}
  • 定义一个数组其中包含多个数字。用自己的方式最终实现,奇数放在数组的左边,偶数放在数组的右边
int[] arr = new int[] { 1, 2, 7, 10, 13 };
int[] brr = new int[arr.length];
int k = 0;
int m = arr.length - 1;
for (int i = 0; i < arr.length; i++) {
	if (arr[i] % 2 != 0) {
		brr[k] = arr[i];
		k++;
	} else {
		brr[m] = arr[i];
		m--;
	}
}
for (int i = 0; i < brr.length; i++)
	System.out.print(brr[i] + "\t");
  • 冒泡排序
double arr[] = { 12.5, 51.1, 23.1, 46.5, 95.1, 1.5 };
for (int j = 1; j < arr.length; j++) {
	for (int i = 0; i < arr.length - j; i++) {
		if (arr[i] > arr[i + 1]) {
			double tmp = arr[i];
			arr[i] = arr[i + 1];
			arr[i + 1] = tmp;
		}
	}
}
for (double d : arr) {
	System.out.print(d + " ");
}
  • 折半查找
int[] arr = new int[21];
for (int i = 1; i < arr.length; i++) {
	int r = (int) (Math.random() * 100);
	arr[i] = r;
}
arr[0] = 33;
for (int i = 1; i < arr.length; i++) {
	for (int k = 0; k < arr.length - i; k++) {
		if (arr[k] > arr[k + 1]) {
			int tmp = arr[k];
			arr[k] = arr[k + 1];
			arr[k + 1] = tmp;
		}
	}
}

for (int tmp : arr)
	System.out.print(tmp + "  ");
System.out.println();

int target = 33;
int pos = -1;
int m1 = 0;
int m2 = arr.length - 1;
boolean flag = false;

while (m1 <= m2) {
	pos = (m1 + m2) / 2;
	if (arr[pos] > target) {
		m2 = pos - 1;
	} else if (arr[pos] < target) {
		m1 = pos + 1;
	} else {
		flag = true;
		break;
	}
}
if (flag)
	System.out.println(pos + "::" + arr[pos]);
else
	System.out.println("找不到");

三、System.currentTimeMillis()计算方法与时间转换

System.currentTimeMillis();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值