每天努力一點點
-Make a little progress every day
文章目錄
- 前言
- 1、陣列基本用法
- 1.1 什么是陣列
- 1.2 創建陣列
- 1.3 陣列的使用
- 2、陣列做為方法的引數 回傳值
- 3、陣列練習
前言
隨著時代的發展編程語言也在進步,Java語言更是成為當今時代潮流,本文簡述了阿杰對Java語言的初步認識,并記錄阿杰初次進行Java入門學習的部分重要基礎內容;
1、陣列基本用法
1.1 什么是陣列
陣列本質上是能讓我夢批量創建相同型別的變數;
陣列存在于堆中,對陣列來說堆疊記憶體的是與陣列地址相對的唯一值,通過hash()該值可以獲得與之對應的堆中的唯一地址;
1.2 創建陣列
基本語法格式
1、動態初始化:
資料型別[ ]陣列名稱 = new 資料型別[ ] {初始變數值};
例:
int [ ] array =new int[ ]{1,2,3}
或int [ ] array = new int[ 5] \陣列存在于堆中,堆中都有初始值)
2、靜態初始化:
資料型別[ ] 陣列名稱 = {初始化資料};
例:
int[ ] array = {1,2,3,4}
3、二維陣列:
資料型別 [ ] [ ] 陣列名稱 = new 陣列型別 [行數] [列數]{初始化資料};
1.3 陣列的使用
陣列的列印
//有序列印:
for(int i = 0; i < array length; i++){
System.out.println(array[i]+" ");
}
//無序列印
for(int i: array1){
System.out.println(a + " ");
}
//例:輸出陣列的長度
int [ ] array = new int{1, 2 ,3 4};
System.out.println("length"+arr.length);
//例將陣列轉為字串
string ret = arrays to string(array);
System.out.println(ret);
注意事項:
1、使用 array.length可以獲取長度;
2、陣列下表是從零開始;
3、下標操作不能超出有效范圍[0,length-1] ;
4、array [ ] = array [5];其中默認初始值為零;
下標越界例外:
Java.lang,ArrayIndexoutofBondsExpection:
2、陣列做為方法的引數 回傳值
- 陣列作為方法的引數要注意引數在方法中開辟堆疊是否被賦值;
- null在Java中表示空參考;
int [ ] array = null;
System.out.println(array(0));
//執行結果
Exception in thread "java.lang.NullPointerException at Text.main(Text.java:6)"
null 表示一個無效的記憶體位置;
- 為了不破壞原陣列需要在方法內創建一個新陣列;
3、陣列練習
1. 陣列轉字符:
package com.company;
import java.util.*;
public class Main {
public static void main(String[] args){
int [] array = new int[]{1,2,3,4,5};
swap(array);
}
//陣列轉字串
public static void swap(int[] array){
String ret = Arrays.toString(array);
System.out.println(ret);
}
}
2. 陣列拷貝:
package com.company;
import java.util.*;
public class Main {
public static void main(String[] args) {
int [] array = new int[]{1,2,3,4,5};
copy(array);
}
//拷貝陣列
public static void copy(int[] array){
int[] ret = new int[5];
for(int i=0; i < array.length; i++){
ret[i] = array[i];
}
String ret1 = Arrays.toString(ret);
System.out.println(ret1);
}
}
3. 找陣列中最大元素:
(小元素同理)
package com.company;
import java.util.*;
public class Main {
public static void main(String[] args) {
int [] array = new int[]{1,2,3,4,5};
find(array);
}
//找出陣列中最大的元素
public static void find(int[] arr){
int m = arr[0];
for(int i = 1; i < arr.length; i++){
if(arr[i] > m){
m = arr[i];
}
if(i == arr.length -1){
System.out.println(m);
}
}
}
}
4. 求陣列平均值:
package com.company;
import java.util.*;
public class Main {
public static void main(String[] args) {
int [] array = new int[]{1,2,3,4,5};
ave(array);
}
//求平局值
public static void ave(int[] arr){
int sum = 0;
for(int i = 0; i < arr.length; i++){
sum += arr[i];
if(i == arr.length-1){
System.out.println(sum/arr.length);
}
}
}
}
5. 查找指定元素:
- 順序查找
package com.company;
import java.util.*;
public class Main {
public static void main(String[] args) {
int [] array = new int[]{1,2,3,4,5};
find(array,3);
}
//順序查找
public static void find(int[] arr,int n){
for(int i = 0; i < arr.length; i++){
if(arr[i] == n){
System.out.println(i);
}
if(i == arr.length && arr[i] != n){
System.out.println("沒有扎到");
}
}
}
}
- 二分查找(針對有序陣列)
package com.company;
import java.util.*;
public class Main {
public static void main(String[] args) {
int [] array = new int[]{1,2,3,4,5};
find1(array,3);
}
//二分查找(針對有序陣列)
public static void find1(int[] arr1 , int n){
int right = arr1.length-1;
int left = 0;
while(left < right){
int mid = (left + right)/2;
if(n < arr1[mid]){
right = mid - 1;
} else if(n > arr1[mid]){
left = arr1.length-1;
}else{
System.out.println(mid);
break;
}
}
}
}
6. 檢查陣列的有序性:
package com.company;
import java.util.*;
public class Main {
public static void main(String[] args) {
int [] array = new int[]{1,10,3,4,5,6,7,8,9};
check(array);
}
//檢查陣列的有序性
public static void check(int [] arr){
int count = 0;
for(int i = 0; i < arr.length-1; i++){
if(arr[i] > arr[i+1]){
System.out.println("無序");
count = count + 1;
break;
}
}
if(count == 0) {
System.out.println("有序");
}
}
}
7. 冒泡排序:
package com.company;
import java.util.*;
public class Main {
public static void main(String[] args) {
int [] array = new int[]{1,10,3,4,5,6,7,8,9};
abc(array);
}
//冒泡排序
public static void abc(int[] arr){
for (int i =0; i < arr.length;i++){
boolean aaa = false;
for(int j = i+1; j < arr.length; j++){
if(arr[i] > arr[j]){
int c = arr[i];
arr[i] = arr[j];
arr[j] = c;
aaa=true;
}
if(aaa == false){
break;
}
}
System.out.println(arr[i]);
}
}
}
冒泡排序性能較低,Java中有更高級的演算法“ Arrays.sort( ) ”
(面試可能問到 優化冒泡程式)
8. 陣列逆序:
package com.company;
import java.util.*;
public class Main {
public static void main(String[] args) {
int [] array = new int[]{1,2,3,4,5,6,7,8,9};
reverse (array);
}
//陣列逆序
public static void reverse(int[] arr){
int i = 0;
int j = arr.length-1;
while(i < arr.length-1){
int a = arr[i];
arr[i] = arr[j];
arr[j] = a;
i++;
j--;
if(i == (arr.length-1)/2){//到中間兩邊互換下標完成
break;
}
}for(int k = 0; k < arr.length; k++){
System.out.println(arr[k]);
}
}
}
9. 把陣列中偶數放前奇數放后:
package com.company;
import java.util.*;
public class Main {
public static void main(String[] args) {
int [] array = new int[]{1,2,3,4,5,6,7,8,9};
swap (array);
}
//將陣列中偶數放在前奇數放在后
public static void swap(int[] arr){
int i = 0;
int j = arr.length-1;
while(i<j){
while(arr[i] % 2 == 0){
i++;
}//找到靠左邊的奇數
while(i<j && arr[j] % 2 != 0){
j--;
}//找到靠右邊的偶數(要加 i<j不然會多交換)
int c = arr[i];
arr[i] = arr[j];
arr[j] =c;
}
System.out.println(Arrays.toString(arr));
}
}
加油!!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/275778.html
標籤:java
