Java-三个特殊类

1.String类

1.1String的两种实例化方式

a.直接赋值

String str=“hello”;

b.通过构造方法实例化String对象

1.2字符串相等比较

str.equals(str1)

public boolean equals(String str1)

 

1.3字符串常量是String类的匿名对象

小tips:在日后的开发过程之中,如果要判断用户输入的字符串是否等同于特定字符串,一定要将特定字符串写在前面,避免NullPointerException。

1.4 String类两种实例化的区别

1.采用直接赋值:

String str1 = "hello" ;

String str2 = "hello" ;

String str3 = "hello" ;

System.out.println(str1 == str2); // true

System.out.println(str1 == str3); // true

String类的设计使用了共享设计模式

在JVM底层自动维护一个字符串对象池(对象数组)。

如果采用直接赋值的模式进行String类的对象实例化操作,此对象将自动保存到对象池中,如果下次继续采用直接赋值的模式声明String、对象,先去对象池中找是否有指定内容,如果有,直接引用。如果没有,开辟新空间而后将其保

2.采用构造方法

 

在String类中提供有方法入池操作public String intern() ;(字符串手工入池操作:)

面试题:请解释String类中两种对象实例化的区别

1. 直接赋值:只会开辟一块堆内存空间,并且该字符串对象可以自动保存在对象池中以供下次使用。 2. 构造方法:会开辟两块堆内存空间,其中一块成为垃圾空间,不会自动保存在对象池中,可以使用intern() 方法手工入池。

因此,我们一般会采取第一种方式即直接赋值。

1.5字符串不可变更

字符串一旦定义不可改变

所有的语言对于字符串的底层实现,都是字符数组,数组的最大缺陷就是长度固定。在定义字符串常量时,它的内 容不可改变。

 

原则:

1. 字符串使用就采用直接赋值。

2. 字符串比较就使用equals()实现。

3. 字符串别改变太多。

1.6字符与字符串******

String<->char

字符数组char[]<->String

public String(char[ ] value1);

public  String(char[ ] value1,int offset,int count);

将字符串按照索引转为单个字符

String->char

public char charAt(int index)取得制定索引的字符返回

将字符串转为字符数组

String->char[ ]

public char[ ] toCharArray();

 

1.7字节与字符串

1.7.1 byte-〉String

String构造方法

public String(byte bytes[ ])

String-〉byte[ ]

*****public byte[ ] getBytes(String charset)按照规定编码转为字节数组

1.8字符串的比较

〉0表示本字符串大于目标字符串

=0 二者相等

〈0表示本字符串小于目标字符串

1.9 字符串的查找

  • 判断一个子字符串是否存在

public boolean contains(CharSequence s)

  • 判断是否以指定字符串开头

public boolean startswith(String prefix)

  • 从指定位置开始判断是否以指定字符串开头

public boolean startswith(String prefix,int offset)

  • 判断是否以指定字符串结尾

public boolean endswith(String suffix)

1.10字符串的替换

1.11字符串的拆分

特殊字符需要转义后拆分 \\

eg:\\

1.12字符串的截取

2. 左闭右开

1.13字符串的其他操作方法

1.14StringBuffer类andStringBuilder类

  • 字符串拼接方法

public synchronized StringBuffer append(各种数据类型 b)

  • StringBuffer与String的相互转换
  • String变为StringBuffer:利用StringBuffer的构造方法或append()方法
  • StringBuffer变为String:调用toString()方法。

除了append()方法之外,String也有一些String类

没有的方法

  • 字符串的反转

public synchronized StringBuffer reverse()

  • 删除指定范围的数据

public synchronized StringBuffer delete(int start,int end)

  • 字符串的插入操作

public synchronized StringBuffer insert(int offset, 各种数据类型 b)

面试题:请解释String、StringBuffer、StringBuilder的区别:

  • String的内容不可修改,StringBuffer与StringBuilder的内容可以修改.
  • StringBuffer(JDK1.0)采用同步处理,属于线程安全操作,但效率较高;而StringBuilder(JDK1.5)采用异步处理,属于线程不安全操作,效率较高,当在String对象进行“+”,编译时会将String类变为StringBuilder进行append处理。

Object类-最高参数统一化

Object类是Java默认提供的一个类。Java里面除了Object类,所有类都是存在继承关系的。默认继承Object父类,即,所有的类的对象都可以使用Object进行接收

系统输出默认调用对象的toString()方法

Object中的toString()只是简单输出当前所引用的类名称以及对象地址,如果想在类中取的本类属性信息,需要覆写toString();

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值