Java复习基础知识杂记(持续更新中……)

最近在复习Java基础知识,一些笔记记录在这里,与大家分享~


Java 数组声明与初始化

数组声明

       对于数组的声明推荐写法是使用 数据类型 + [] + 数组名称的方式,因为这种方式可以很清楚的标明这是某一种类型的数组。例如,声明一个整数类型数组

int[] a;
数组初始化
      数组初始化分为三种方式。
        第一种:特殊初始化,不用new关键字完成,在数组声明的同时完成初始化操作,也将其称为静态初始化。主要因为采用这种初始化的方式,数组的存储空间的分配是由编译器完成的。           

下面以整数数组初始化为例,完成一个静态数组初始化:

int[] a = {1,2,3};
Integer[] b = {
    new Integer(1),
    new Integer(2),
 };
        第二种:先使用new关键字创建数组,然后再分别为数组中的元素赋值,完成初始化操作。(注:如果数组元素为基本数据类型,在完成new操作之后,数组中的元素会自动初始化为空值,可以直接使用,但是数组元素为引用类型,在完成new操作之后,没有给引用类型赋值,就直接使用数组中的元素,会产生运行时异常。)

下面还是以整数数组初始化为例2,完成数组初始化:

int[] a = new int[2]; //需要指定数组的长度
    a[0] = 1;
    a[1] = 2;
        第三种:使用new关键字创建数组,同时为数组中的元素赋值,完成初始化操作。
int[] a = new int[]{1,2,3}; //与第二种方法不同,这里new不需要指定数组的长度,数组长度由其后的初始化操作确定

 int[] b = new int[]{
     new Integer(1),
     new Integer(2),
 
 };


String类常用方法

int -> String:  String.valueOf(int i);
String -> int: Integer.parseInt(String s);
String -> 字符数组: char[] toCharArray();
字符数组ch -> String: String(ch);


Map容器:

一组成对的“键值对”对象,允许使用键来查找值。
创建一个Map

HashMap<Character, Integer> map = new HashMap<Character,Integer>;

添加元素:
map.put('I',1);
map.put('V',5)'
取元素:
map.get('I');

map.get('V');


Stack:
Stack(栈)是一种比较典型的数据结构,其元素满足后进先出(LIFO)的特点。
Java中Stack的实现继承自Vector,所以其天然的具有了一些Vector的特点,所以栈也是线程安全的。
class Stack<E> extends Vector<E> {}
事实上,除了继承自Vector的那些方法之外,Stack只提供了5个方法:
测试栈是否为空   boolean isEmpty();
查看栈顶部对象,但不从栈中移除
E peek();
移除栈顶部的对象,并作为此函数的值返回该对象
E pop();
把项压入栈顶部
E push(E item);
返回对象在栈中的位置,以1为基数
int search(Object o);
返回对象在堆栈中的位置,以 1 为基数。如果对象 o 是堆栈中的一个项,此方法返回距堆栈顶部最近的出现位置到堆栈顶部的距离;堆栈中最顶部项的距离为 1。使用 equals 方法比较 o 与堆栈中的项。
参数:o - 目标对象。
返回:对象到堆栈顶部的位置,以 1 为基数;返回值 -1 表示此对象不在堆栈中。

Stack是线程安全的,所以其性能必然受到影响,如果需要使用一个非线程安全的Stack,可以直接使用LinkedList,LinkedList本身提供的方法就包含了Stack的操作。


Queue:
Queue: 基本上,一个队列就是一个先入先出(FIFO)的数据结构
Queue接口与List、Set同一级别,都是继承了Collection接口。LinkedList实现了Deque接 口。
队列是一种特殊的线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作。
LinkedList类实现了Queue接口,因此我们可以把LinkedList当成Queue来用。(菜鸟教程
        add        增加一个元索                     如果队列已满,则抛出一个IIIegaISlabEepeplian异常
  remove   移除并返回队列头部的元素    如果队列为空,则抛出一个NoSuchElementException异常
  element  返回队列头部的元素             如果队列为空,则抛出一个NoSuchElementException异常
  offer       添加一个元素并返回true       如果队列已满,则返回false
  poll         移除并返问队列头部的元素    如果队列为空,则返回null
  peek       返回队列头部的元素             如果队列为空,则返回null
  put         添加一个元素                      如果队列满,则阻塞
  take        移除并返回队列头部的元素     如果队列为空,则阻塞

用法示例:Queue<String> queue = new LinkedList<String>();
然后直接用queue调用上述方法即可,其中add()、remove()和element()方法在失败的时候会抛出异常(不推荐)

提示:LinkedList中,addLast()方法可以实现在队尾插入元素,removeFirst()方法可以实现在队头移除元素并返回该元素,size()方法返回队列中元素的个数。


JAVA 对象引用,以及对象赋值
总结:
    如下表达式:
    A a1 = new A();
    它代表A是类,a1是引用,a1不是对象,new A()才是对象,a1引用指向new A()这个对象。
        在JAVA里,“=”不能被看成是一个赋值语句,它不是在把一个对象赋给另外一个对象,它的执行过程实质上是将右边对象的地址传给了左边的引用,使得左边的引用指向了右边的对象。JAVA表面上看起来没有指针,但它的引用其实质就是一个指针,引用里面存放的并不是对象,而是该对象的地址,使得该引用指向了对象。在JAVA里,“=”语句不应该被翻译成赋值语句,因为它所执行的确实不是一个赋值的过程,而是一个传地址的过程,被译成赋值语句会造成很多误解,译得不准确。
    再如:
    A a2;
    它代表A是类,a2是引用,a2不是对象,a2所指向的对象为空null;
    再如:
    a2 = a1;
    它代表,a2是引用,a1也是引用,a1所指向的对象的地址传给了a2(传址),使得a2和a1指向了同一对象。
    综上所述,可以简单的记为,在初始化时,“=”语句左边的是引用,右边new出来的是对象。

    在后面的左右都是引用的“=”语句时,左右的引用同时指向了右边引用所指向的对象。


Java实现单链表


Java构建二叉树

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值