JAVA 基础3

Wesley13
• 阅读 728

一.数组的概念

数组可以看成是多个数据类型的集合,是对这些数据进行统一的管理;

数组的变量是引用类型,数组本身是对象,数组中的每个元素相当于该对象的成员变量;

数组的元素可以是任何数据类型,包括基础数据类型和引用类型;

二.数组的声明方式

数据类型 + [ ] + 数组名称 = new + 数据类型 + [数组的长度];

例:int[] arr = new int[6]; 也可写成int arr[] = new int[6]; 一般用第一种写法;

也可直接定义数组中的内容:int[] arr ={1,2,3,4,5,6};注意:声明数组时必须用new关键字;

注意:1.声明数组时要使用new关键字

2.必须声明数组的长度;且一旦定义则长度不可改变;

3.引用类型的数组是指在栈上声明一个数组变量,内容则存在堆上,由该变量指向该内容;

三.数组的遍历和初始化

1.静态初始化指直接定义该数组内容,例:int[] arr = {1,2,3,4};

2.动态初始化是指用遍历定义该数组内容;

四.public static void main(String[] args)

意思为公共的 静态的 无返回值 主方法 前面3个都是用来修饰主方法的,括号里Sring是一个类,用于创建字符串对象,这里用来修饰主方法的形参,[ ]表示主方法的形参是一个字符串数组,args是一个标识符,是形参数组名。

五.关于局部变量和成员变量的区别:

1.在类中的位置不同:成员变量在类中方法外。局部变量在方法定义中或在方法定义上。

2.在内存的位置不同:成员变量在堆内存。局部变量在栈内存。

3.生命周期不同:成员变量随着对象的创建而存在,随着对象的消失而消失。 局部变量随着方法的调用而存在,随着方法的调用完毕而消失。

4.初始化值不同:成员变量有默认值初始化。局部变量没有默认值初始化,必须定义,赋值,然后才能使用。

5.局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则。

main 方法是指该程序的主入口;

用args做运算器:

public class Test3 {
    public static void main(String[] args) {
        if (args.length != 3) {
            System.out.println("请输入正确的格式!");
            return;
        }
        int a = Integer.parseInt(args[0]);
        int b = Integer.parseInt(args[2]);
        String s = args[1];
        switch (s) {
        case "+":
            System.out.println(a + b);
            break;
        case "-":
            System.out.println(a - b);
            break;
        case "/":
            System.out.println(a / b);
            break;
        case "X":
            System.out.println(a * b);
            break;
        default:
            break;
        }
    }    
}

在该文件夹下按shift+鼠标右键弹出的菜单中选择命令窗口项运行;注意*在命令框中需改为大写X才行;

例题:500逢3退1

public class Test3 {
    public static void main(String[] args) {
        boolean[] person = new boolean[500];
        for (int i = 0; i < person.length; i++) {
            person[i] = true;
        }
        int index = 0;
        int count = 0;
        int yu = person.length;
        while (yu != 1) {
            if (person[index]) {
                count++;
                if (count == 3) {
                    count = 0;
                    yu--;
                    person[index] = false;
                }
            }
            index++;
            if (index == person.length) {
                index = 0;
            }
        }
        for (int i = 0; i < person.length; i++) {
            if (person[i] == true) {
                System.out.println(i);
            }
        }
    }    
}

结果为435;

思路:先让所有人定义为布尔变量true;从这个人是true时开始数,当数到3时让该人变为false;同时从0开始重新数,剩余人数少一个,当数到500时从新开始,知道剩余人数为1时停止;再用遍历输出为true的序号。

数组排序

public class Test4 {

