JAVA之旅(十八)——基本数据类型的对象包装类,集合框架,数据结构,Collection,ArrayList,迭代器Iterator,List的使用
JAVA之旅(十八)——基本数据类型的对象包装类,集合框架,数据结构,Collection,ArrayList,迭代器Iterator,List的使用
JAVA把完事万物都定义为对象,而我们想使用数据类型也是可以引用的
一.基本数据类型的对象包装类
左为基本数据类型,又为引用数据类型
- byte Byte
- int Integer
- long Long
- boolean Booleab
- float Float
- double Double
- char Character
我们拿Integer来举例子
//整数类型的最大值/最小值
sop("最大值:"+Integer.MAX_VALUE);
sop("最小值:"+Integer.MIN_VALUE);
输出
基本数据类型对象包装类的最常见作用
就是用于基本数据类型和字符串数据类型之间的转换
基本数据类型转成字符串
基本数据类型+“”
Integer.toString(34)字符串转成基本数据类型
// 将一个字符串转为整数 int num = Integer.parseInt("123"); sop("值:" + (num + 5));输出的结果
像其他的使用方法都是类似的,但是有特殊的,那就是boolean,一个是true一个是“true”,再比如你传的是abc转int类型,这就奇葩了,他会报数据格式异常的
当然,还有各种进制的转换,说白了就是几个方法,大家可以研究一下,这里就不多做赘述了
我们实际来一个小例子来突出他们的特性
package com.lgl.hellojava;
//公共的 类 类名
public class HelloJJAVA {
public static void main(String[] args) {
/**
* 基本数据类型的对象包装类
*/
Integer x = new Integer("123");
Integer y = new Integer(123);
// 问
sop("x == y :" + (x == y));
sop("x.equals(y) : " + (x.equals(y)));
}
/**
* 输出
*/
public static void sop(Object obj) {
System.out.println(obj);
}
}
这样得到的结果呢?
这里就好理解了
JDK1.5版本以后出现的新特性
- 自动装箱
Integer x = new Integer(4);
Integer x = 4; //自动装箱
x = x + 2; //进行了自动拆箱,变成了int类型,和2进行加法运算,再将和进行装箱,赋给x
再来一个有意思的例子
Integer x = 128;
Integer y = 128;
Integer i = 127;
Integer j = 127;
sop("x == y :" + (x == y));
sop("i == j : " + (i == j));
这里输出多少?
为什么会这样?
- 因为i和j是同一个Integer对象,在byte范围内,对于新特性,如果该数值已经存在,则不会再开辟新的空间
二.集合框架
讲完杂七杂八的数据类型,我们接着讲数据类型存储,首先我们聊聊集合
为什么出现集合类
- 面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行了存储,集合就是存储对象最常用的一种方式
数组和集合类同时容器有何不同?
- 数组虽然也可以存储对象,但是长度是固定的,集合长度是可变的,数组中可以存储数据类型,集合只能存储对象
集合的特点
- 集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象
集合框架是不断的向上抽取的
为什么会出现这么多的容器呢?
- 因为每一个容器对数据的存储方式都有不同,这个存储方式我们称之为:数据结构
我们会依次的学习这个数据结构
三.Collection
根接口,我们来学习他们的共性方法
package com.lgl.hellojava;
import java.util.ArrayList;
//公共的 类 类名
public class HelloJJAVA {
public static void main(String[] args) {
/**
* Collection
*/
// 创建一个集合容器,使用Collection接口的子类Arraylist
ArrayList list = new ArrayList();
// 添加元素
list.add("Hello 0");
list.add("Hello 1");
list.add("Hello 2");
list.add("Hello 3");
list.add("Hello 4");
// 获取集合的长度
sop("长度:" + list.size());
}
/**
* 输出
*/
public static void sop(Object obj) {
System.out.println(obj);
}
}
写法是这样写的,这里有疑问,为什么add参数是Object?
- 1.add方法的参数类型是Object,已便于接收任意类型的对象
- 2.集合中存储的都是对象的引用和地址,
所以我们还可以
// 获取集合的长度
sop("长度:" + list.size());
//打印集合
sop(list);
//删除元素
list.remove("Hello 1");
sop(list);
//判断
sop("Hello 3是否存在:"+list.contains("Hello 3"));
//清空
list.clear();
//是否为空
sop(list.isEmpty());
sop(list);
得出结论
我们再来讲一个交集
public static void method_2() {
ArrayList list = new ArrayList();
// 添加元素
list.add("Hello 0");
list.add("Hello 1");
list.add("Hello 2");
list.add("Hello 3");
list.add("Hello 4");
ArrayList list1 = new ArrayList();
// 添加元素
list1.add("java 0");
list1.add("Hello 1");
list1.add("java 2");
list1.add("Hello 3");
list1.add("java 4");
// 取交集 list只会保留和list1中相同的元素
list.retainAll(list1);
sop(list);
}
list只会保留和list1中相同的元素
四.迭代器Iterator
我们再来说下迭代器,也就是怎么取出数据操作
/**
* 迭代器
*/
public static void method_get() {
ArrayList list = new ArrayList();
// 添加元素
list.add("Hello 0");
list.add("Hello 1");
list.add("Hello 2");
list.add("Hello 3");
list.add("Hello 4");
//获取迭代器,用于取出集合中的元素
Iterator iterator = list.iterator();
while (iterator.hasNext()) {
sop(iterator.next());
}
}
这样就能全部打印出来了
那我们理解什么是迭代器?
- 其实就是集合取出元素的方式
就把取出方式定义在集合的内部,这样取出的方式就直接访问集合内容的集合,那么取出方式就会定义成内部类,而每个容器的数据结构都不同,所以取出的动作细节也不同,但是都有共性内容,判断,取出,那么可以将写共性抽取,那么这些内部类都符合一个规则,该规则就是iterator,如何获取集合的取出对象呢?通过一个对外提供的方法interator();
大体的方向我们掌握了,这样我们就应该细分下去讲了,我们先说下List
六.List
Collection下有两个子接口,list和set,他们两个的区别就是
- list:元素是有序的,元素可以重复,因为该集合体系有索引
- set:元素是无序,元素不可以重复,不能索引
我们只要说的就是list,共性的就不讲了,我们、他独有的
List特有方法:凡是可以操纵交表的方法都是该体系的特有方法,也就是
- 增
- add(index,element)
- addAll(index Collection);
- 删
- remove(index)
- 改
- set(index)
- 查
- get(index)
- subList(from,to)
- listIterator()
我们挨个说一遍就好了,这个本来就是老套路了,我们就算总结一下前面的知识
package com.lgl.hellojava;
import java.util.ArrayList;
import java.util.Iterator;
//公共的 类 类名
public class HelloJJAVA {
public static void main(String[] args) {
/**
* List
*/
ArrayList al = new ArrayList();
// 添加元素
al.add("java 0");
al.add("java 1");
al.add("java 2");
sop("原集合 : " + al);
// 在指定位置添加元素
al.add(1, "java 3");
sop("添加后 : " + al);
// 删除指定位置的元素
al.remove(2);
sop("删除后: " + al);
// 修改元素
al.set(2, "java 4");
sop("修改后: " + al);
// 通过角标获取元素
sop("查找 : " + al.get(1));
sop("所有元素");
// 获取所有元素
for (int i = 0; i < al.size(); i++) {
sop("元素" + i + " = " + al.get(i));
}
sop("迭代器");
// 通过迭代器
Iterator it = al.iterator();
while (it.hasNext()) {
sop("next:" + it.next());
}
}
/**
* 输出
*/
public static void sop(Object obj) {
System.out.println(obj);
}
}
这里就涵盖了很多的list的知识点,不断向上抽取的一个过程了,我们输出的结果
好的,那这样的话,我们本节课也就到这里,OK了,感谢你看了这么久,累了就喝杯水吧!
我的群:555974449,欢迎你的到来!
JAVA之旅(十八)——基本数据类型的对象包装类,集合框架,数据结构,Collection,ArrayList,迭代器Iterator,List的使用的更多相关文章
- Java进阶(三十八)快速排序
Java进阶(三十八)快速排序 前言 有没有既不浪费空间又可以快一点的排序算法呢?那就是"快速排序"啦!光听这个名字是不是就觉得很高端呢. 假设我们现在对"6 1 2 7 ...
- JAVA之旅(八)——多态的体现,前提,好处,应用,转型,instanceof,多态中成员变量的特点,多态的案例
JAVA之旅(八)--多态的体现,前提,好处,应用,转型,instanceof,多态中成员变量的特点,多态的案例 学习是不能停止的 一.多态 我们今天又要学习一个新的概念了,就是多态,它是面向对象的第 ...
- Java IO(十八) BufferedReader 和 BufferedWriter
Java IO(十八) BufferedReader 和 BufferedWriter 一.介绍 BufferedReader 和 BufferedWriter 是字符缓冲流,分别继承自 Reader ...
- (十六)集合框架(Collection和Map)和比较器(Comparable和comparator)
一.集合框架 1.1 为什么要使用集合框架? 当我们需要保持一组一样(类型相同)的元素的时候,我们应该使用一个容器来保存,数组就是这样一个容器. 那么,数组的缺点是什么呢? 数组一旦定义,长度将不能再 ...
- Java学习--java中的集合框架、Collection接口、list接口
与数组相比:1.数组的长度固定,而集合的长度可变2.数组只能通过下表访问元素,类型固定,而有的集合可以通过任意类型查找所映射的具体对象 java集合框架:collection(list序列,queue ...
- 王颖奇 201771010129《面向对象程序设计Java》第十八周实验总结
实验十八 总复习 实验时间 2018-12-30 1.实验目的与要求 (1) 综合掌握java基本程序结构: (2) 综合掌握java面向对象程序设计特点: (3) 综合掌握java GUI 程序设 ...
- Java笔记(二十八)……IO流下 IO包中其他常用类以及编码表问题
PrintWriter打印流 Writer的子类,既可以接收字符流,也可以接收字节流,还可以接收文件名或者文件对象,非常方便 同时,还可以设置自动刷新以及保持原有格式写入各种文本类型的print方法 ...
- Java基础学习(四)-- 接口、集合框架、Collection、泛型详解
接口 一.接口的基本概念 关键字为:Interface,在JAVA编程语言中是一个抽象类型,是抽象方法的集合.也是使用.java文件编写. 二.接口声明 命名规范:与类名的命名规范相同,通常情况下 ...
- Java集合----概述、Collection接口、Iterator接口
Java 集合概述 Java 集合就像一种容器,可以把多个对象的引用放入容器中. Java 集合类可以用于存储数量不等的多个对象,还可用于保存具有映射关系的关联数组 Java 集合可分为 Set.Li ...
随机推荐
- manjaro备忘录
updated 2018/4/3 manjaro 使用Linux发行版时需要注意几个方面的问题: 包管理器 包管理器无疑时各家发行版的最大特色之一.软件同时也是一个平台是否能够产生足够的吸引力的来源之 ...
- docker管理工具
Portainer是Docker的图形化管理工具,提供状态显示面板.应用模板快速部署.容器镜像网络数据卷的基本操作(包括上传下载镜像,创建容器等操作).事件日志显示.容器控制台操作.Swarm集群和服 ...
- Hibernate异常之Integer转float(自动类型转换错误)
错误代码: java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Float at org.hiber ...
- Node.js HTTPS
稳定性: 3 - 稳定 HTTPS 是基于 TLS/SSL 的 HTTP 协议.在 Node 里作为单独的模块来实现. 类: https.Server 这是 tls.Server 的子类,并且和 ht ...
- Java集合框架总结
java集合框架主要分为实现了Collection接口的List和Set.映射接口Map. |-- List 有序,元素都有索引,可重复. |-- Set 无序,不可以存储重复的元素. |-- Map ...
- 异步请求引发的Chrome死锁
浏览器支持的并发异步请求数目是有限的,当需要的资源过多时候(远远大于并发数目),就需要自己管理XHR请求. 在实现自己的XHR的Manger时候,当请求数目达到2000多的时候,经常会遇到chrome ...
- Linux块设备加密之dm-crypt分析
相关的分析工作一年前就做完了,一直懒得写下来.现在觉得还是写下来,以来怕自己忘记了,二来可以给大家分享一下自己的研究经验. 这篇文章算是<Device Mapper代码分析>的后续篇,因为 ...
- Android对话框Dialog深度剖析
对话框 对话框是提示用户作出决定或输入额外信息的小窗口. 对话框不会填充屏幕,通常用于需要用户采取行动才能继续执行的模式事件. 对话框设计 Dialog 类是对话框的基类,但您应该避免直接实例化 Di ...
- PHP 针对多用户 实现头像更换
成品图 思路 登陆页面 表单制作 验证码制作 JavaScript刷新验证码 验证页面 验证逻辑 页面跳转 header函数 Meta标签 JavaScript 上传页面 个人主页 上传核心 最终结果 ...
- ListView下拉刷新上拉加载更多实现
这篇文章将带大家了解listview下拉刷新和上拉加载更多的实现过程,先看效果(注:图片中listview中的阴影可以加上属性android:fadingEdge="none"去掉 ...