Java学习笔记-Day18 Java Deprecated注解、Random类、String相关的类
一、Deprecated注解
@Deprecated:表示此方法已废弃,暂时可用,但以后此类和此方法都不会再更新,后期的版本可能会删除,建议不要调用此方法。此注解可用在类上、方法上、属性上。
二、Random类
Random类是用来生成一个伪随机数的类,这个类在java.util包中。在使用Random类时,需要导入java.util.Random,即import java.util.Random;
。
import java.util.Random;
public class Demo{
public static void main(String[] args) {
// 产生1到10范围内的随机数
Random r = new Random();
int num = r.nextInt(10)+1;
}
}
三、String相关的类
1、String类
Java语言使用Unicode字符集,默认使用UTF-8格式,因此Java的字符串也使用UTF-8编码。
Java语言中的字符串实际上是使用字符型数组存储的。
String str1 = "abc";
等同于char data[] = {'a', 'b', 'c'};
String str1 = new String(data);
1.1、String类的特性
(1)不可变性,一个字符串被创建后就不能被修改。
//str1的指向对象为"abc"
String str1 = "abc";
//并不是将str1中的字符串"abc"改成了"def",
//而是将str1的指向对象"abc"从变成为"def"。
str1 = "def";
(2)直接赋值,凡是通过直接赋值方式得到的字符串,都存储在常量池中,常量池的对象是可以共享的。字符串在直接赋值的时候会先到常量池中找是否已经存在该字符串对象,如果存在直接指向这个字符串对象,如果不存在,则在常量池中创建该字符串对象。
public class Demo{
public static void main(String[] args) {
String str1 = "abc";
String str2 = "abc";
//str1和str2指向同一个对象,它们的内存地址值相同
System.out.println(str1 == str2);//true
}
}
(3)使用new运算符创建字符串对象,则是在堆中创建一个新的字符串对象。
public class Demo{
public static void main(String[] args) {
//在堆中创建一个新的字符串对象
String str1 = new String("abc");
//在堆中创建一个新的字符串对象
String str2 = new String("abc");
//str1和str2不是指向同一个对象,它们的内存地址值不相同
System.out.println(str1 == str2);//false
}
}
1.2、String类的方法
(1)子字符串截取的相关方法
int indexOf(int ch)
:返回字符串中字符ch第一次出现的位置索引值。
int indexOf(int ch, int fromIndex)
:返回从fromIndex索引开始,第一次搜索到ch的索引位置。
int indexOf(String str)
:返回字符串中子串str第一次出现的位置索引值。
int indexOf(String str, int fromIndex)
:返回从fromIndex索引开始,第一次搜索到子串str的索引位置。
int lastIndexOf(int ch)
:返回字符串中字符ch最后一次出现的位置索引值。
int lastIndexOf(int ch, int fromIndex)
:返回从fromIndex索引开始,最后一次搜索到ch的索引位置。
int lastIndexOf(String str)
:返回字符串中子串str最后一次出现的位置索引值。
int lastIndexOf(String str, int fromIndex)
:返回从fromIndex索引开始,最后一次搜索到子串str的索引位置。
char charAt(int index)
:返回指定索引位置的字符。
String substring(int beginIndex)
:返回一个字符串,该字符串是此字符串的子字符串。
String substring(int beginIndex, int endIndex)
:返回一个字符串,该字符串是此字符串的子字符串。
(2)类型转换的相关方法
① 通过 valueOf 静态方法将其他类型转换成String类
static String valueOf(boolean b)
: 将布尔类型参数以字符串类型返回。
static String valueOf(char c)
:将字符类型参数以字符串类型返回。
static String valueOf(char[] data)
:将字符数组类型参数以字符串类型返回。
static String valueOf(char[] data, int offset, int count)
:将字符数组类型参数的一部分以字符串类型返回。
static String valueOf(double d)
:将double类型参数以字符串类型返回。
static String valueOf(float f)
:将float类型参数以字符串类型返回。
static String valueOf(int i)
:将int类型参数以字符串类型返回。
static String valueOf(long l)
: 将long类型参数以字符串类型返回。
static String valueOf(Object obj)
:将引用类型参数以字符串类型返回,实际调用toString方法。
② 通过有参的构造方法将其他类型转换成String类
char[] data = {'a','b','c'};
String str = new String(data);
(3)其他的方法
boolean equals(Object anObject)
:将此字符串与指定对象进行比较,如果对象为字符串,则比较内容是否相等。
int compareTo(String anotherString)
:比较两个字符串的字典顺序,返回值为正数,表示此字符串大于参数的字符串。
boolean endsWith(String suffix)
:判断一个字符串是否以参数suffix结尾。
byte[] getBytes()
:将字符串转换为byte数组。
byte[] getBytes(Charset charset)
:将字符串用指定的编码格式转换为byte数组。
int length()
:返回字符串的长度。
boolean startsWith(String prefix)
:判断字符串是否以参数prefix开头。
boolean startsWith(String prefix, int toffset)
:判断字符串中从toffset个字符开始后的子串中,是否以参数prefix开头。
String trim()
:将字符串的首尾的空格去掉。
String toLowerCase()
:将所有在此字符串中的字母全部小写。
String toUpperCase()
:将所有在此字符串中的字母全部大写。
char[] toCharArray()
:将此字符串转换为新的字符数组。
2、StringBuilder类
2.1、StringBuilder类的特性
(1)可变的字符序列,StringBuilder就像一个可以进行修改的String。通过append()方法将指定的字符串添加到此字符序列的后面。
(2)非线程安全,线程不同步。
(3)只能通过使用new运算符创建对象。
3、StringBuffer类
3.1、StringBuffer类的特性
(1)可变的字符序列,StringBuffer就像一个可以进行修改的String。通过append()方法将指定的字符串添加到此字符序列的后面。
(2)线程安全,线程同步。
(3)只能通过使用new运算符创建对象。
五、反汇编
在dos命令窗口中,进入字节码文件所在的目录中,字节码文件一般存放在项目目录的bin目录中,通过命令 javap -c 类名
可进行反汇编操作。