    public static void main(String[] args) {
        int[] arr = { 1, 3, 6, 2, 0, 11, 17, 14, 4 };
        bubbleSort(arr);    //冒泡排序
            selectSort(arr);   //选择排序
        reverseSort(arr);  //反转排序
        p(arr);
    }
    public static void reverseSort(int[] arr) {
        int t = arr.length / 2;
        for (int i = 0; i < t; i++) {
            int temp = arr[i];
            arr[i] = arr[arr.length - 1 - i];
            arr[arr.length - 1 - i] = temp;
        }
    }
    public static void selectSort(int[] arr) {                   //从大到小排序
        for (int i = 0; i < arr.length - 1; i++) {
            int index = i;                          //定义变量为第一个数的索引值
            for (int j = i + 1; j < arr.length; j++) {         //如果后面的值比这个变量大,将这个值的索引赋值给变量
                if (arr[index] < arr[j]) {
                    index = j;
                }                             //循环结束后得到所有数中最大的数
            }
            int temp = arr[index];                     //将最大的数与原数位置互换,依次排序(int temp = arr[i]也可以)
            arr[index] = arr[i];
            arr[i] = temp;
        }    
    }//选择排序的运行思路:外循环先取第一个数,内循环让该数依次与后面的每个数比较,内循环结束后得到最大的那个数的索引值,外循环让最大的数与第一个数位置互换,这样最大的数排在第一位,然后取第二数重复循环。
    public static void bubbleSort(int[] arr) {                  //从小到大排序
        for (int i = 0; i < arr.length -1; i++) {
            for (int j = 0; j < arr.length - i - 1; j++) {
                if (arr[j] > arr[j + 1]) {
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
    }//冒泡排序的运行思路:外循环是指需要比较的轮数,就是让每个数都要与其他数比一次,内循环是让该数与其他数比较后,通过位置互换将最大的数排到最后面,下轮循环则不需要让其他数与该数比较,所以次数减1.
    public static void p(int[] arr) {
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
    }
}
            

六.数组常用方法

例 :int[] arr1 = {6, 5 4, 3, 2, 1, 0}; int[] arr2 = {6, 5, 4, 3, 2, 1, 0};

1. 数组排序:Arrays.sort(arr); 从小到大排序,没有降序方法,可以使用循环倒序输出;
2. 填充数组: Arrays.fill(arr, 5);  填充数组,一般用于数组的初始化,返回值都是5.
3. 数组的复制 :Arrays.copyOf(arr, 5);如果新数组的长度不如被复制的数组长度长则有多少取多少;如果新数组的长度比较长, 不足的部分用0填充
4. 数组的范围复制 Arrays.copyOfRange(数组名,开始索引,结束索引);索引的范围, 包括开始, 不包括结束
5. 比较两个数组是不是一样 Arrays.equals(arr,arr2);返回值是布尔值

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
java ArrayList集合
ArrayList集合是程序中最常见的一种集合,它属于引用数据类型(类)。在ArrayList内部封装了一个长度可变的数组,当存入的元素超过数组长度时,ArrayList会在内存中分配一个更大的数组来存储这些元素,因此可以将ArrayList集合看作一个长度可变的数组。集合的创建格式导包:importjava.util.ArrayList;
CuterCorley CuterCorley
3年前
C语言入门系列之6.一维和二维数组
一、数组的概念有如下几组数据:学生的学习成绩银行的账单一行文字这些数据的特点是:具有相同的数据类型;使用过程中需要保留原始数据。C语言为这类数据,提供了一种构造数据类型——数组。在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来,这些按序排列的同类数据元素的集合称为数组
Wesley13 Wesley13
3年前
PTA1
11数组定义中,数组名后是用方括号括起来的常量表达式,不能用圆括号。(1分)\T\F12在C语言中能逐个地使用下标变量,也能一次引用整个数组。(1分)T\F\因为它有首地址13同一个数组中的每个元素都具有相同的数据类型,有统一的标识符即数组名,用不同的序号即下标来区分数组中的各元素。(1分)\T\F14数
Wesley13 Wesley13
3年前
Java 集合类
为什么使用集合数组长度是固定,如果要改变数组的长度需要创建新的数组将旧数组里面的元素拷贝过去,使用起来不方便。java给开发者提供了一些集合类,能够存储任意长度的对象,长度可以随着元素的增加而增加,随着元素的减少而减少,使用起来方便一些。数组和集合的区别区别1:数组既可以存储基本数据类型,又可以存储引用数据类型,基本数据类
Stella981 Stella981
3年前
ASMSupport教程4.11 生成数组操作
<p在任何语言里,数组都是基本的数据类型,我们这一节将讲述如何生成数组操作。</p<p数组操作包括以下几个:</p<ol<li创建数组</li<li获取数组长度</li<li获取数组每个元素的内容</li<li为数组元素赋值</li</ol<p我们接下来对每种操作进行详解。</p<h3<fonts
Stella981 Stella981
3年前
Android JNI开发系列(七)访问数组
JNI访问数组JNI中的数组分为基本类型数组和对象数组,它们的处理方式是不一样的,基本类型数组中的所有元素都是JNI的基本数据类型,可以直接访问。而对象数组中的所有元素是一个类的实例或其它数组的引用,和字符串操作一样,不能直接访问Java传递给JNI层的数组,必须选择合适的JNI函数来访问和设置Java层的数组对象。
Stella981 Stella981
3年前
Javascript数组系列一之栈与队列
所谓数组(英语:Array),是有序的元素序列。若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。---百度百科简单理解,数组就是数据的有序列表。Array在Javascript中属于最常用的数据类型之一了,与其它语言一样Javascript中的数
Wesley13 Wesley13
3年前
Java基础之数组队列及Java堆外内存学习笔记[图]
Java基础之数组队列及Java堆外内存学习笔记\图\1.数组1.1数组基本概念:数组是一个容器,可以存储同一数据类型的N个数据;数组是一个数据结构,是数据结构中访问速度最快的;数组是直接通过下标进行定位;数组是属于引用数据类型(数组名中存储的是内存首地址);数组本身只有有length属性(获取数组能存储的数据个数),但是
Wesley13 Wesley13
3年前
Java基础学习总结(21)——数组
一.数组的基本概念数组可以看成是多个相同类型数据组合,对这些数据的统一管理。数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量。数组的元素可以是任何数据类型,包括基本类型和引用类型。C和C中的数组都可以分配在栈上面,而JAVA中的数组是只能分配在堆
小万哥 小万哥
10个月前
C 语言数组教程:定义、访问、修改、循环遍历及多维数组解析
C数组数组用于将多个值存储在单个变量中,而不是为每个值声明单独的变量。要创建数组,请定义数据类型(例如int)并指定数组名称,后面跟着方括号。要将值插入其中,请使用逗号分隔的列表,并在花括号内使用:cintmyNumbers25,50,75,100