Java笔记10-Object包装类型字符串

提纲:
1.java.lang.0bject中常用方法介绍
2.基本类型对应的包装类型的介绍
以及基本类型和包装类型之间的相互转换
3.java.lang.String 字符串处理类
java.lang.StringBuilder

->包装类型中的方法的使用
->字符串当中的方法的使用
->基本类型 包装类型以及字符串还有StringBuilder
之间的相互转换
-----------------------------------------------------------------------
java.lang.Object
是所有类的基类,所有的类或直接或间接继承它

常用方法:
1.getClass();//获取对象的运行时类型

java.lang.Class<T>
它是用来描述类的类,通过这个类,我们可以获取类里面的信息
它也是Java反射技术的基础类!!!

注意:一个类无论被实例化了多少次,它在Java当中的Class实例永远只有1个!!!

Student s1 = new Student();
Student s2 = new Student();
s1==s2;//false
s1.getClass()==s2.getClass();//true

Java当中获取Class实例的5种方式:

1.对象名.getClass();

2.类名.class

3.Class.forName("类的全限定名");
此方法要求我们强制去处理异常,java.lang.ClassNotFoundException

4.基本类型.class
int.class

5.包装类型.class
Integer.class
-------------------------------------------------------------------------------------------
常用方法2:
boolean equals(Object obj);

java.lang.Object当中的该方法默认比较的是内存地址

为了比较两个对象是否“相等”,我们通常情况下是要去
重写equals方法的

重写equals方法的步骤
1.非空性
2.自反性
3.一致性
4.传递性
5.对称性

注意:
1.== 基本类型的比较用==
==比较的是内存地址
2.equals 对象类型的比较用equals方法,默认比较的是内存地址
需要对它进行重写
3.String类型和Date类型已经重写过了该方法!!!

s1.equals(s2);

@Override
public boolean equals(Object obj){
//1.非空性
if(null==obj){
return false;
}
//2.自反性
if(this==obj){
return true;
}
//3.一致性
if(obj instanceof Student){
Student s = (Student)obj;
//如果两个对象的id是一致的,就认定为同一个对象
return s.getId()==id;
}

return false;
}

int hashCode();//返回对象的哈希值
主要目的:是用来提高性能的

1.相同对象(equals方法true),哈希值一定要相同
1.不同对像的哈希值尽可能保证不同

出现在equals方法中的属性一定也要出现在hashCode方法中!!!

3.toString()方法:
默认输出的是对象的内存地址

[email protected]

getClass()+‘@‘+Integer.toHexString(hashcode());

一般重写,来输出对象的字符串表现形式
如果输出对象的时候,不是以上这种类型,那说明它自己重写了该方法
或者它的父类重写了该toString()方法来满足打印需求!!!

4.protected Object clone();//创建并返回某个对象的副本

1.protected修饰符改成public

2.实体类要去实现java.lang.Cloneable接口
否则会抛出java.lang.CloneNotSupportedException

java.lang.Object当中的clone属于浅层克隆

浅层clone:浅拷贝
将基本类型的值复制一份给副本,对象类型是共享的
当然:String和Date类型是除外的!!!

深层clone:深拷贝
需要我们手动进行编码,将所有类型的数据全部拷贝给副本
不存在共享的数据类型!!!

5.protected void finalize()
当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。

注意:
1.该方法不是由人为来调用的,是由JVM来调用的
2.JVM回收一个垃圾对象的时候,会先去调用该对象的这个方法
3.无论程序中是否出现异常,该方法都会执行

4.请您区别final finally finalize
-----------------------------------------------------------------------------------------------
基本类型以及它所对应的包装类型
byte->Byte
short->Short
int->Integer
long->Long
float->Float
double->Double

boolean->Boolean
char->Character

关于数字类型的包装类都有一个顶级的抽象的父类java.lang.Number

抽象父类当中公共的方法:
byte byteValue()
以 byte 形式返回指定的数值。
abstract double doubleValue()
以 double 形式返回指定的数值。
abstract float floatValue()
以 float 形式返回指定的数值。
abstract int intValue()
以 int 形式返回指定的数值。
abstract long longValue()
以 long 形式返回指定的数值。
short shortValue()
以 short 形式返回指定的数值。

以上这些方法都是用来将包装类型转换成基本类型的

java.lang.Integer

构造方法:
Integer(int value);//利用基本类型(int)来构建一个Integer对象
Integer(String value);//此处的String必须是数字类型的,否则会抛出
//java.lang.NumberFormatException数字格式化异常

JDK5.0以后支持自动解封箱

封箱:将基本类型封装成它对应的包装类型
解箱:将包装类型转换成它所对应的基本类型

//定义一个int类型的数据
int i = 10;
//自动封箱
Integer j = i;//ok
Integer x = 10;//ok

//自动解箱
int y = x;

常用方法:
1.boolean equals(Object obj);
Integer i = new Integer(10);
Integer j = new Integer(10);
i==j;//false
i.equals(j);//true

2.int intValue();//将Integer->int

3.static int parseInt(String value);//将字符串解析成int类型

4.String toString();//Integer->String

5.static Integer valueOf(int i);//int->value

6.static Integer valueOf(String value);

