java语言设计

Java数组:

1.数组的声明与创建:

  • 首先必须声明数组变量,才能在程序中使用数组。下面是声明数组变量的语法:

  • ``··dataType[] arrayRefVar;//首选的方法

    dataType arrayRefVar[];//效果相同,但不是首选方法
    获取数组长度:

  • arrays.length

  • 数组的默认初始化:

    数组是引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化。

  • Java内存分析:
  • 二维数组:

    1:多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组。
    二维数组:
       int a[][] = new int[2][5];
    2:
    解析:以上二维数组a可以看成一个两行五列的数组。
    思考:多维数组的使用?
    num[1] [0];
  • 编写程序实现如下功能:已知学生类有域变量(学号、班号、姓名、性别、年龄)和方法(获得学号、获得班号、获得性别、获得年龄、修改年龄,显示基本信息),定义一组学生对象,并初始化他们的基本信息,然后依次输出。
    //学生类
    class Student
    {
        private String sno; 
        private String classno; 
        private String name; 
        private char sex; 
        private int age;
        
        //有参数的构造函数
        public Student(String sno,String classno,String name,char sex, int age)
        {
            this.sno = sno;
            this.classno = classno;
            this.name = name;
            this.sex = sex;
            this.age = age;
        }
        //无参数的构造函数
        public Student()
        {}
        //获取学生的学号
        String getSno()
        {
            return sno;
        } 
        //获取学生的班号
        String getClassno()
        {
            return classno;
        } 
        //获取学生的性别
          char getSex()
        {
            return sex;
        }
        //获取学生年龄
        int getAge()
        {
            return age;
        }
        //更新学生的年龄信息
        void updateAge(int age)
        {
            this.age = age;
        }
        //输出学生信息
        void print()
        {
            System.out.println("学生信息:" + '\n');
            System.out.println("       " + "学号" + "                   " + "班号" + "          " + "姓名" + "    " + "性别" + "   " + "年龄" + '\n');
            System.out.println(this.sno + "   " + this.classno + "     " + this.name + "    " + this.sex + "   " + this.age + '\n');
        } 
    }
    Student_Information.java
    public class Student_Information {
    
        public static void main(String[] args) 
        {
            char i;
            Student student[] = new Student[6];//定义一个数组
            //对数组里面的元素进行初始化
            student[0] = new Student("201704166051","电信1702班","Boly",'Y',18);
            student[1] = new Student("201704166052","电信1702班","Lily",'X',18);
            student[2] = new Student("201704166053","电信1702班","Jasy",'X',19);
            student[3] = new Student("201704166054","电信1702班","Tom",'Y',19);
            student[4] = new Student("201704166055","电信1702班","Jack",'Y',18);
            student[5] = new Student("201704166056","电信1702班","Bob",'Y',19);
            //显示各学生信息
            for(i = 0;i < 6;i++)
            {
                student[i].print();
            }
        }
    }


     1.0 单链表的说明
            单链表是一种数据结构。数据结构是指数据的组织、管理和存储的方式,而单链表是一种常见的线性数据结构,用于存储一系列具有相同类型的元素。它由一系列节点组成,每个节点包含一个数据元素和一个指向下一个节点的指针。单链表可以通过指针的方式实现元素的插入、删除和查找等操作。

            2.0 单链表的创建
           把单链表封装成一个类,面向对象编程的思路。类中需要的成员变量为头节点、节点,又可以把节点封装成一个类,为更好把节点类封装起来,将其设置为静态内部类。

    代码如下:

  • public class SingleLists{
        //头节点
        private Node hand = null;
     
     
        //节点
        private static class Node {
            //数据
            private int data;
            //指向下一个节点
            private Node next;
     
            public Node() {
            }
     
    }

    单链表 - 头插节点
           顾名思义,就是在头节点处插入新的节点,使其成为新的头节点。需要考虑两种情况,第一种情况,头节点为 null 时,直接就可以将创建出来的对象被 hand 引用了。第二种情况,头节点不为 null 时,需要将创建的对象的 next 引用指向 hand 的引用,而当前创建的对象就要被 hand 引用。

    代码如下:
     

        //实现头插节点
        public void addFirst(int data) {
    /*        if (hand == null){
                hand = new Node(data,null);
            }else {
                hand = new Node(data,hand);
            }*/
            
            //对以上代码进行简化得以下代码:
            hand = new Node(data,hand);
            
        }
    使用简单的 for/while 循环

            一般 hand 是不会去移动或者去改变其引用,则需要临时的变量 p 来指向 hand 的对象。循环的条件为 p != null,每一次循环结束都需要 p 去移动到下一个节点处,p = p.next 。

    代码如下:

  •     //遍历方式:打印方式
        public void myPrint(){
            if (hand == null){
                throw new RuntimeException("hand is null!!!!");
            }
            //第一种:
    /*        Node p = hand;
            //用while来实现
            while (p != null){
                System.out.println(p.data);
                p = p.next;
            }*/
            //第二种:
            //用for来实现
            for (Node p = hand;p !=null;p = p.next){
                System.out.println(p.data);
            }
        }
    1. 单链表 - 头删节点

              顾名思义直接删除头节点,思路为: hand 这个引用需要指向 hand.next ,这就是删除了第一个节点,没用引用的对象,在 Java 中回自动回收的,不会占内存,这也就是删除了

    2.     //头删节点
          public void removeFirst() {
              if (hand == null){
                  throw new RuntimeException("There are no nodes anymore");
              }
              hand = hand.next;
          }    //头删节点
          public void removeFirst() {
              if (hand == null){
                  throw new RuntimeException("There are no nodes anymore");
              }
              hand = hand.next;
          }

    3. 本文文章链接:java语言设计-CSDN博客

  • 30
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值