CoreJava学习笔记05 Object类 String类 包装类

本文深入探讨Java的运行时数据区,详细解析Object类、String类与包装类的功能及应用,涵盖方法重写、垃圾回收机制、字符串操作与拼接优化等关键知识点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java的运行时数据区

Object 类 包装类和String

Object类

所有Java类的父类

class A{}    // class A extends Object
class B extends A{}
  1. Object类型的引用, 可以存储任意对象 Object o = XXX
  2. 在Object类中定义的公开,或受保护的方法, 是所有Java对象都具有的方法
方法声明含义典型用法
public Class getClass()获得对象的实际类型a1.getClass() == a2.getClass()
protected void finalize()对象被垃圾回收时调用无需主动调用
public String toString()返回对象的字符串形式System.out.println(s)
public boolean equals(Object o)判断两个对象内容是否相同o1.equals(o2) 判断o1 o2内容是否相同

垃圾收集 : 由垃圾收集器主动回收垃圾对象

  1. 如果判断对象为垃圾对象 : Hotspot 零引用算法 当对象没有任何引用指向它时, 认定为垃圾

  2. 垃圾对象何时被回收: 延迟回收

toString() 打印对象, 就是打印对象的toString()的返回值

对两个引用使用 == 判断 , 判断的是这两个引用是否指向同一个对象

如果要实现两个对象比较内容, 需要在类中覆盖equals方法

	// this 和  obj 比较内容
	public boolean equals(Object obj) {
		if (this == obj) return true;
		if (obj == null) return false;
		if (this.getClass() != obj.getClass()) return false;
		Employee e = (Employee)obj;
		if (this.name.equals(e.name)  &&  this.salary ==e.salary )  return true;
		else return false;
	}

String

字面值 " " 字符数组

方法名作用
toCharArray()转成字符数组
charAt(int pos)获得pos下标的字符
toUpperCase() / toLowerCase()转成大写/ 小写
length()字符串长度
trim()去掉字符串前后的换行和空格
startsWith(String str) / endsWith(String str)判断字符串是否以str子串开头/结尾
indexOf(String str , int start)查找str子串的位置
split(String str)以str为分隔符, 将字符串切割为若干子串 返回String[]
intern()返回对象在串池中的地址
String 内容不可变

好处: 多个引用可以共享同一个对象,节约内存空间

	public static void main(String[] args) {
		String s = "ABC";
		String s2 = "ABC";
		System.out.println(s == s2);
		
		String s3 = new String("ABC");

		System.out.println(s2 == s3);
		
		s3 = s3.intern();
		System.out.println(s2 == s3);
	}

坏处: 当字符串累加时, 不断地产生新的字符串对象, 降低运行效率

解决办法: StringBuilder 代表字符串, 内容可变

		String s = "ABC";
		s += "DEF";
		s += "GHI";
		s += "XYZ";      //不鼓励   每次运算,都会产生新的String对象

		String s = "ABC";
		StringBuilder sb = new StringBuilder(s);
		sb.append("DEF");
		sb.append("GHI");
		sb.append("XYZ");
		s = sb.toString();

包装类

为8种基本类型提供对象形式 , 让Object类成为所有数据类型的父类

基本类型包装类
byteByte
shortShort
longLong
floatFloat
doubleDouble
booleanBoolean
intInteger
charCharacter
  1. 基本类型 --> 包装类

    Integer a = Integer.valueOf(i);

  2. 包装类 --> 基本类型

    int i = a.intValue();

    自动封箱 : 由编译器自动处理包装类对象和基本类型之间的转换

  3. 基本类型 --> String

    String s = i+"";

  4. String --> 基本类型 (重要)

    i = Integer.parseInt(s);

  5. 包装类 --> String

    s = a.toString();

  6. String --> 包装类

    a = Integer.valueOf(s);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值