String类、Object类、包装类总结

1.java.lang.String类


1.1String类的两种实例化方式

  • a.直接赋值,在堆上分配空间
  • b.传统方法(通过构造方法实例化String对象)

1.2字符串相等比较(比较内容)

public boolean equals(String anotherString) ;//成员方法
str.equals(anotherString)

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

小tips:
如果要判断用户输入的字符串是否等同于特定字符串,一定要
将特定字符串(string常量)写在前面,避免NullPointerException(空指针异常)


1.4

在我们JVM底层会自动维护一个字符串的对象池,如果现在采用直接赋值的形式进行
string的对象实例化,该对象会自动保存在这个对象池之中。如果下次继续直接使用
直接赋值的模式声明string对象,此时对象池中若有指定内容,则直接引用;如果
没有,则开辟新的对空间后将其保存在对象池中供下次使用

手工入池(本地方法):

public native String intern();

1.5字符串常量不可变更

字符串一旦定义后不可改变。


1.6字符与字符串的相互转换(***)

a.将字符数组转为字符串
    
public String(char[] value);
public String(char[] value, int offset, int count);
    
b.将字符串转为单个字符
public char charAt(int index);
    
c.将字符串变为字符数组
String  ->  char[]
    
public char[] toCharArray();
    
取得字符串长度
public int length();

1.7 字节(byte)与字符串

a.将字节数组转为字符串(*****byte[] -> String
    
public String(byte[] value)
public String(byte[] value, int offset, int count)
    
b.将字符串转为字节数组(******)
String -> byte[]
public byte[] getBytes();
    
c.将字符串按照指定编码转为字节数组
public byte[] getBytes(String charsetName);

1.8字符串比较

a.不区分大小写相等比较
public boolean equalsIgnoreCase(String anotherString);
    
b.比较两个字符串大小
public int compareTo(String anotherString);
①返回大于0:表示大于比较对象
②返回等于0:表示相等
③返回小于0:表示小于比较对象

1.9字符串查找(***)

public boolean contains(String str) ; //判断str在本字符中是否存在
    
public boolean startsWith(String str);  //判断是否以指定字符串开头
    
public boolean startsWith(String str, int index);//从指定位置开始判断是否以指定字符串开头
    
public boolean endsWith(String str); //判断是否以指定字符串结尾

1.10 字符串替换

public String replaceAll(String regex, String replacement);//替换所有指定内容
    
public String replaceFirst(String regex, String replacement);//替换首个内容

1.11字符串拆分

public String[] split(String regex);//将字符串按照指定格式全部拆分
    
public String[] split(String regex, int limit);//将字符串部分拆分,数组长度为limit

1.12字符串截取

public String subString(int beginIndex);//从指定位置截取到字符串结尾[]
    
public String subString(int beginIndex, int endIndex);//截取部分内容[)

1.13String类其他方法

a.去掉左右空格
public String trim();
    
b.转大小写
public String toUpperCase();//转大写
public String toLowerCase();//转小写
    
c.判断字符串是否为空(只能判断是否为空字符串而不是NULL)
public boolean isEmpty();

1.14两只sb-方便进行字符串的修改-java.lang

  • StringBuffer
  • StringBuilder
a.字符串修改
public StringBuffer append(各种数据类型)
    
b.StringBuffer <-> String
①String -> StringBuffer
调用StringBuffer的构造方法或append()
    
②StringBuffer -> String
StringBuffer.toString();
    
c.字符串反转
public StringBuffer reverse();
    
d.删除指定范围的数据
public StringBuffer delete(int start, int end);
    
e.插入数据
public StringBuffer insert(int offset,各种数据类型)
    
①String的内容不可修改,而两只sb可以改内容(append)
②StringBuffer采用同步处理,线程安全,效率较低
StringBuilder采用异步处理,线程不安全,效率较高,String"+"底层会将String->StringBuilder

2.Object类(RealFather):最顶级的父类

Object类是java默认提供的类

java除了Object类,所有的类都存在继承关系,默认会继承Object父类,所有类对象都可以通过Object类进行接收


2.1取得对象信息-toString()

直接使用对象输出,默认输出一个地址编码。如果现在输出的是String对象,
此时输出字符串内容而非地址,原因就在于String类覆写了Object的toString()方法
System.out.println()
系统输出默认会调用对象的toString()
如果默认给出的toString()功能不足(不想输出地址而是输出本类信息),
需要在子类中覆写toString()方法。


2.2对象的比较-equals()

2.3接收引用数据类型

Object类可以接收所有引用数据类型,包括:类、数组、接口


包装类

就是将基本数据类型封装到类中

1.1分类

  • a.对象性包装类(Object的直接子类):Boolean(boolean)、Character(char)

  • b.数值型包装类(Number的直接子类),存在数值转换异常:Byte(byte)、
    Short(short)、Long(long)、Double(double)、Float(float)、Integer (int)


1.2装箱与拆箱-基本数据类型与相应包装类的数据处理

  • 装箱:将基本数据类型变为包装类对象,利用每个包装类提供的构造方法实现装箱。

  • 拆箱:将包装类中包装的基本类型值取出,利用Number类提供的xxValue()实现拆箱
    处理。

阿里编码规范:所有相同类型的包装类对象之间的值比较,全部使用equals方法比较。
说明:
对于Integer var = ? 在-128~127之间的赋值,Integer对象在Integer常量池产
生,会复用已有对象,这个区间内的Integer值可以直接用==判断。除此之外的所有
数据,都会在堆上产生,并不会复用已有对象。

使用int还是Integer?
a.【强制】所有POJO类(简单java类,Bean)属性必须使用包装类型
b.【强制】RPC方法的返回值和参数必须使用包装类型
c.【推荐】所有的局部变量使用基本类型

1.3字符串与基本类型的转换

  • 将字符串转为基本类型(静态方法)
    调用各个包装类.parseXX(String str)
    Integer.parseInt(String str);

  • 基本类型变为字符串
    a. “”+
    b. 使用String类的valueof(基本类型),此方法不产生垃圾空间(推荐)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值