java之数据结构之链表及包装类、包

  链表是java中的一种常见的基础数据结构,是一种线性表,但是不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针。与线性对应的一种算法是递归算法:递归算法是一种直接或间接的调用自身算法的过程,往往使算法的描述简洁而且易于理解。

使用递归算法就是自己调用自己,而递归算法必须要有出口,递归过多也会造成内存栈溢出

1 public  static int JieGou(int num){
2     
3         if(num==1) return 1;
4         return num*JieGou(num-1);  //调用自己
5 
6    }

java中有8大基本数据类型,但是在面向对象中,本着一个设计的原则“一切皆对象”。在java的基本数据类型完全不符合这种思想。因为八种基本数据类型并不是引用数据类型,所以为了解决这个问题,引入了八种数据类型的包装类。

八种数据类型包装类分为两种:

Number:Integer、Short、Long、Double、Float、Byte

Object: Character、Boolean都是Object的直接子类

基本数据类型:-----------包装类

    int--------------Integer

    char------------Character

    float------------Float

    double---------Double

    boolean--------Boolean

    byte-----------Byte

    short----------Short

    long-----------Long

既然引入了包装类,那么包装类有什么作用呢?

在包装类中,可以将一个字符串变为指定的基本数据类型,输入数据时使用:

(1)、在Integer类中将string变为int类型数据

      public static int parseInt(String msg);

(2)、在Float类中将String变为float类型数据

  public static float parseFloat(String msg);

注意:转型操作时,字符串必须由数字组成,否则会出现错误。其他型的数据转换同理

    String  msg="200"int m=parseInt(msg);
    System.out.println(m);

结果是:200
//把一个字节的整数缓存在整数常量池中

 Integer  a=127;

 Integer  b=127;

 System.out.println(a==b);

输出结果为真

包:包是对类文件进行分类管理的,给类提供了多层命名空间,包写在程序文件的第一行,类名的全称是包名.类名,包也算是一种包装形式。  

包与访问修饰符:包对于对个java源文件的管理,就像文件目录一样

      定义一个包:package  com.vices.mihu;

 记住:该语句只能出现在代码的第一句。

访问修饰符:  

  public  : 同一个类  、同包  、不同包子类  、不同包非子类

  protected :  同一个类  、同包  、不同包子类

  默认    :同一个类  、同包

  private    :同一个类

总结:包与包之间的类进行访问,被访问的包中的类必须是public的,包中的类的方法也必须是public的。

那么如何来创建包?

在java环境下,在命令行中

javac   -d.PackageDemo.java

容易出现两个错误:

1、找不到符号

原因:类名写错:调用另个包中的类创建对象,必须明确其包名:package.Demo  d=new Package.Demo();

2、软件包不存在

原因:是当前目录下没找到,因为包存放在其他目录下,应该配置一个classpath

如何使用包?

导入包就可以使用该包下的文件

import package.Demo;   //导入了package包中的Demo

import package.DemoA;

import package.abc.*;  //导入了该包中的所有类

导包的原则:用到哪个类,就导入哪个类  :导包的目的就是为了简化类名的书写。

 

转载于:https://www.cnblogs.com/ancheng123/p/5525336.html

  链表类List的源代码如下: import Java.io.*; public class List {  /*用变量来实现表头*/  private Node Head=null;  private Node Tail=null;  private Node Pointer=null;  private int Length=0;  public void deleteAll()  /*清空整个链表*/  {   Head=null;   Tail=null;   Pointer=null;   Length=0;  }  public void reset()  /*链表复位,使第一个结点成为当前结点*/  {   Pointer=null;  }  public boolean isEmpty()  /*判断链表是否为空*/  {   return(Length==0);  }  public boolean isEnd()  /*判断当前结点是否为最后一个结点*/  {   if(Length==0)    throw new Java.lang.NullPointerException();   else if(Length==1)    return true;   else    return(cursor()==Tail);  }  public Object nextNode()  /*返回当前结点的下一个结点的值,并使其成为当前结点*/  {   if(Length==1)    throw new Java.util.NoSuchElementException();   else if(Length==0)    throw new Java.lang.NullPointerException();   else   {    Node temp=cursor();    Pointer=temp;    if(temp!=Tail)     return(temp.next.data);    else     throw new Java.util.NoSuchElementException();   }  }  public Object currentNode()  /*返回当前结点的值*/  {   Node temp=cursor();   return temp.data;  }     public void insert(Object d)  /*在当前结点前插入一个结点,并使其成为当前结点*/  {   Node e=new Node(d);   if(Length==0)   {    Tail=e;    Head=e;   }   else   {    Node temp=cursor();    e.next=temp;    if(Pointer==null)     Head=e;    else     Pointer.next=e;   }   Length++;  }  public int size()  /*返回链表的大小*/  {   return (Length);  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值