包的声明与定义

需要注意的是,包的声明只能位于Java源文件的第一行。

在实际程序开发过程中,定义的类都是含有包名的; 如果没有显式地声明package语句,创建的类则处于默认包下; 在实际开发中,这种情况是不应该出现的(示例代码主要展现的是功能部分的代码,所以在大多数示例代码中没有为示例指定包名)。

如果有时候需要用到一个包中的许多类,则可以使用“import 包名.*; ”来导入该包下所有类。

对象转型

  1. 什么是对象转型

(1)数据类型转换

基本数据类型之间,在使用时可以进行类型转换。

其中:大à小的转换可能丢失数据

(2)对象转型

引用类型(对象)之间,使用时也可以进行转换,但前提是两个对象之间存在继承关系

其中:向下转型存在风险

  1. 向上转型(upcasting)

(1)语法

父类 父类对象=子类实例

(2)限制

只能用父类的成员,不能用子类的新成员(编译错)

  1. 向下转型(downcasting)

(1)语法

子类 子类对象=(子类)父类对象

(2)向下转型不安全

编译可以通过,运行时可能抛异常:java.lang.ClassCastException

(3)向下转型成功的条件

父类对象,其声明类型是父类,但实际类型是子类

子类实例向上转型得到的对象,再向下转型才能成功

  1. instandof运算符

(1)语法

对象名 instanceof 类名

(2)运算规则

如果对象是类或其子类的实例,则返回true

迭代器Iterator<E>

java.util包中的一个接口Iterator<E>

  1. 作用

提供一组方法来遍历集合

Iterator<String> iter =list.iterator();

    while(iter.hasNext())

{

    String str=iter.next();

    System.out.println(str);

}
  1. 主要方法

boolean hasNext():集合中是否还有下一个可访问的元素

E next():返回下一个可访问的元素。必须确保还有下一个可访问的元素,否则抛异常NoSuchElementException

void remove():删除上一次next()方法返回的元素。

  1. 迭代器遍历的基本逻辑

while(调用hasNext()){

调用next()读取元素

}

  1. 迭代器的好处

隐藏底层结构的复杂性,提供统一的遍历方法

  1. 迭代器的限制

只能遍历一次

用迭代器遍历时,集合是只读的

  1. List的双向迭代

List的listIterator()方法,返回ListIterator接口,可以反向迭代

System.out.println("反向迭代");

while(iter.hasPrevious()) { ​ System.out.println(iter.previous()+" "); }

怎样才能得到Iterator<E>接口的实例

Collection接口的iterator()方法

增强的for循环与迭代器(JDK1.5)

  1. 语法格式

for(集合中元素的类型 e:集合或数组){ ​ 循环体 }

Set集合

List集合:元素可以重复,并且有序(存入的顺序)

Set集合:元素不能重复,而且无序

是Collection接口的子接口,只是对add()方法做了限制,并没有增加新的方法

  1. HashSet如何排除相等的元素?

例:需要重写Object的两个方法:hashCode()和equals(),定位,判断

  1. 基本数据类型的变量不是对象

  2. 8种基本类型对应8个包装类 (1)java.lang包 (2)Byte、Integer、Short、Long、Float、Double 数字包装类,共同的父类java.lang.Number (3)Character、Boolean

  1. 包装类解决什么问题

把基本数据类型à对象

(可以像对象一样使用基本数据类型,即引用包装类的属性和方法)

如:(1)equals()方法

(2)compareTo()方法(实现了Compareable<T>接口)

装箱与拆箱

【说明】JDK1.5自动装箱、自动拆箱

  1. 装箱

(1)包装类的方法

构造方法

public Integer(int value)

public Integer(String s) throws NumberFormatException

静态方法:valueOf

public static Integer valueOf(int i)

public static Integer valueOf(String s)

throws NumberFormatException

(2)自动装箱

Integer 对象名=int数据;

  1. 拆箱

(1)拆箱后才能做为基本数据类型参与运算

(2)xxxValue()方法:xxx是基本数据类型

