JDK API常见对象:Object类、Scanner类、String类、StringBuffer类

Android虽然我上手做有了一段时间,但基本上是遇到了难题就goole学一点怎么实现功能。很多基础的知识我没有什么概念,所以刷网课补习一下,顺手做下笔记,希望对你有帮助kkk
在这里插入图片描述

Object类

所有类的根类,Java中所有类都直接或间接的继承该类

Object类的int hashCode():返回对象的哈希码值

a.返回该对象的哈希码值,这个值和地址有关。
b.不同对象的,hashCode()一般来说不会相同。但是同一个对象的hashCode()值肯定相同。
c.不是对象的实际地址值,可以理解为逻辑地址值。

Object类的getClass():返回此对象运行时类

返回class类型,class是一个类,他的对象是具体的.class文件。

Object类的toString():返回该对象的字符串表示形式

在这里插入图片描述
返回的字符串内容:运行时类的名字+@+该对象的哈希码值的十六进制。
PS:
system.out.println(s);会自动调用toString()
一般类都会重写toString()

Object类的boolean equals(Object obj):指示其他对象是否与此对象相等

重写equals方法:
返回class类型,class是一个类,他的对象是具体的.class文件。
equals和= =的区别:
equals方法是一个方法,只能比较引用数据类型。所有的对象都会继承Object类中的方法,如果没有重写Object类中的equals方法,equals方法和==号比较引用数据类型无区别
“= =”是一个比较运算符号,既可以比较基本数据类型,也可以比较引用数据类型。基本数据类型比较的是值,引用数据类型比较的是地址值。

Scanner类

一个简单的文本扫描器。

Scanner类的构造方法

Scanner(InputStream source)
System类下有一个静态的字段:
public static final lnputstream in是标准的键盘输入流。
所以获取键盘输入流:
Scanner sc = new Scanner(System.in);

Scanner类的hasNextXxx()方法

hasNextXxx()判断是否还有下一个输入项,其中Xxx可以是Int、Double等。
如果需要判断是否包含下一个字符串,则可以省略Xxx。

Scanner类的NextXxx()方法

nextXxx()获取下一个输入项。Xxx的含义和上个方法中的Xxx相同。
在这里插入图片描述
默认情况下,Scanner使用空格,回车等作为分隔符。
PS:NextLine()方法获取一整行,返回String类型,如果前面用了NextInt获取输入,回车的\r\n会被作为新行被NextLine获取。

String类

String类代表字符串,所有字符串都作为String类的一个实例。
字符串是常量不能被修改,如下图s修改后,字符串“abc”在内存中成为了垃圾(没有被修改),创建了一个新的字符串"bcd"指向s。
在这里插入图片描述
在这里插入图片描述
String不会被改变,所以选a。

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):把字符数组的一部分转成字符串(index索引、count数目)
  • public String(String original):把字符串常量值转成字符串(创建一个字符串副本)

""和NULL的区别:
""是一个字符串,可以调用String中所有的方法。
NULL是空值,不能调用任何方法,调用就会出现空指针异常。

思考题:
在这里插入图片描述
所以上图程序运行结果为:true true
在这里插入图片描述
所以上图程序运行结果为:false true
在这里插入图片描述
所以上图程序运行结果为:true true

Java 语言提供对字符串串联符号("+”)以及将其他对象转换为字符串的特殊支持。
在这里插入图片描述

String类中的比较方法

  • boolean equals(Object obj):比较字符串的内容是否相同,区分大小写
  • boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,忽略大小写
  • boolean contains(String str):判断大字符串中是否包含小字符串
  • boolean startsWith(String str):判断字符串是否以某个指定的字符串开头
  • boolean endsWith(string str):判断字符串是否以某个指定的字符串结尾
  • boolean isEmpty():判断字符串是否为空。

String类中的转换方法

  • byte[]getBytes():把字符串转换为字节数组
  • char[]tocharArray():把字符串转换为字符数组
  • static string valueof(char[]chs):把字符数组转成字符串。
  • static string valueof(int i):把int类型的数据转成字符串。
    *注意:String类的valueof方法可以把任意类型的数据转成字符串。
  • String toLowerCase():把字符串转成小写。
  • string toUpperCase():把字符串转成大写。
  • string concat(String str):把字符串拼接。

String类中的replaceAll方法

replaceAll(String regex, String replacement):将给定的字符串中与regex匹配的每个字符替换成replacement。
例子:

String s = "itcast";
String reg = "[abc]";
String s2 = s.replaceAll(reg,"12");
System.out.println(s2);

运行结果:it1212st

StringBuffer类

线程安全的可变字符序列,StringBuffer和String 的区别:StringBuffer是个可变的字符序列,String不可变。
(String作为形参原来的值是不会改变的,StringBuffer作为形参原值是会改变的,因为StringBuffer传入的值是指向StringBuffer对象的地址)
在这里插入图片描述
运行结果:
dsgehappend
adsd

StringBuffer的构造函数

StringBuffer() 构造一个没有字符的字符串缓冲区,初始容量为16个字符。 (创建了个大小为16的空的字符数组)
在这里插入图片描述 在这里插入图片描述
public StringBuffer(int capacity):指定容量的字符串缓冲区对象(capacity是数组容量(理论值)、length是数组的长度(实际值))
public StringBuffer(String str):指定字符串内容的字符串缓冲区对象(此时容量capacity就等于16+str.length())。

StringBuffer的添加功能append、insert

append返回的是同一个对象,没有创建副本,append方法接收各种类型的参数,全部变成字符串的形式。
sb、sb1指向的是同一个对象,所以原来的字符串没有变成垃圾,因此StringBuffer是可变的字符数列。(增加、插入、删除等操作都同理)

StringBuffer sb = new StringBuffer("100");
StringBuffer sb1 = sb.append(true);

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

StringBuffer sb = new StringBuffer("100");
StringBuffer sb1 = sb.insert(0,true);
System.out.println(sb);
System.out.println(sb1);

运行结果:在这里插入图片描述

StringBuffer的删除功能delect、delectCharAt

delect删除子字符串
delectCharAt删除单个字符
如果要清空缓冲区,就重新创建对象:sb1 = new StringBuffer();

StringBuffer的替换功能replace、反转功能reverse


运行结果:1123

StringBuffer的截取功能subString

返回的是string或者字符数组,不是原本的stringbuffer对象(原来的stringbuffer不改变)
(可以用于StringBuffer转为String,或者用toString)

StringBuffer与StringBuilder的区别

他们都是可变的字符序列。
StringBuilder线程不安全(不能安全使用多线程),但是效率高(从JDK1.5开始)
Stringbuffer线程安全,但是效率低(从JDK1.0开始)

续篇:https://blog.csdn.net/weixin_43580841/article/details/107367988
JDK API常见对象 Arrays类、Integer类、String的转换、自动装箱、Pattern类、正则表达式、Math类、random类、BigInteger类、Date、Calendar日历

猜你喜欢

转载自blog.csdn.net/weixin_43580841/article/details/107336279