Java
基础(二)
toString
()
:使用
System.out.println()
方法时,调用对象的
toString()
。可以重写
toString()
。
==
,
equals
和
hashcode
:
只有当两个引用都引用相同的对象时,
==
才计算为
true
。
equals
默认使用
==
运算符比较。可以重写
equals
方法,比较两个对象内容是否相同。如果使类对象作为散列表中的键,必须重写
equals
,重写函数签名必须为:
public
boolean equals(Object o)
。
equals
的约定:自反性,对称性,可传递性,一致性。
x.equals(null)
返回
false
。
Object
类中的默认散列码总是为每个对象产生一个唯一号。
equals
和
hashcode
的约定:如果两个对象
equals
,他们必须具有相同的
hashcode
;
hashcode
相同,对象不一定
equals
;对象不
equals
,
hashcode
不一定不同。搜索比较时首先使用
hashcode()
,然后使用
equals
检索正确的元素
,
只有当
hashcode
相同,
equals
返回
true
,两个对象才能看成完全相同。
transient
标识的属性最好不要用来确定对象的散列码或相等性。
集合
两种顺序:
Sorted
顺序,类实现
Compareable
接口定义的顺序或
Comparator
定义的顺序。
Ordered
顺序:可以按照特定顺序遍历集合。通过索引或者插入顺序访问。
List
:
提供与索引相关的方法。按照索引位置排序,没有
Sorted
顺序。
ArrayList
:提供快速遍历和快速随机访问。适用:要快速遍历但是不做大量的插入和删除时。非线程同步。
Vector
:基本上和
ArrayList
同,线程同步。
LinkedList
:元素之间是双链接,容易被选择设计栈和队列。元素遍历比较慢,可以快速插入和删除。实现
Queue
接口,支持
peek()
,
poll()
,
offer()
方法。
Set
:
不允许重复
HashSet
:非
Sorted
,非
Ordered
。
LinkedHashSet
:非
Sorted
,
Ordered
。可以按照元素的插入顺序遍历它们。
TreeSet
:
Sorted
,非
Ordered
;将元素按照自然顺序升序排序;可以选择一个带构造函数的
TreeSet
,通过
Comparable
或者
Comparator
为集合提供自己的规则。
Map
:
键值对,键惟一。
HashMap
:非
Sorted
,非
Ordered
。允许一个集合中有一个
null
键和多个
null
值。非线程安全
Hashtable
:
HashMap
的同步版本。线程安全,不允许任何内容为
null
。
LinkedHashMap
:非
Sorted
,
Ordered
。
TreeMap
:
Sorted
,非
Ordered
。
Queue:
PriorityQueue:
按照自然顺序或
Comparator
进行排序的。
排序集合和数组
使用
Collections.sort
和
Arrays.sort
对集合和数组进行排序。排序的对象需要
implement
Comparable
接口中的
compareTo
方法,方法返回负数,
0
,正数。
[Collections/Arrays].sort
的重载版本:接受
Comparator
的实现类,自定义排序方法。
对于基本类型,
Arrays
始终使用自然顺序进行排序。
搜索集合和数组
binarySerach
返回值:成功返回值的
int
索引,不成功返回
int
索引标识插入点
=
(
-
插入点)
-1
)。
搜索的集合或者数组必须在搜索之前进行排序,否则返回结果不可预测。排序顺序和搜索的顺序必须是同一个顺序。
Arrays
和
Lists
之间进行转换
Arrays.asList
:返回数组支持的固定大小的
list
。对
list
的操作更新到数组中。
泛型:
(1)
泛型使编译器强加类型安全,只在编译时保护,在运行时不会存在。
(2)
非泛型集合可以容纳任何非基本类型的任何对象,获取对象时只返回
Object
。混合泛型和非泛型集合会产生编译警告。
(3)
泛型集合元素赋值:集合元素可以是泛型类型的子类。
(4)
泛型集合赋值:多态适用于“基本”类型,不适用于泛型类型。泛型类型必须严格相同。通配符
<?extends Parents>
,
<? super Child>
可以实现多态赋值。
.<?>
完全等同于
<? extends Ojbect>
。集合参数类型为
<? extends Parents>
或
<?>
时,不能对集合
add
。通配符只针对声明使用。
(5)
使用泛型声明来创建泛型类和泛型方法。
内部类:
四种类型:静态内部类,实例内部类,方法内部类,匿名类。
实例内部类:
(1)
类内部没有
static
声明
,
可以访问外部类内部任何成员
(2)
在外部类外部,通过外部类的实例实例化内部类;在外部类里面,可以直接使用内部类类名实例化。
(3)
内部类内部使用
this
指内部类的实例,使用
Outer.this
引用外部类实例。
(4)
内部类修饰符:访问修饰符
public
,
protected
,
private
,
final
,
abstract
,
strictfp
方法本地内部类:
(1)
方法里面声明的类。只能在方法内部使用
(2)
只能引用方法内部
final
声明的变量。
(3)
不能标识方法内部类用访问修饰符,
static
。只可以使用
abstract
和
final
匿名内部类:
一般用来产生一个类或接口的匿名类对象。可以在任何使用对象的地方使用匿名内部类来赋值。
静态内部类:
(1)
类内部声明为
static
的内部类。
(2)
不需要外部类的实例即可创建静态内部类实例。
(3)
不能访问外部类的非静态成员。因为没有外部实例的隐含引用。
线程
(1)
定义线程:两种方法,
extends Thread
,
implements Runnable
(2)
实例化线程:
new MyThread(); new Thread(new MyRunnable()); new Thread(new MyThread());
(3)
启动线程:
t.start();
线程启动后,同一个实例不能再次
start
。
(4)
线程状态:新,死,运行,就绪,阻塞。
(5)sleep
后只能回到就绪状态,等待调度。它是一个
static
方法。
(6)
线程优先级:数字越大优先级越高。
yield
方法让线程从运行状态到就绪状态。
(7)join
:
t.join()
让当前调用线程加到
t
线程的尾部,等待
t
线程结束后才可以运行。
线程离开运行状态的方法:
yield
,
join
,
sleep
,
run
完成,
wait
,
synchronized
阻塞,被线程调度程度转换成就绪状态。
(8)synchronized
:线程在执行
synchrnoized
时需要获取对象的锁,执行完
synchrnoized
之后会自动释放锁,在释放锁之前任何别的线程不获取该对象的锁定。
Sleep
不释放锁。
Public synchronized void
doStuff(){System.out.println(“test”);}
等价于:
Public void doStuff(){synchronized(this){
System.out.println(“test”);}}
Public static synchronized int
getCount(){return count}
等价于
Public static int
getCount(){synchronized(MyClass.class){return count;}}
(9)
线程死锁:获取两个或者以上的资源,获取资源的顺序不定,两个以上的线程。可以通过使用按照一定的顺序获取资源来避免死锁。
(10)wait
,
notify
,
notifyAll
,必须在
synchronized context
中,否则抛出
RuntimeException
。每个对象都有一个等待列表,等待来自该对象的信号。线程执行
wait
的时候,线程从运行状态进入阻塞状态,在对象的等待队列中加上该线程,在对象上执行
notify
的时候,从对象的阻塞队列中唤醒一个线程进入就绪状态,
notifyAll
唤醒对象阻塞队列上的所有线程。
- 大小: 86.4 KB
分享到:
相关推荐
这是我在大一写的Java基础二级实践课题,里面有我自己写的报告和课题一步步写下来的思路和方法,里面基本上java基础的知识都用到了,例如java的多线程,还有继承,在这个课题中继承解决很多代码冗余的问题,还有就是...
二、Java 基础知识 * Java 语言的八种基本数据类型有:byte 字节型、short 短整型、int 整型、long 长整型、float 单精度浮点型、double 双精度浮点型、char 字符型、boolean 型。 * 变量的类型有基本类型和引用...
java基础的案例分析和实例教学,适合新手及回顾查阅,对于夯实基础有好处
《Java基础入门(第3版)》是一本针对Java初学者的教材,其课后答案文档提供了对书中习题的解答,旨在帮助读者巩固所学知识。Java是一种面向对象的编程语言,具备跨平台性,由Java虚拟机(JVM)负责解释执行。Java...
二、 Java 语言的历史发展 * 1995 年 5 月:Java 技术首次亮相,用于消费类设备。 * 1996 年 1 月:网景公司决定在 Netscape2.0 加入对 Java 的支持,从此 Java 开始流行。 * 1996 年初:SUN 公司发布了 Java 1.02...
《Java基础案例教程(第2版)》是一本旨在教授初学者Java编程基础知识的教材,其教学设计旨在通过实例引导学生深入理解Java语言的核心概念。本教程覆盖了从环境搭建到程序设计的各个环节,旨在帮助学生建立起坚实的...
这个"Java基础入门源代码"集合应该是为了帮助初学者理解和实践Java编程基础而设计的。让我们详细探讨一下Java语言的基础知识,以及如何通过源代码学习。 1. **基本语法**:Java的语法与C++和C#类似,它包括类、对象...
《Java基础案例教程(第2版)》是一本专为初学者设计的教材,旨在帮助学习者掌握Java语言的基础知识,并通过实践案例加深理解。本教程的课后习题答案包含在"Java基础案例教程(第2版)-课后习题答案.zip"压缩包中,...
北京动力节点-Java编程零基础教程-042-Java基本语法-二进制到十六进制数的转换.avi 北京动力节点-Java编程零基础教程-043-Java基本语法-八进制、十六进制转换为十进制数.avi 北京动力节点-Java编程零基础教程-044...
《Java 基础入门》课后习题答案 第 第 1 章 Java 开发入门 一、填空题 1、 Java EE、Java SE、Java ME 2、 JRE 3、 javac 4、 bin 5、 path、classpath 二、选择题 1、ABCD 2、C 3、D 4、B 5、B 三、简答题 1、 面向...
【Java基础知识点】 1. **Java的起源与特性** - Java是由SUN Microsystems公司(后被Oracle收购)开发的一种面向对象的编程语言。 - Java有三个主要版本:Java Standard Edition (JavaSE),用于桌面应用;Java ...
"Java基础案例教程"是为初学者设计的教育资源,旨在帮助他们掌握Java编程的基础概念和实践技能。本教程出自知名教育机构黑马程序员,该机构以其深入浅出的教学方式和实用的案例著称。 在本教程中,你将学习到以下...
java基础入门课件、简单明了、没有多余的东西、都是精华
### Java基础知识精炼 #### 一、Java概述与发展历程 Java是一种高级编程语言,由Sun Microsystems公司的James Gosling等人于1991年开始研发,原名为Oak,旨在控制嵌入式设备如有线电视交换盒和PDA。1994年正式更名...
在Java基础学习的第二天,主要涵盖了以下几个重要知识点:计算机组成原理,DOS命令,进制转换,Java的发展历程,Java的三大平台,Java运行核心机制,JDK的安装与环境变量配置,以及Java的基本语法。 首先,计算机...
"java基础资料"涵盖的应该是Java编程的基础概念和技能,适合初学者入门。以下是基于这个主题的详细知识点讲解: 1. **Java语言简介**:Java是由James Gosling在1995年创建的,它的设计目标是“一次编写,到处运行”...
【Java基础】 Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现已被Oracle公司收购)于1995年发布。Java以其“一次编写,到处运行”的特性,成为跨平台应用开发的首选语言。Java的基础部分主要包括...