欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-03-14 13:52:08
...

Java的运行时数据区

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

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

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()的返回值

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

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

如果要实现两个对象比较内容, 需要在类中覆盖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);
	}

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

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

解决办法: 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类成为所有数据类型的父类

基本类型 包装类
byte Byte
short Short
long Long
float Float
double Double
boolean Boolean
int Integer
char Character
  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);

相关标签: 学习笔记