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方法:
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类的构造方法
- 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):把字符串拼接。
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/107336279
上一篇: 实现多线程的同步
推荐阅读
-
JDK API常见对象:Object类、Scanner类、String类、StringBuffer类
-
java常用类的使用、String类、StringBuffer类、正则表达式、基本数据类型的包装类、Object类、Math类
-
JDK API常见对象:Object类、Scanner类、String类、StringBuffer类
-
java笔记之Object,String,StringBuilder,StringBuffer,时间类和日期类以及包装类
-
java常用类的使用、String类、StringBuffer类、正则表达式、基本数据类型的包装类、Object类、Math类
-
java笔记之Object,String,StringBuilder,StringBuffer,时间类和日期类以及包装类