Java數(shù)組反轉(zhuǎn)方式
Java數(shù)組反轉(zhuǎn)
//方法1
public class ArrayReverse{
public static void main(String[] args) {
//定義數(shù)組
int[] arr = {11, 22, 33, 44, 55, 66};
//1、把 arr[0] 和 arr[5] 進(jìn)行交換 {66, 22, 33, 44, 55, 11}
//2、把 arr[1] 和 arr[4] 進(jìn)行交換 {66, 55, 33, 44, 22, 11}
//3、把 arr[2] 和 arr[3] 進(jìn)行交換 {66, 55, 44, 33, 22, 11}
//4、一共要交換 3 次 = arr.length / 2
//5、每次交換時(shí),對(duì)應(yīng)的下標(biāo)是 arr[i] 和 arr[arr.length - 1 - i]
//代碼
int temp = 0;
int len = arr.length;
for(int i = 0; i < len/2 ;i++){
temp = arr[len - 1 - i];
arr[len - 1 - i] = arr[i];
arr[i] = temp;
}
}
}
//方法2
public class ArrayReverse{
public static void main(String[] args) {
//定義數(shù)組
int[] arr1 = {11, 22, 33, 44, 55, 66};
//使用逆序賦值方式
//1、先創(chuàng)建一個(gè)新的數(shù)組 arr2,大小 arr.length
//2、逆序遍歷 arr,將每個(gè)元素拷貝到 arr2 的元素中(順序拷貝)
//3、建議增加一個(gè)循環(huán)變量 j -> 0 -> 5
int[] arr2 = new int[arr1.length];
for(int i = arr1.length -1, j = 0; i>=0; i--, j++){
arr2[j] = arr1[i];
}
//4、當(dāng) for 循環(huán)結(jié)束后, arr2 就是一個(gè)逆序數(shù)組
//5、讓 arr 指向 arr2 的數(shù)據(jù)空間,此時(shí) arr 原來(lái)的數(shù)據(jù)空間就沒(méi)用變量引用會(huì)被當(dāng)做垃圾, 銷(xiāo)毀
arr1 = arr2;
}
}
Java數(shù)組反轉(zhuǎn)Reverse
三種反轉(zhuǎn)數(shù)組的方式
public class ReverseArray {
public static void main(String[] args) {
int[] arr = {11,22,33,55,66,88};
printArray(arr);
reverse0(arr);
reverse1(arr);
reverse2(arr);
}
public static void reverse0(int[] arr) {
for(int i=0; i<arr.length/2; i++) {
int tem = arr[i];
arr[i] = arr[arr.length-1-i];
arr[arr.length-1-i] = tem;
}
printArray(arr);
}
public static void reverse1(int[] arr) {
for(int start=0,end=arr.length-1;start<end;start++,end--) {
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
}
printArray(arr);
}
public static void reverse2(int[] arr) {
int[] tem = new int[arr.length];
for(int i=0; i<arr.length; i++) {
tem[i] = arr[arr.length-1-i];
}
printArray(tem);
}
public static void printArray(int[] arr) {
for(int i=0; i<arr.length; i++) {
if(arr.length==1) {
System.out.println("["+arr[0]+"]");
}
else if(i==0) {
System.out.print("["+arr[0]+",");
}
else if(i==arr.length-1) {
System.out.println(arr[i]+"]");
}
else {
System.out.print(arr[i]+",");
}
}
}
}運(yùn)行結(jié)果:
[11,22,33,55,66,88]
[88,66,55,33,22,11]
[11,22,33,55,66,88]
[88,66,55,33,22,11]
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
使用Java7的Files工具類和Path接口來(lái)訪問(wèn)文件的方法
下面小編就為大家分享一篇使用Java7的Files工具類和Path接口來(lái)訪問(wèn)文件的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2017-11-11
Spring Security使用Lambda DSL配置流程詳解
Spring Security 5.2 對(duì) Lambda DSL 語(yǔ)法的增強(qiáng),允許使用lambda配置HttpSecurity、ServerHttpSecurity,重要提醒,之前的配置方法仍然有效。lambda的添加旨在提供更大的靈活性,但是用法是可選的。讓我們看一下HttpSecurity的lambda配置與以前的配置樣式相比2023-02-02
Java多線程并發(fā)基礎(chǔ)實(shí)戰(zhàn)舉例
進(jìn)程與線程的區(qū)別,解釋并行與并發(fā)的概念,分析多線程導(dǎo)致的線程安全問(wèn)題(可見(jiàn)性、原子性、有序性),并探討Java通過(guò)volatile、synchronized及Happens-Before規(guī)則解決這些問(wèn)題的機(jī)制,最后分類線程安全程度及實(shí)現(xiàn)方案,感興趣的朋友一起看看吧2025-09-09
java實(shí)現(xiàn)SVG圖創(chuàng)建全過(guò)程
本文介紹了如何在Java中操作和生成SVG矢量圖,包括SVG的基本概念、圖形和面板類的設(shè)計(jì)、SVG DOM的創(chuàng)建與元素添加,以及如何將SVG保存為文件,最后指出實(shí)際應(yīng)用中還有更多復(fù)雜操作可實(shí)現(xiàn)2025-10-10
Spring Cloud Gateway 使用JWT工具類做用戶登錄校驗(yàn)功能
這篇文章主要介紹了Spring Cloud Gateway 使用JWT工具類做用戶登錄校驗(yàn)的示例代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01
java實(shí)現(xiàn)簡(jiǎn)易的五子棋游戲
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡(jiǎn)易的五子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06
SpringBoot實(shí)現(xiàn)動(dòng)態(tài)數(shù)據(jù)源切換的方法總結(jié)
項(xiàng)目開(kāi)發(fā)中經(jīng)常會(huì)遇到多數(shù)據(jù)源同時(shí)使用的場(chǎng)景,比如冷熱數(shù)據(jù)的查詢等情況,所以接下來(lái)本文就來(lái)介紹一下如何使用實(shí)現(xiàn)自定義注解的形式來(lái)實(shí)現(xiàn)動(dòng)態(tài)數(shù)據(jù)源切換吧2023-12-12

