Java学习(14)--Object 类/String 类

简介: 一、Object 类 (1) Object 是类层次结构的根类,所有的类都直接或者间接的继承自 Object 类。(2) Object 类的构造方法有一个,并且是无参构造。

一、Object 类 

(1) Object 是类层次结构的根类,所有的类都直接或者间接的继承自 Object 类。

(2) Object 类的构造方法有一个,并且是无参构造。这其实就是理解当时我们说过,子类构造方法默认访问父类的构造是无参构造

(3)要掌握的方法: A:toString()

返回对象的字符串表示,默认是由类的全路径 +'@'+ 哈希值的十六进制表示。这个表示其实是没有意义的,一般子类都会重写该方法。

B:equals()

比较两个对象是否相同。默认情况下,比较的是地址值是否相同。而比较地址值是没有意义的,所以,一般子类也会重写该方法。 

(4) 要 了 解 的 方 法 :                                  

A:hashCode() 返回对象的哈希值。不是实际地址值,可以理解为地址值。 

B:getClass() 返回对象的字节码文件对象,反射中我们会详细讲解

C:finalize() 用于垃圾回收,在不确定的时间

D:clone() 可以实现对象的克隆,包括成员变量的数据复制,但是它和两个引用指向同一个对象是有区别的。          (5)注意问题;

A:直接输出一个对象名称,其实默认调用了该对象的 toString() 方法。

B:面试题

==和 equals() 的区别 ?

A:==

基本类型:比较的是值是否相同

引用类型:比较的是地址值是否相同

B:equals()

只能比较引用类型。默认情况下,比较的是地址值是否相同。但是,我们可以根据自己的需要重写该方法。

= 表示地址相同(因为值相同),== 看地址,故ture ,equals 看值,故 ture

  

  

new 则说明地址不同,== 看地址,故false ,equals 看值,故 ture

    

二、String 类

(1)概述:多个字符组成的一串数据。其实它可以和字符数组进行相互转换。

(2)构造方法:

A:public String()

B:public String(byte[] bytes)

C:public String(byte[] bytes,int offset,int length)

D:public String(char[] value)

E:public String(char[] value,int offset,int count)

F:public String(String original)

下面的这一个虽然不是构造方法,但是结果也是一个字符串对象

G:String s = "hello"; 

  输出:java

(3)字符串的特点

A:字符串一旦被赋值,就不能改变。

注意:这里指的是字符串的内容不能改变,而不是引用不能改变。

B:字面值作为字符串对象和通过构造方法创建对象的不同

String s = new String("hello"); 和 String s = "hello" 的区别 ? 

String s = new String(“hello”)会创建2(1)个对象,String s = “hello”创建1(0)个对象。 
注:当字符串常量池中有对象hello时括号内成立!

(4)字符串的面试题

(看程序写结)

A:==和 equals()

String s1 = new String("hello"); 

String s2 = new String("hello");

 

System.out.println(s1 == s2);// false 

System.out.println(s1.equals(s2));// true

 

 

String s3 = new String("hello"); 

String s4 = "hello"; 

System.out.println(s3 == s4);// false

System.out.println(s3.equals(s4));// true

 

String s5 = "hello";

 String s6 = "hello";

System.out.println(s5 == s6);// true

System.out.println(s5.equals(s6));// true 

B:字符串的拼接

String s1 = "hello";

String s2 = "world"; 

String s3 = "helloworld";

System.out.println(s3 == s1 + s2);// false 

System.out.println(s3.equals((s1 + s2)));// true

 

System.out.println(s3 == "hello" + "world");

//  true 

System.out.println(s3.equals("hello" + "world"));// true

(5)字符串的功能

A:判断功能

boolean equals(Object obj)  判断两个字符串是否相等(值相同即可)

boolean equalsIgnoreCase(String str)  (忽略大小写)判断两个字符串是否相等

boolean contains(String str)  判断字符串中是否包含指定字符串

boolean startsWith(String str)  判断是否以指定字符串开头

