数组是我们开发中经常使用的一种技术,因此也很重要。 下面我先来引出为什么用数组。 思路:定义6个变量,加起来总体重???? 首先来简单介绍一下数组: 个人语言理解:数组就是一组可以存放多个同一类型数据的容器。同时数组也是一种数据类型,但是它是引用类型。既数组就是一组数据。 因此我们可以将其数据放到数组中进行计算。
先体验一把: 数组的简单语法和格式我就不在赘述,主要分析一下注意细节:
数组是多个相同类型数据的组合,实现对这些数据的统一管理。
数组中的元素可以是任何数据类型,包括基本数据类型,引用数据类型。但是不能混用。
数组创建后,如果没有赋值,有默认值: int 0,short 0, byte 0, long 0, float 0.0,double 0.0,char \u0000,boolean false, String null。主要注意boolean,它的默认值是false,不是true。
数组的下标是从0开始的。
数组下标必须在指定范围内使用,否则报:下标越界异常,比如 int [] arr=new int[5]; 则有效下标为 0-4。
数组属引用类型,数组型数据是对象(object),数组中的每个元素相当于该对象的成员变量。
随机生成五个数, 并将其反转打印,把数组组的元素反转。arr{1,2,3,4,5}->{5,4,3,2,1} //思路分析:找规律反转 //1.将第一个位置的数和最后的一个位置反转(最后一个位置刚好是length-1)。 //2.将第二个位置的数和倒数第二个位置数反转。 //3.交换的次数只能是数组的长度一半。(若次数是数组长度,那么当循环交换。)
int[] arr={1,2,3,4,5}; int temp=0; for(int i=0;i<arr.length/2;i++){ temp=arr[i]; arr[i]=arr[arr.length-1-i]; arr[arr.length-1-i]=temp; }//循环完毕时 则数组反转完成完整代码:
import java.util.Scanner; //数组元素反转 public class ArrayApply5 { public static void main(String[] args) { int[] arr = {1, 2, 3, 4, 5, 10}; int temp = 0; for( int i = 0 ; i < arr.length / 2; i++) { // i 次数, 同时下标 temp = arr[i]; arr[i] = arr[arr.length-1 - i]; arr[arr.length-1 - i] = temp; } System.out.println("=============="); for( int i = 0; i < arr.length; i++) { System.out.print(arr[i] + "\t"); } } }核心代码:
//先实现一次的扩容 int[] newarr=int[arr.length+1]; for(int i=0;i<newarr.length;i++){ newarr[i]=arr[i]; } //此时新数组的最后一个位置数据是0,接着将要添加的数插入。 newArr[newArr.length - 1] = addNum;//1,2,3,4,88 arr=newarr;//让arr1 指向新的扩容后的数组,原来的数组当做垃圾被回收完整代码:
import java.util.Scanner; //数组扩容 public class ArrayApply5 { public static void main(String[] args) { int[] arr1 = {1,2,3}; char choice = ' '; //选择 Scanner myScanner = new Scanner(System.in); int addNum = 88; //增加一个88 到 arr1 中 int[] newArr = new int[arr1.length + 1]; // {0,0,0,0} for( int i = 0; i < arr1.length; i++) { // {1,2,3,0} newArr[i] = arr1[i]; } newArr[newArr.length - 1] = addNum; // {1,2,3,88} arr1 = newArr; //让arr1 指向新的扩容后的数组,原来的数组当做垃圾被回收 System.out.println("==========="); for( int i = 0; i < arr1.length; i++) { // {1,2,3,0} System.out.print(arr1[i] + "\t"); } } }这只能扩容一次,如何根据输入的来扩容,那么肯定是要循环,这里选择do…while…先给框架建起来。
public class ArrayApply5 { public static void main(String[] args) { int[] arr1 = {1,2,3}; //将代码改进成可以循环添加的效果 int addNum = 88; char choice = ' '; //选择 Scanner myScanner = new Scanner(System.in); do { System.out.println("是否继续添加 y/n"); choice = myScanner.next().charAt(0); if( choice == 'y' ) { System.out.println("请输入一个整数"); addNum = myScanner.nextInt(); }while ( choice != 'n' ); } }接下来只要把一次添加的放进循环就可以用 完整代码:
import java.util.Scanner; //数组扩容 public class ArrayApply5 { public static void main(String[] args) { int[] arr1 = {1,2,3}; //将代码改进成可以循环添加的效果 int addNum = 88; char choice = ' '; //选择 Scanner myScanner = new Scanner(System.in); do { System.out.println("是否继续添加 y/n"); choice = myScanner.next().charAt(0); if( choice == 'y' ) { System.out.println("请输入一个整数"); addNum = myScanner.nextInt(); //代码拿来 int[] newArr = new int[arr1.length + 1]; // {0,0,0,0} for( int i = 0; i < arr1.length; i++) { // {1,2,3,0} newArr[i] = arr1[i]; } newArr[newArr.length - 1] = addNum; // {1,2,3,88} arr1 = newArr; //让arr1 指向新的扩容后的数组,原来的数组当做垃圾被回收 System.out.println("==========="); for( int i = 0; i < arr1.length; i++) { // {1,2,3,0} System.out.print(arr1[i] + "\t"); } } }while ( choice != 'n' ); } }好了,搞定。剩下的两个请关注明天的…