数组拷贝及扩容
-
首先得有两个数组
-
的指导从哪拷贝到哪,拷贝多长
需求:从源数组拷贝第二个元素到第四个元素,到目标数组里面
/*需求:从源数组拷贝第2个元素到第4个元素,到目标数组里面*/
public class CopyDemo {
public static void main(String[] args) {
int[] ages = {15, 12, 56, 45, 2, 56, 15, 1, 8, 4};
int srcPos =2; //起始位置
int index =3;
int[] newAges = new int [3];
int destPos=0;
for (int i = srcPos; i < srcPos+index; i++) {
newAges[destPos++]=ages[i];
// destPos++;
}
for (int i = 0; i < newAges.length; i++) {
System.out.println(newAges[i]);
}
}
}
数组工具类Arrays
需求: int[] ages = {15, 12, 56, 45, 2, 56, 15, 1, 8, 4}; 打印出来变成[ 15, 12, 56, 45, 2, 56, 15, 1, 8, 4 ]
/*
* 需求: int[] ages = {15, 12, 56, 45, 2, 56, 15, 1, 8, 4}; 打印出来变成[ 15, 12, 56, 45, 2, 56, 15, 1, 8, 4 ]
* */
public class ArrayPrintDemo {
public static void main(String[] args) {
int[] ages = {15, 12, 56, 45, 2, 56, 15, 1, 8, 4};
String ret = "[";
for (int i = 0; i < ages.length; i++) {
//最后一个元素 不拼接 ,
if(i==ages.length-1){
ret = ret + ages[i];
}else {
ret = ret + ages[i] + ",";
}
}
System.out.println(ret+"]");
}
}
查看一个类的所有方法 alt+7
-
Arrays.toString
二维数组
//定义
int[][]arrays = new int [] [] {{1,2,5,6,9,8,4},{6,6,7,9,5,4,12,3}};
int[][]arrays = {{1,2,5,6,9,8,4},{6,6,7,9,5,4,12,3}};
int[][]arrays = new int [3] [6];
//需求:如何遍历二维数组
依然是for循环,只不过第一次拿到的是一维数组,只有把拿到的值再循环,才能得到具体的元素
/*
* 二维数组的训练
* //需求:如何遍历二维数组
* */
public class TwoArraysDemo {
public static void main(String[] args) {
int[][] arrays = new int[][]{{1, 2, 5, 6, 9, 8, 4}, {6, 6, 7, 9, 5, 4, 12, 3}};
// int[][] arrays1 = {{1, 2, 5, 6, 9, 8, 4}, {6, 6, 7, 9, 5, 4, 12, 3}};
// int[][] arrays2 = new int[3][6];
for (int i = 0; i < arrays.length; i++) {
System.out.println(Arrays.toString(arrays[i]));
//[1, 2, 5, 6, 9, 8, 4]
//[6, 6, 7, 9, 5, 4, 12, 3]
}
for (int i = 0; i < arrays.length; i++) {
int[] array = arrays[i];
for (int i1 = 0; i1 <array.length; i1++) {
int i2 = array[i1];
System.out.print(i2+",");
// System.out.println();
}
}
}
}
算法
需求:定义两个变量,交换两个变量的值
/*
* 需求:定义两个变量,交换两个变量的值
* */
public class SwapDemo {
public static void main(String[] args) {
int a = 10;
int b = 20;
int temp = a;
a = b;
b = temp;
System.out.println(a + "," + b);
}
}
冒泡排序
/*
* 冒泡排序 c
* */
public class BubbleSortDemo {
public static void main(String[] args) {
int []heights = {8,6,7,4,1,9};
//比较了五次
for (int i = 1; i < heights.length-1; i++) {
//第一次比较
if(heights[i-1]>heights[i]){
int temp= 0;
temp=heights[i-1];
heights[i-1]=heights[i];
heights[i]=temp;
}
}
//第二次比较
for (int i = 1; i < heights.length-2; i++) {
//第一次比较
if (heights[i - 1] > heights[i]) {
int temp = 0;
temp = heights[i - 1];
heights[i - 1] = heights[i];
heights[i] = temp;
}
}
//第三次比较
for (int i = 1; i < heights.length-3; i++) {
//第一次比较
if (heights[i - 1] > heights[i]) {
int temp = 0;
temp = heights[i - 1];
heights[i - 1] = heights[i];
heights[i] = temp;
}
}
//第四次比较
for (int i = 1; i < heights.length-4; i++) {
//第一次比较
if (heights[i - 1] > heights[i]) {
int temp = 0;
temp = heights[i - 1];
heights[i - 1] = heights[i];
heights[i] = temp;
}
}
System.out.println(Arrays.toString(heights));
}
}
/*
* 冒泡排序 升级循环版
* */
public class BubbleSortDemo2 {
public static void main(String[] args) {
int[] heights = {18, 6, 78, 4, 51, 97};
//比较了length-1次
for (int x = 1; x < heights.length; x++) {
for (int i = 1; i < heights.length - x; i++) {
if (heights[i - 1] > heights[i]) {
int temp = 0;
temp = heights[i - 1];
heights[i - 1] = heights[i];
heights[i] = temp;
}
}
}
System.out.println(Arrays.toString(heights));
}
}
选择排序
第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。
/*
* 选择排序
* */
public class SelectionDemo {
public static void main(String[] args) {
int[] heights = {18, 6, 78, 4, 51, 97};
for (int i = 0; i < heights.length-1; i++) {
if(heights[0]>heights[i+1]){
int temp = heights[0];
heights[0]=heights[i+1];
heights[i+1]=temp;
}
}
System.out.println(Arrays.toString(heights));
for (int i = 1; i < heights.length-1; i++) {
if(heights[1]>heights[i+1]){
int temp = heights[1];
heights[1]=heights[i+1];
heights[i+1]=temp;
}
}
System.out.println(Arrays.toString(heights));
for (int i = 2; i < heights.length-1; i++) {
if(heights[2]>heights[i+1]){
int temp = heights[2];
heights[2]=heights[i+1];
heights[i+1]=temp;
}
}
System.out.println(Arrays.toString(heights));
for (int i = 3; i < heights.length-1; i++) {
if(heights[3]>heights[i+1]){
int temp = heights[3];
heights[3]=heights[i+1];
heights[i+1]=temp;
}
}
System.out.println(Arrays.toString(heights));
for (int i = 4; i < heights.length-1; i++) {
if(heights[4]>heights[i+1]){
int temp = heights[4];
heights[4]=heights[i+1];
heights[i+1]=temp;
}
}
System.out.println(Arrays.toString(heights));
}
}
二分查找法
/*
* 二分查找法
* */
public class BinarySearchDemo {
public static void main(String[] args) {
int []heights = {8,6,7,4,1,9};
int Search = 9;
int min = 0;
int max = heights.length;
while (min <= max){
System.out.println(min +"------"+max);
//永远找一般的索引
int mid = (min +max)/2;
int midValue =heights[mid];
if(midValue>Search){
//如果大于,就往右边找
max = mid;
}else if(midValue<Search){
//如果小于,就往左边找
min=mid;
}else {
System.out.println(mid);
break;
}
}
}
}
方法
解决代码重复的问题
定义:修饰符 +返回值类型 + 方法名称 + (形式参数){
方法体
}
/*
* 方法定义练习
* 打印 helloworld 一百次
* */
public class MethodDemo {
public static void main(String[] args) {
for (int i = 0; i < 100; i++) {
print();
}
}
//参考主方法
//自定义方法
public static void print(){
System.out.println("helloWorld!!!!");
}
}
详细讲解方法
// 修饰符 返回值 方法名称 形式参数
public static void PrintString(String str){0
System.out.println("我需要打印"+ str);
}
}
方法的可变参数
public static int addSum(int...arr){
int sum = 0;
for (int i : arr) {
sum +=i;
}
return sum;
}
方法的重载
方法重载:方法重载就是方法名称重复,加载参数不同。
-
需求:定义一个求两个正整数的加法计算器,定义一个 求浮点型 double 的计算器
-
需求:在同一个类中,分别去打印 String int double 类型
/*
* 方法的重载
* 需求:定义一个求两个正整数的加法计算器,定义一个 求浮点型 double 的计算器
* */
public class OverloadDemo {
public static void main(String[] args) {
System.out.println(getSum(2, 5));
System.out.println(getSum(2.4, 3.3));
System.out.println(getSum(2, 66, 32));
}
public static int getSum(int num1,int num2){
return num1+num2;
}
public static double getSum(double num1,double num2){
return num1+ num2;
}
public static int getSum(int num1,int num2,int sum3){
return num1+num2+sum3;
}
}
注意,Java的方法重载要求同名的方法必须有不同的参数表,仅有返回类型不同是不足以区分两个重载的方法
这篇博客介绍了Java中的数组拷贝和扩容,使用Arrays工具类进行操作,并探讨了二维数组。接着讲解了选择排序和二分查找算法。此外,还详细阐述了方法的概念,包括可变参数和方法的重载,提供了多个示例来说明如何在不同场景下应用这些概念。
1002

被折叠的 条评论
为什么被折叠?