总结:
int->Integer:
==》 1.通过Integer构造
==》 2.自动封箱
==》 3.valuOf(int i)

Integer->int
==> 1.自动解箱
==》 2.int intValue()

Integer->String
=> String toString();

String->int
=> int parseInt(String value);

String->Integer
=>Integer valueOf(String value);

int->String
=>java.lang.String类中的
String valueOf(int i);
-----------------------------------------------------------------------------
java.lang.Character

1.构造方法:
Character(char value);//char->Character

支持自动解封箱的

char c = ‘a‘;
Character cc = c;

2.常用方法:
1. char charValue();

2.static boolean isDigit(char ch)
确定指定字符是否为数字

3.static boolean isLetter(char ch)
确定指定字符是否为字母

4.static boolean isLowerCase(char ch)
确定指定字符是否为小写字母

5.static boolean isUpperCase(char ch)
确定指定字符是否为大写字母

6.static boolean isWhitespace(char ch)
确定指定字符依据 Java 标准是否为空白字符

7.String toString()

8.static Character valueOf(char c);
-------------------------------------------------------------------------------------
java.lang.Boolean

构造方法:
Boolean(boolean flag);
Boolean(String value);//当且仅当传入的String是true或者TRUE结果才是true

支持自动解封箱

API
---------------------------------------------------------------------------------------

时间: 2024-10-13 11:17:31

Java笔记10-Object包装类型字符串的相关文章

java笔记--关于Object类与线程相关的方法

关于Object类中的线程方法 Object类是所有Java类的 父类,在该类中定义了三个与线程操作有关的方法,使得所有的Java类在创建之后就支持多线程 这三个方法是:notify(),notifyAll(),wait(),这几个方法都是用来控制线程的运行状态的. 方法列表如下: notify() : 唤醒在此对象监视器上等待的单个线程 notifyAll() : 唤醒在此对象监视器上等待的所有线程 wait() : 在其他线程时调用此对象的notify()或者notifyAll()方法前,导

Java基本数据类型与包装类型(转)

基本数据类型的包装类 为什么需要包装类? Java并不是纯面向对象的语言.Java语言是一个面向对象的语言,但是Java的基本数据类型却不是面向对象的.但是我们在实际使用中经常需要将基本数据转化成对象,便于操作.比如:集合的操作中,这是,我们就需要将基本类型数据转化为对象. 包装类均位于java.lang包,使用时不需要导入,系统自动导入.Java中的8个包装类分别是:Byte,Short,Integer,Long,Float,Double,Character,Boolean它们的使用方式都是一

javascript学习笔记 - 引用类型 基本包装类型

六 基本包装类型 Boolean,Number,String 这三个引用类型亦称为基本包装类型,与基本的数据类型boolean,number,string相关联.为了方便操作这些基本类型的数据. 引用类型和基本包装类型最大的区别在于对象的生存期.引用类型在代码执行流离开当前作用域之前都是一直存在的,基本包装类型只存在与代码流执行读取基本类型的值的一行代码之中.例如: var str = 'hello,world';//基本类型的数据 str.color = 'red';//创建String包装对

Java笔记(10):面向对象--内部类

1.类名作为形式参数 1 /* 2 形式参数: 3 基本类型 4 引用类型 5 类名:(匿名对象的时候其实我们已经讲过了) 需要的是该类的对象 6 抽象类: 7 接口 8 */ 9 class Student { 10 public void study() { 11 System.out.println("Good Good Study,Day Day Up"); 12 } 13 } 14 15 class StudentDemo { 16 public void method(St

java中判断Object对象类型

记录一下 Object param = params.get(i); if (param instanceof Integer) { int value = ((Integer) param).intValue(); prepStatement.setInt(i + 1, value); } else if (param instanceof String) { String s = (String) param; prepStatement.setString(i + 1, s); } els

在java中,将String类型字符串s赋值为null后,将字符串与其他字符串拼接后得到结果出现了null字符串与其他字符连接的样式

String s = null; s  += "hello"; System.out.println(s); 结果为:nullhello 原因: 先应用String.valueOf 得出s的value值,再通过StringBuilder拼接hello,因此将value与hello进行了拼接: String s = null; s = (new StringBuilder(String.valueOf(s))).append("hello").toString();

实用类 包装类型 字符串 Math类 日期类型 及类型转换课件

java笔记10

非常优秀的软件可由多个独立的控制流组成,这些控制流通常被称作进程或者线程. 使用线程开发具有多个并发控制流的程序. 创建运行时间与当前时间有关的线程. 创建反复运行的线程. 规划程序,使其为某个特定时刻或特定事件暂停. 标准类Timer.TimerTask和Thread, Date和Calendar 软件测试的目的是在软件投入使用前找出其中存在的问题. 调试是一个定位和改正测试过程中找出的问题或改正由用户报告出错问题的过程. 开发高效率测试用例的技术:语句覆盖,路径覆盖,等价划分. 发现并改正一

Java包装类型

********************包装类型*************************** 一.为什么有包装类型 java是面向对象的语言,但是正因为有了8种基本类型的存在,导致java不是完全面向对象的语言 为了让java语言 完全的面向对象,java设计人员, 封装每一种基本类型 设计 基本类型对应的 包装类型.. boolean char int long float doublebyte short Boolean Character Integer Long Float D