boolean endsWith(String str) 判断是否以指定字符串结尾

boolean isEmpty()  判断字符串是否为空(字符串为 null 会报错)

boolean matches(String regex) ;// 是否匹配正则表达式

 

B:获取功能

int length()  获取字符串长度

char charAt(int index)  获取索引处的字符

int indexOf(int char)  获取某指定字符在字符串中第一次出现的索引,没有找到则返回 -1

int indexOf(String str)  获取某指定字符串在字符串中第一次出现的索引,没有找到则返回 -1

int indexOf(int ch,int fromIndex) 从指定索引处开始查找某个字符所在字符串的下标

int indexOf(String str,int fromIndex) 从指定索引处开始查找某个字符串所在字符串的下标

String substring(int start)  从指定索引处截取字符串,获取字串

String substring(int start,int end) 左闭右开 从指定索引处截取字符串,获取字串

  

C:转换功能

byte[] getBytes() 将字符串转换为字节数组

  

char[] toCharArray()  将字符串转换为字符数组

 

static String valueOf(char[] chs)  将 char 类型数据转换为 String 数组 

 

static String valueOf(int i)  将 int 类型数据转换为 String 数组

  输出:1002

String toLowerCase() 将字符串里面的大写转换成小写
  

String toUpperCase() 将字符串里面的小写转换成大写

String concat(String str) 将指定字符拼接到字符串后面(效果等同于 + )

 

D:其他功能

a:替换功能

String replace(char old,char new)  字符替换

String replace(String old,String new)  字符串替换

   

b: 去空格功能

String trim()  去除字符串两端空格(中间空格去不掉)

     

c:按字典比较字符串大小

int compareTo(String str)  比较两个字符串 正数则调用方法字符串大,0则相等

int compareToIgnoreCase(String str)  比较两个字符串(忽略大小写)

      负数,故s 比 s1 要小

第一个数和第一个数比...第 n 个数和第 n 个数相比(相等则继续向下一位比较)

   

示例1:

int[] arr ={1,2,3};   输出结果:[1,2,3]

  

示例2:

字符串反转

键盘录入 “abc”  输出:“cba”

输出:

方法二

StringBuffer

 

(1)用字符串做拼接,比较耗时并且也耗内存,而这种拼接操作又是比较常见的,为了解决这个问题,

Java就提供了一个字符串缓冲区类:StringBuffer 供我们使用。

(2) StringBuffer 的构造方法

public StringBuffer(): 无参构造方法

public StringBuffer(int capacity): 指定容量的字符串缓冲区对象

public StringBuffer(String str): 指定字符串内容的字符串缓冲区对象

(3) StringBuffer 的常见功能 (自己补齐方法的声明和方法的解释 )

A:添加功能

public StringBuffer append(String str):

可以把任意类型数据添加到字符串缓冲区 ,并返回字符串缓冲区本身

public StringBuffer insert(int offset,String str):

在指定位置把任意类型的数据插入到字符串缓冲区 ,并返回字符串缓冲区本身

B:删除功能

public StringBuffer deleteCharAt(int index):

删除指定位置的字符,并返回本身

public StringBuffer delete(int start,int end):

删除从指定位置开始指定位置结束的内容,并返回本身

C:替换功能

public StringBuffer replace(int start,int end,String str):

从 start 开始到 end 用 str 替换

D:反转功能

public StringBuffer reverse()

E:截取功能 (注意这个返回值)

public Stringsubstring(int start) public Stringsubstring(int start,int end)

(4) StringBuffer 的 练 习 ( 做 一 遍 )

A:String 和 StringBuffer 相互转换

String -- StringBuffer

构造方法

StringBuffer -- String toString() 方法

B:字符串的拼接

C:把字符串反转         

D:判断一个字符串是否对称

(5)面试题

A:String,StringBuffer,StringBuilder 的区别

答:A:String 是内容不可变的,而 StringBuffer, StringBuilder 都是内容可变的。