public int intValue()

public long longValue()

……

(3)自动拆箱

直接用:Integer可以直接用在任何使用int的地方

强制类型转换:(int)Integer对象

  1. 自动装箱与拆箱

(1)好处

使用int与Integer几乎等价,更加方便

(2)扩展:基本数据类型与Object之间的自动装箱与拆箱

装箱:Object 对象名=int数据

拆箱:int 变量名=(int)Object对象

基本数据类型与字符串的转换

String.valueOf()

  1. 基本数据类型String

(1)基本数据类型+""

(2)String.valueOf()

TreeSet集合与对象比较

一. 引例

  1. TreeSet的特点:不重复,有序

  2. TreeSet如何为对象排序

add( )方法抛异常

如果类没有实现java.lang.Comparable接口,TreeSet调用add()方法时将抛异常

二. 对象比较:Comparable接口

  1. 对象能否比大小?

有的对象可以按某种规则来比大小,从而实现排序

  1. 对象比大小不能用关系运算符

对象比大小必须要依赖某种规则,而不能直接使用比较运算符

即,通过调用某个方法(规则)来比较对象的大小

  1. Comparable<T>接口的方法

只提供一个方法:int compareTo(T other)

返回0:两个对象相等

返回>0:当前对象大于other

返回<0:当前对象小于other

  1. Comparable<T>接口的含义

(1)接口的用处:能使类具有比较的能力,即可比较的

(2)使用:如果类实现了该接口,那么对象之间就可以比较大小

三. 一组对象如何排序

  1. 例:对象数组的排序

  2. 可比较的对象才能排序

四. TreeSet中的对象应满足什么条件?

(1)实现Comparable接口

(2)comparaTo相等与equals()相等的逻辑必须一致

五. 对象能否按多种不同的规则排序

实现java.util.Comparator<T>接口,把接口作为参数传入相关的方法

  1. 比较器接口:Comparator<T>

(1)java.util.Comparator<T>

(2)接口的方法:int compare(T t1,T t2)

返回0:两个对象相等

返回>0:t1大于t2

返回<0:t1小于t2

  1. 如何使用该接口

(1)接口的用处:提供一个专门用于比较对象大小的类,即比较器

(2)使用:分两个步骤

步骤一:定义比较器

步骤二:需要时调用比较器来完成对象大小的比较

对象转型、迭代器Iterator、Set集合、装箱与拆箱、基本数据类型与字符串的转换、TreeSet集合与对象的更多相关文章

  1. C#面向对象14 List泛型集合/装箱和拆箱/字典集合(Dictionary)

    1.List泛型集合 using System; using System.Collections.Generic; using System.Linq; using System.Text; usi ...

  2. JAVA基础之——三大特征、接口和抽象类区别、重载和重写区别、==和equals区别、JAVA自动装箱和拆箱

    1 java三大特征 1)封装:即class,把一类实体定义成类,该类有变量和方法. 2)继承:从已有的父类中派生出子类,子类实现父类的抽象方法. 3)多态:通过父类对象可以引用不同的子类,从而实现不 ...

  3. JS高级面试题思路(装箱和拆箱、栈和堆、js中sort()方法、.js中Date对象中的getMounth() 需要注意的、开发中编码和解码使用场景有哪些)

    1.装箱和拆箱: 装箱:把基本数据类型转化为对应的引用数据类型的操作: var num = 123 // num var objNum = new Num(123) // object console ...

  4. c#基础语言编程-装箱和拆箱

    引言 为什么有装箱和拆箱,两者起到什么作用?NET的所有类型都是由基类System.Object继承过来的,包括最常用的基础类型:int, byte, short,bool等等,就是说所有的事物都是对 ...

  5. java基础(七)-----深入剖析Java中的装箱和拆箱

    本文主要介绍Java中的自动拆箱与自动装箱的有关知识. 基本数据类型 基本类型,或者叫做内置类型,是Java中不同于类(Class)的特殊类型.它们是我们编程中使用最频繁的类型. Java是一种强类型 ...

  6. 转 C# 装箱和拆箱[整理]

    1.      装箱和拆箱是一个抽象的概念 2.      装箱是将值类型转换为引用类型 :拆箱是将引用类型转换为值类型       利用装箱和拆箱功能,可通过允许值类型的任何值与Object 类型的 ...

  7. C# 装箱与拆箱

    知识点  值类型.    值类型是在栈中分配内存,在声明时初始化才能使用,不能为null.    值类型超出作用范围系统自动释放内存.    主要由两类组成:结构,枚举(enum),结构分为以下几类: ...

  8. C# 程序性能提升篇-1、装箱和拆箱,枚举的ToString浅析

    前景提要: 编写程序时,也许你不经意间,就不知不觉的使程序代码,发生了装箱和拆箱,从而降低了效率,不要说就发生那么一次两次,如果说是程序中发生了循环.网络程序(不断请求处理的)等这些时候,减少装箱和拆 ...

  9. C#基础知识系列二(值类型和引用类型、可空类型、堆和栈、装箱和拆箱)

    前言 之前对几个没什么理解,只是简单的用过可空类型,也是知道怎么用,至于为什么,还真不太清楚,通过整理本文章学到了很多知识,也许对于以后的各种代码优化都有好处. 本文的重点就是:值类型直接存储其值,引 ...

