目标
Object 类的介绍
字符串的应用
包装类应用
Java 中的异常处理机制
1、Object 类的介绍
Object 类在 Java 的基础包中 java.lang.Object
Object 类是 Java 中所有类的父类。所有对象(包括
数组)都实现这个类的方法。
构造方法: Object();
方法:
boolean equals(Object obj)
判断当前对象与参数对象中,值是否完全相等。
如果要比较两个对象中值是否完全相等,需要重写
Object 类中的 equals() 方法。手动指定对象中那些内容
一致,两个对象才相等。否则,obj1.equals(obj2) 比较
的是两个对象整体。
例如:比较两个组的项目哪个优秀,先要定一个标准。
如 界面美观、运行速度等标准。
Class getClass()
返回此 Object 的“运行时”类型。
在 Java 反射中会使用到,是 Java 反射的基础。
int hashCode()
返回该对象的哈希码值。
主要在 Java 集合中使用。
String toString()
返回该对象的字符串表示。
堆内存中,对象是一个整体,这个整体有一个名称
格式如下:"包名.类名@hashCode编码"
System.out.println(stu); //默认调用 stu.toString()
为了方便程序员查看对象,可以重写 toString()
finalize() 由垃圾回收器自动调用。当 JVM 判断某个
对象生命已经达到尽头了。
//在线程开发中使用
notify()
唤醒在此对象监视器上等待的单个线程。
notifyAll()
唤醒在此对象监视器上等待的所有线程。
wait()
---------------------------
注意:
equals() 方法
对称性:x.equals(y) 为 true;y.equals(x) 也为 true;
反射性:x.equals(x) 为 true
类推性:x.equals(y) 为 true;y.equals(z) 为 true;
x.equals(z) 也为 true;
一致性:x.equals(y) 为 true,在剩下的代码中,两个对象
调用 equals() 方法,返回值一直为 true
任何情况下:x.equals(null) 必返回 false;
x.equals(非 x 类型) 也必返回 false;
如果是 基本数据 类型,JVM 只在栈区 比较两个变量的值,只能用 ==
如果是 引用数据 类型,JVM 会在 堆区 比较两个对象本身。
比较两个对象中的值。
一般情况下,比较是把对象看做整体来比较的,可以重写该对象
类中的 equals() 方法,指定具体比较哪些属性值。
---------------------
hashCode() 得到一个对象的 哈希编码,该编码与对象
在堆内存中的地址,不是同一个值。
(1)如果 x.equals(y) 为 true ,那么 x.hashCode()==y.hashCode()
(2)如果 x.equals(y) 为 false,那么 x 、y 的 hashCode() 值
可能相等,也可能不相等。
hashCode() 方法与 equals() 方法关系密切。
如:在 集合对象 HashSet,能够存储任意类型的对象,但是
不能存放重复的对象
HashSet set = new HsahSet();
Student stu1 = new Sutdent();
stu1.setXX();
Student stu2 = stu1; //两个引用变量指向同一个对象
set.add(stu1);
set.add(stu2); //编译不能通过,内部如何实现???
HashSet 类型中默认封装了一个 “哈希编码” 的算法。
类似于考场上的座位号,与参加考试程序的考号的对应关系。
在考生进入考场之前,已经有算法,给每个座位编号。每进入
一个学员,由监考老师根据考号和座位号的关系直接分配座位。
假如考号对应的座位号上面已经有人,由监考老师调用 equals()
方法进行判断。
考场==> HashSet 对象
考生==> Student 对象
//幕后,JVM 调用“哈希算法”生成考场的 “座位号”
HashSet set = new HsahSet();
//幕后,JVM 调用“哈希算法”为学员对象生成 “考号”
Student stu1 = new Sutdent();
//幕后,JVM 会根据对应的 hashCode 编码,自动为每个
//Student 对象直接分配 座位号,不用与之前进入考场
//的其他学员一一对比。能够提高存储数据的效率
//而且也能够避免 同一个考场,出现两个重复考号的情况
set.add(stu1);
2、字符串的应用
String:长度不变的字符串
StringBuffer:长度可变字符串
内存中存储方式:
(1)String 的不变性;
字符串是常量;它们的值在创建之后不能更改。
String 对象是不可变的,可以共享。(在内存中完成)
String ss1 = "hello";
String ss2 = new String();
ss2 = "hello";
ss2 = ss1;
String ss3 = new String("hello");
ss1 == ss3 //false
ss1.equals(ss3) //true
在程序中,只要使用 不带 new 的字符串,JVM 都在 常量池中查找
如果找不到,就在常量池中创建一个该字符串
原因:
字符串在 Java 程序中太常用。每次使用 都 new ,
比较麻烦,为了方便代码编写,JVM 使用常量池,
普通字符串,放入 常量池,由 JVM 负责管理,当用户再次
使用相同的字符串,JVM 会自动从 常量池中取值,不用查找
并转换当前 JVM 中所有的对象。
不变性:往常量池中放入一个 字符串,该字符串永远都不可能
改变值.
程序中我们认为的字符串改变,都只是新建了一个字符串。
API 中的方法:
字符查找
子字符串查找
两个字符串比较
字符串的包含
字符串输出的格式化显示
字符串拆分
字符索引查找
字符串输出类型的转换 String 转换成 int
3、包装类应用
4、Java 中的异常处理机制
5、补充
instanceof 关键字
主用要与 Java 多态的时候,判断某个对象具体的类型
class Person{}
class Teacher extends Person{}
class Student extends Person{}
class Driver extends Person{}
//编译时类型 运行时类型
Person per1 = new Teacher();
Person per2 = new Student();
Person per3 = new Driver();
public void doWork(Person per){
if(per == null){return;}
//典型的多态应用
if(per instanceof Teacher){}
if(per instanceof Student){}
if(per instanceof Driver){}
}
public boolean equals(Object obj){}
作业
1、API 中的方法:
字符查找
子字符串查找
两个字符串比较
字符串的包含
字符串输出的格式化显示
字符串拆分
字符索引查找
字符串输出类型的转换 String 转换成 int
2、输出一个字符串中所有的大写字母、小写字母、非字母字符的个数。
(根据 ASCII 表的值来判断)
int allCount,lowCount,upCount,oCount;
for(int i=0;i<str.length();i++)
{
char c=s.charAt(i);
if(c>='a' && c<='z'){lowCount++;}else
if(c>='A' && c<='Z'){upCount++;}else{oCount++;}
}
3、判断一个字符串中,"sunjavaibmjavaoraclejavahellojavagoodjava"
java 字符串出现的次数。
String s = "sunjavaibmjavaoraclejavahellojavagoodjava";
String toFind="java";
int count =0;
//在字符串中找到第一次出现 java 的索引值
int index = s.indexOf(toFind);
if(index != -1){count++;}
//从该索引开始截取后面的字符串
s = s.subString(index+toFind.length());
//采用同样的截取方法,递归循环,直到把该字符串全部截取完毕
while(s.indexOf(toFind)!=-1)
{
index = s.indexOf(toFind);
s = subString(index+toFind.length());
count++;
}
分享到:
相关推荐
八年级历史上册 第6课《戊戌变法》知识点 新人教版(通用).doc
《HSK标准教程3》第6课课件.ppt
在本节第六课的教案中,我们将深入探讨以下几个关键知识点: 1. 计算机基础知识:首先,课程将引导学生了解计算机的基本构成,包括硬件(如CPU、内存、硬盘、显示器等)和软件(操作系统、应用程序等)。理解这些...
统编版六年级下册道德与法治第六课《探访古代文明》练习题.pdf
【郭天祥C51第6课作业题答案自编(供参考)】 在学习C51编程语言用于单片机开发的过程中,郭天祥的教程是许多初学者的首选。他的课程通常涵盖基础概念、编程技巧以及实际应用,帮助学生扎实地掌握51系列单片机的...
2016新人教版道德与法治七年级上册第六课师生之间思维导图知识点典型中考例题.pdf
【标题】: 2017七年级上册道德与法治第六课知识点 【描述】: 本资料详细总结了2017年七年级上册道德与法治课程中的第六课核心知识点,旨在帮助学生理解和掌握相关教育内容。 【标签】: 资料 【内容解析】: 在...
第六课第1框题认识依法治国.ppt
《HSK标准教程2》第6课课件.ppt
部编二年级语文下册第六课千人糕课件公开课.ppt
第六课《参与政治生活》复习课件.ppt
目录 《HSK标准教程2》第10课课件.pptx 《HSK标准教程2》第11课课件.pptx ...《HSK标准教程2》第6课课件.pptx 《HSK标准教程2》第7课课件.pptx 《HSK标准教程2》第8课课件.pptx 《HSK标准教程2》第9课课件.pptx
觅风教程第六课源码
高中政治必修二第六课知识点总结.doc
人美版小学美术五年级下册第6课《精细的描写》教案.pdf
部编版七年级下册历史课件第六课北宋的政治.pptx
2020-2021学年七年级语文部编版下册第6课《老山界》课时练习.pdf
新概念英语第二册第6课 完整PPT课件.pptx
中华民族大团结第三单元第六课发展是中华民族伟大复兴的根本途径教案
四年级上册道德与法治第6课《我的家庭贡献与责任》教案教学设计.docx