B:StringBuffer  是同步的,数据安全 ,效率低 ;

StringBuilder 是不同步的 ,数据不安全 ,效率高

B:StringBuffer 和数组的区别 

答:二者都可以看出是一个容器,装其他的数据。

但是呢 ,StringBuffer  的数据最终是一个字符串数据。而数组可以放置多种数据,但必须是同一种数据类型的。

单线程操作字符串缓冲区下操作大量数据 = StringBuilder

多线程操作字符串缓冲区下操作大量数据 = StringBuffer

(6)注意的问题:

String 作为参数传递,效果和基本类型作为参数传递是一样的。

 

目录
相关文章
|
9天前
|
Java 测试技术 开发者
Java零基础-indexOf(String str)详解!
【10月更文挑战第14天】Java零基础教学篇,手把手实践教学!
97 65
|
12天前
|
XML Java 编译器
Java学习十六—掌握注解:让编程更简单
Java 注解(Annotation)是一种特殊的语法结构,可以在代码中嵌入元数据。它们不直接影响代码的运行,但可以通过工具和框架提供额外的信息,帮助在编译、部署或运行时进行处理。
82 43
Java学习十六—掌握注解:让编程更简单
|
20天前
|
存储 SQL 小程序
JVM知识体系学习五:Java Runtime Data Area and JVM Instruction (java运行时数据区域和java指令(大约200多条,这里就将一些简单的指令和学习))
这篇文章详细介绍了Java虚拟机(JVM)的运行时数据区域和JVM指令集,包括程序计数器、虚拟机栈、本地方法栈、直接内存、方法区和堆,以及栈帧的组成部分和执行流程。
23 2
JVM知识体系学习五:Java Runtime Data Area and JVM Instruction (java运行时数据区域和java指令(大约200多条,这里就将一些简单的指令和学习))
|
5天前
|
JavaScript Java 项目管理
Java毕设学习 基于SpringBoot + Vue 的医院管理系统 持续给大家寻找Java毕设学习项目(附源码)
基于SpringBoot + Vue的医院管理系统,涵盖医院、患者、挂号、药物、检查、病床、排班管理和数据分析等功能。开发工具为IDEA和HBuilder X,环境需配置jdk8、Node.js14、MySQL8。文末提供源码下载链接。
|
10天前
|
Java 测试技术 开发者
Java零基础-indexOf(String str)详解!
【10月更文挑战第13天】Java零基础教学篇,手把手实践教学!
32 1
|
14天前
|
安全 Java 测试技术
Java零基础-StringBuffer 类详解
【10月更文挑战第9天】Java零基础教学篇,手把手实践教学!
16 2
|
18天前
|
存储 算法 Java
带你学习java的数组军队列
带你学习java的数组军队列
31 0
|
1月前
|
Java
Java Object 类详解
在 Java 中,`Object` 类是所有类的根类,每个 Java 类都直接或间接继承自 `Object`。作为所有类的超类,`Object` 定义了若干基本方法,如 `equals`、`hashCode`、`toString` 等,这些方法在所有对象中均可使用。通过重写这些方法,可以实现基于内容的比较、生成有意义的字符串表示以及确保哈希码的一致性。此外,`Object` 还提供了 `clone`、`getClass`、`notify`、`notifyAll` 和 `wait` 等方法,支持对象克隆、反射机制及线程同步。理解和重写这些方法有助于提升 Java 代码的可读性和可维护性。
|
3月前
|
Java
【Java基础面试二十】、介绍一下Object类中的方法
这篇文章介绍了Java中Object类的常用方法,包括`getClass()`、`equals()`、`hashCode()`、`toString()`、`wait()`、`notify()`、`notifyAll()`和`clone()`,并提到了不推荐使用的`finalize()`方法。
【Java基础面试二十】、介绍一下Object类中的方法
|
2月前
|
Python
类与面向对象编程(Object-Oriented Programming, OOP)
类与面向对象编程(Object-Oriented Programming, OOP)
18 0