随机推荐

  1. Pandas-高级部分及其实验

    有趣的事,Python永远不会缺席! 如需转发,请注明出处:小婷儿的python https://www.cnblogs.com/xxtalhr/p/11014893.html jupyter代码原文 ...

  2. 大学毕业时成都SAP和深圳腾讯的Offer,我是怎么选择的

    2006年校园招聘,我拿到了SAP成都研究院和深圳腾讯的offer,而我最后选择了前者. 当时我主要是基于以下四点考虑. SAP成都有最优秀的人才 2006年SAP成都研究院刚刚成立,对人才的挑选非常 ...

  3. Robo 3T SQL

    查询指定日期,指定显示字段,排序,注释功能 db.getCollection('spuBasisInfo') .find({"createTime":{$gte:ISODate(& ...

  4. 容器自动化(一):docker基础(上)

    一,Docker简介,功能特性与应用场景 1.1 Docker简介 Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上 ...

  5. BLOB和TEXT

    区别: BLOB存储的是二进制数据,没有排序规则或字符集. TEXT存储的是字符,有排序规则和字符集. 因为Memory引擎不支持BLOB和TEXT类型,最好的解决方案避免使用BLOB和TEXT类型. ...

  6. java中的volatile变量

    同步与线程间通信: 通信 通信是指消息在两条线程之间传递. 既然要传递消息,那接收线程 和 发送线程之间必须要有个先后关系,此时就需要用到同步.通信和同步是相辅相成的. 同步 同步是指,控制多条线程之 ...

  7. tcp文件下载

    服务器端 import socket def send_file_2_client(new_client_socket,client_addr): # 接收信息 file_name = new_cli ...

  8. Selenium常用API的使用java语言之7-控制浏览器操作

    (六)控制浏览器操作 1.控制浏览器窗口大小 有时候我们希望能以某种浏览器尺寸找开,访问的页面在这种尺寸下运行.例如可以将浏览器设置成移动端大小(480* 800),然后访问移动站点,对其样式进行评估 ...

  9. CF277B Set of Points——构造题

    题意 构造 $n$ 个点使其凸度(顶点数最多的凸多边形的顶点数)恰好为 $m$,且任意三点不能共线. (题意有点绕,建议看英文原文 分析 首先,题目并不是求凸包上的顶点数,而是求能形成的凸多边形的最大 ...

  10. 洛谷P2577 午餐【贪心】【线性dp】

    题目:https://www.luogu.org/problemnew/show/P2577 题意:n个人每个人有一个打饭时间和吃饭时间,将他们分成两个队伍.每个人打到饭之后就马上去吃饭.问怎么安排可 ...