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); } }
-
单链表 - 头删节点
顾名思义直接删除头节点,思路为: hand 这个引用需要指向 hand.next ,这就是删除了第一个节点,没用引用的对象,在 Java 中回自动回收的,不会占内存,这也就是删除了
-
//头删节点
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;
} -
本文文章链接:java语言设计-CSDN博客
-