Amy's Blog

这是副标题

  • 首页
  • 归档
  • 分类
  • 标签

Collection和Collections的区别及Collections常用方法

发表于 2017-12-04 | 分类于 Java | 阅读次数

本文包含以下打钩知识点:

  • Collections类是什么?Collection 和 Collections的区别?
  • 为什么 Collection 不从 Cloneable 和 Serializable 接口继承
  • 说出几点 Java 中使用 Collections 的最佳实践?

Collection和Collections的区别

Collections

java.util.Collections,是不属于java的集合框架的,它是集合类的一个工具类/帮助类。此类不能被实例化, 服务于java的Collection框架。

它包含有关集合操作的静态多态方法,实现对各种集合的搜索、排序、线程安全等操作。如:

image

阅读全文 »

Java中的参数传递

发表于 2017-11-30 | 分类于 Java | 阅读次数

为了便于理解,会将参数传递分为按值传递和按引用传递。

其实核心理解:实参和形参是两个变量,名称相同而已。如果都指向同一对象,而方法又改变了对象内容,则原值才发生变化。

形参、实参

  • 形参: 定义方法使用的参数。

形参只会在方法被调用的时候,虚拟机才会分配内存单元,方法调用结束后便会释放所分配的内存单元。因此,形参只在方法内部有效。

阅读全文 »

二叉树遍历笔记 (先序、中序、后序)

发表于 2017-11-22 | 分类于 算法和数据结构 | 阅读次数

前言

本篇博文包含以下知识点:

  • 涉及二叉树的先序、中序、后序的递归和非递归遍历。

二叉树具有以下特点:

  • 每个节点最多有两颗子树,节点的度最大为2。
  • 左子树和右子树是是有顺序的,次序不能颠倒。
  • 即使某节点只有一个子树,也要区分左右子树。

无论哪种遍历方法,对节点的考察顺序都是一样的,只是有时候考察了节点,先暂存,在之后的过程输出。

阅读全文 »

字节流、字符流及其转换、比较与使用场景

发表于 2017-11-15 | 分类于 Java | 阅读次数

本文包含以下知识点:

  • 字节流OutputStream和InputStream类及其子类
  • 字符流Writer和Reader类及其子类
  • 转换流OutputStreamWriter和InputStreamReader
  • 代码示例
  • 字节流、字符流的比较
  • 各类的使用场景

流

在程序中所有的数据都是以流的方式进行传输和保存的。程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成。

在java.io包中操作文件内容的主要有两大类:字节流、字符流。两类都分为输入和输出操作。输入流基本方法是读,输出流基本方法是写。

大致操作流程:(以File为例)

  1. 使用File类打开一个文件;
  2. 通过字节流或字符流的子类,指定输出的位置;
  3. 进行读/写操作;
  4. 关闭输入/输出。
阅读全文 »

字节流、字符流及其转换、比较与使用场景

发表于 2017-11-15 | 分类于 Java | 阅读次数

本文包含以下知识点:

  • 字节流OutputStream和InputStream类及其子类
  • 字符流Writer和Reader类及其子类
  • 转换流OutputStreamWriter和InputStreamReader
  • 代码示例
  • 字节流、字符流的比较
  • 各类的使用场景

流

在程序中所有的数据都是以流的方式进行传输和保存的。程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成。

在java.io包中操作文件内容的主要有两大类:字节流、字符流。两类都分为输入和输出操作。输入流基本方法是读,输出流基本方法是写。

输入流输出流是相对于内存而言的,程序运行在内存中。

从外存读取数据到内存以及将数据从内存写到外存中:

输入:读取外部数据(磁盘、光盘等存储设备的数据)到程序(内存)中,输入流。

输出:将数据从程序 (内存) 中写到磁盘、光盘等存储设备中,输出流。

大致操作流程:(以File为例)

  1. 使用File类打开一个文件;
  2. 通过字节流或字符流的子类,指定输出的位置;
  3. 进行读/写操作;
  4. 关闭输入/输出。
阅读全文 »

Java中集合类框架及基本接口

发表于 2017-11-07 | 分类于 Java | 阅读次数

本篇博文包含以下内容:

  • 介绍Java中的Collection FrameWork。集合类框架的基本接口有哪些
  • List, Set, Map三个接口,存取元素时各有什么特点
  • List, Set, Map 是否继承自 Collection 接口

