Java基础-3.Object、String、StringBuffer、StringBuilder

一、Object

1.Object类概述

类层次结构的根类,所有类都直接或者间接的继承自该类。

2.构造方法

public Object()    子类的构造方法默认访问的是父类的无参构造方法

3.public native int hashCode();

不同对象的hashCode()一般来说不会相同。同一个对象的hashCode()值肯定相同。

4.getClass()

public final Class getClass()

返回此对象的运行时类。

可以通过Class类中的getName()方法,获取对象的全路径名称。

5.public String toString()

返回该对象的字符串表示,底层代码如下如下,该值无意义,所以要在创建对象时重写toString

getClass().getName() + "@" + Integer.toHexString(hashCode())

6.Object类的equals()

指示其他某个对象是否与此对象“相等”。默认情况下比较的是对象的引用是否相同。

public boolean equals(Object obj) {

         return (this == obj);

}

由于比较对象的引用没有意义,一般建议重写该方法。要注意这里重写的是父类的equals方法,多态的弊端是不能访问子类特有的属性,需要向下转型,即需要将object类转换成需要的子类。

7.==和equals

==是一个比较运算符号,既可以比较基本数据类型,也可以比较引用数据类型,基本数据类型比较的是值,引用数据类型比较的是地址值。

equals方法是一个方法,只能比较引用数据类型,所有的对象都会继承Object类中的方法,如果没有重写Object类中的equals方法,equals方法和==号比较引用数据类型无区别,重写后的equals方法比较的是对象中的属性。

二、scanner

Scanner sc = new Scanner(System.in);

int i = sc.nextInt();

String s = sc.nextLine();

System.out.println(i+" "+s);

输入int数后,回车其实是+”\r\n”,所以string数据就判断已经结束,导致s没有输入。

解决方法:

1)创建两个scanner对象,这种方法浪费资源,不推荐

2)把所有的数据,按照string类获取,之后再转换。

三、String

1.string构造方法

public String() 空构造

public String(byte[] bytes) 字节数组转为字符串,字节数组为数字,会转换为对应的字符

public String(byte[] bytes,int index,int length) 字节数组一部分转为字符串

public String(char[] value) 把字符数组转为字符串

public String(char[] value,int index,int count) 把字符数组的一部分转为字符串

public String(String oringal) 把字符串常量转为字符串

面试题

String s1 = new String(“abc”); 共创建两个对象,1个在常量池中,1个在堆内存中。

String s1 = new String(“abc”); String s2=”abc”; s1!=s2,因为一个在堆内存,一个在常量池中。

String s1 = “a”+”b”+”c”;和s2=”abc”;s1==s2,因为java的常量优化机制。

String s1="ab";String s2="abc";String s3=s1+"c"; s2!=s3,因为s2在常量池,而s3在堆内存。

2.string的判断功能

boolean equals(Object obj) 比较字符串的内容是否相同,区分大小写

boolean equalsIgnoreCase(String str) 比较字符串的内容是否相同,不区分大小写

boolean contains(String str) 判断字符串是否包含小字符串

boolean startWith(String str) 判断字符串是否以某个指定的字符串开头

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

boolean isEmpty() 判断是否为空

3.string的获取功能

int length() 获取长度

char charAt(int index) 返回指定位置的字符

int indexOf(int ch) 返回指定字符第一次出现的位置,参数可以为字符串,或者单个字符

int indexOf(String str,int fromIndex) 返回指定字符串在此字符串中从指定位置后第一次出现的索引

如果index改为lastIndexOf则为从后向前。

substring(int start) 截取字符串

4.string的转换功能

byte[] getBytes 把字符串转为字节数组

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

static String valueOf(char[] chs) 把字符数组转字符串

static String valueOf(int i) 把int数组转为字符串: String.valueOf(100)

static String valueOf(对象) 调用的是对象的toString方法

String concat(String str) 字符串拼接

5.string的替换功能

String replace(char old, char new)

String replace(String old, String new)

Sring trim() 去除字符串两端的空格

四、StringBuffer

线程安全的可变字符序列

1.StringBuffer和String的区别

String是一个不可变的字符序列。

StringBuffer是一个可变的字符序列,但是不能像string那样用“+”,需要使用append等方法。

2.StringBuffer构造方法

public StringBuffer():无参构造方法

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

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

3.StringBuffer方法

public int capacity():返回当前容量。

public int length():返回长度(字符数),字符的实际值长度,而非容量

4.添加功能

public StringBuffer append(String str):可以把任意类型数据添加到字符串缓冲区里面,并返回字符串缓冲区本身。

public StringBuffer insert(int offset,String str):在指定位置把任意类型的数据插入到字符串缓冲区里面,并返回字符串缓冲区本身。

5.删除功能

public StringBuffer deleteCharAt(int index):删除指定位置的字符,并返回本身

public StringBuffer delete(int start,int end):删除从指定位置开始指定位置结束的内容,并返回本身

6.替换和反转功能

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

public StringBuffer reverse():字符串反转

7.截取功能

public String substring(int start):从指定位置截取到末尾

public String substring(int start,int end):截取从指定位置开始到结束位置,包括开始位置,不包括结束位置

8.StringBuffer和String相互转换

String -- StringBuffer

通过构造方法

通过append()方法,即append内部的字符串转换成了stringbuffer

StringBuffer -- String

通过构造方法

通过toString()方法

通过subString(0,length)

9.StringBuilder

StringBuffer和StringBuilder的区别

StringBuffer是jdk1.0版本的,是线程安全的,效率低,StringBuilder是jdk1.5版本的,是线程不安全的,效率高

String和StringBuffer,StringBuilder的区别

String是一个不可变的字符序列,StringBuffer,StringBuilder是可变的字符序列

六、Arrays

1.Arrays类概述

针对数组进行操作的工具类,提供了排序,查找等功能。

2.成员方法

public static String toString(int[] a) 将int数组转换成字符串

public static void sort(int[] a) 将int数组进行排序

public static int binarySearch(int[] a,int key) 二分查找key

七、基本包装类

可以在对象中定义更多的功能操作该数据。常用于基本数据类型与字符串之间的转换。

基本类型和包装类的对应

byte        Byte

short       Short

int            Integer

long          Long

float          Float

double      Double

char          Character

boolean     Boolean

1.Integer

该类中提供了多个方法,可以使int和String互相转换

构造方法

public Integer(int value)

public Integer(String s)

int和string互相转换

int --- String

和""进行拼接,推荐使用

public static String valueOf(int i),推荐使用

int--Integer--调用Integer的toString方法

String -- int

public static int parseInt(String s)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值