集合即存储对象的容器。

在程序中有可能无法预知需要多少对象。数组虽然也可以存储对象,但长度是固定的,不好定义。但集合类容器的长度可变。每一个容器对数据的存储方式(数据的存储结构)都有不同,所以有不同的集合类。


集合类框架(Java Collection Framework)

在java中有一套设计优良的接口和类组成了Java集合框架,通过集合可以方便地操作成批的数据或对象元素。

所有的Java集合都在java.util包中。

  • Collection集合类

image

阅读全文 »

ArrayList扩容分析

发表于 2017-10-30 | 分类于 Java | 阅读次数

ArrayList可以实现容量的自适应的增加(As elements are added to an ArrayList,
its capacity grows automatically)。通过JDK1.8中ArrayList的源码来分析:

ArrayList的相关定义

ArrayList底层采用Object类型的数组实现。

阅读全文 »

Java中如何保留小数点后两位

发表于 2017-10-22 | 分类于 Java | 阅读次数

java中四舍五入后并保留两位小数的方法(以double为例)

String.format打印

数字格式化说明的格式:

1
%[argument number][flags][width][.precision]type

argument number:若参数大于1,指定哪一个;
flags:符号,如(+、-、;、.);width:最小字符数;.precision:精确度;type:类型,如f:浮点。

1
2
3
4
5
6
7
8
9
10
11
/**
*方案一:String.format()
*/
public class Test {
public static void main(String[] args) {
double d = 3.1415926;
//直接输出结果
System.out.println(String.format("%.2f", d));
//输出结果:3.14
}
}
阅读全文 »

分析int和Integer的区别

发表于 2017-10-15 | 分类于 Java | 阅读次数

本篇博文包含以下内容:

  • int 和 Integer 哪个会占用更多的内存? int 和 Integer 有什么区别?相等吗?

int和Integer所占内存比较:

Integer对象会占用更多的内存。Integer是一个对象,需要存储对象的元数据。但是int是一个原始类型的数据,所以占用的空间更少。

int和Integer的更多区别:

除了之前写的通用的基本数据类型与包装类的区别之外,还有以下方面的比较:

(注:对于引用类型变量,==操作符比较的是两个引用是否指向同一个对象;对于基本类型变量,==操作符比较的是两个变量的值是否相等。)

1.两个通过new出来的Integer变量比较,结果为false。

1
2
3
4
5
6
7
8
9
10
11
/**
* 比较两个new出来的Integer
*/
public class Test {
public static void main(String[] args) {
Integer i = new Integer(200);
Integer j = new Integer(200);
System.out.print(i == j);
//输出:false
}
}

Integer变量实际上是对一个Integer对象的引用。当new一个Integer时,实际上是生成一个指针指向此对象,两次new Integer生成的是两个对象,其内存地址不同,所以两个new出来的Integer变量不等。

阅读全文 »

浅析Java基础类型与封装类型的区别

发表于 2017-10-08 | 分类于 Java | 阅读次数

本篇博文主要讲解以下内容:

  • 基础类型(Primitives)与封装类型(Wrappers)的区别在哪里

一、传递方式不同

封装类是引用类型。

基本类型(原始数据类型)在传递参数时都是按值传递,而封装类型是按引用传递的(其实“引用也是按值传递的”,传递的是对象的地址)。由于包装类型都是不可变量,因此没有提供改变它值的方法,增加了对“按引用传递”的理解难度。

int是基本类型,直接存放数值;Integer是类,产生对象时用一个引用指向这个对象。

二、封装类可以有方法和属性

封装类可以有方法和属性,利用这些方法和属性来处理数据,如Integer.parseInt(Strings)。基本数据类型都是final修饰的,不能继承扩展新的类、新的方法。

三、默认值不同

基本类型跟封装类型的默认值是不一样的。如int i,i的预设为0;Integer j,j的预设为null,因为封装类产生的是对象,对象默认值为null。

阅读全文 »
1…345
Amy

Amy

42 日志
9 分类
25 标签
GitHub
Links
  • 阿里中间件团队博客
  • Jark's Blog
  • 廖雪峰个人网站
© 2020 Amy
由 Hexo 强力驱动
主题 - NexT.Mist
本站总访问量 次    本站访客数人次

Hosted by Coding Pages