String类
1. String类代表字符串,java中所有的字符串都被看成String类的实例(对象)
2. 特点:
a) 一个字符串的值在创建后不能被改变
例如:String s1 = “abc”; s1 = “123”;
实际上,”abc”和“123”是两个字符串,s1 = “123”执行后,s1指向“123”这个字符串的地址,而不是把“123”这个值赋给s1
b) String对象是不可改变的,但是可以被共享
例如:String s1 = “123”; String s2 = “123”;
两个字符串变量指向同一地址,也就是两个“123”是同一个,被两个变量共享
c) 字符串等效于字符数组,
例如:
String str = "abc";
相当于:
char data[] = {'a', 'b', 'c'};
String str = new String(data);
// String底层是靠字符数组实现的。
3. 使用:(类的使用,导包、创建对象、引用)
a) 导包:但是String类不需要导包,
b) 创建对象:
String str = new String();无参的构造方法,
// 通过字符数组构造
char chars[] = {'a', 'b', 'c'};
String str2 = new String(chars);
// 通过字节数组构造
byte bytes[] = { 97, 98, 99 };
String str3 = new String(bytes);
4. 常用方法:
1. 获取功能:
String str = "abcd";
//1.获取长度,返回int类型
int num = str.length();
System.out.println(num);//4
//2.获取指定索引的字符,返回char类型
char ch = str.charAt(3);
System.out.println(ch);//d
//3.获取指定字符的索引,返回int类型
int a = str.indexOf('d');
System.out.println(a);//3
//4.获取字符串的一部分 返回String类型
String str1 = str.substring(1);//从指定索引开始
String str2 = str.substring(1,3);//从指定索引开始,到结束索引结束,不包
含结束索引
System.out.println(str1);//bcd
System.out.println(str2);//bc
//5.在字符串后添加字符串,相当于+的功能,返回String类型
str1 = str.concat("efg");
System.out.println(str1);//abcdefg
2. 判断功能:
public static void main(String[] args) {
String str1 = "abcd";
String str2 = "abcd";
String str3 = "AbCd";
String str4 = new String("abcd");
String str5 = new String("AbCd");
//1.判断相等,区分大小写
boolean isTrue = str1.equals(str2);
System.out.println(isTrue);//true
//2.判断相等,不分大小写
isTrue = str1.equalsIgnoreCase(str3);
System.out.println(isTrue);//true
}
3. 转换功能:
public static void main(String[] args) {
String str = "abcdefg";
//1.转换成字符数组,返回char[]类型
char[] chs = str.toCharArray();
System.out.println(Arrays.toString(chs));// [a, b, c, d, e, f, g]
//2.转换成字节数组,返回byte[]
byte[] by = str.getBytes();
System.out.println(Arrays.toString(by));
// [97, 98, 99, 100, 101, 102, 103]
//3.替换指定字符,返回String类型
String str1 = str.replace('a','z');
System.out.println(str1);// zbcdefg
}
4. 分割功能:
public static void main(String[] args) {
String str = "abcdefg";
//从指定字符位置分割字符串,将分割的内容分成两部分存放在
字符串数组中
// 返回String[]类型
String[] strs = str.split("c");
System.out.println(strs[0]);//是ab
System.out.println(strs[1]);//是defg
}
static关键字
1. static,静态的,
可以用来修饰成员变量和成员方法,被修饰的成员属于类,可以通过类名直接调用,但是不属于某个对象,不能通过对象调用
2. 静态变量:
a) 被static修饰的成员变量是属于类的,是类变量,该类的每个对象都共享这个类变量,都可以改变类变量的值,也可以不创建对象更改类变量的值,类名.类变量名
b) 定义格式:static 数据类型 变量名
3. 静态方法
d) 被static修饰的成员方法,成为类方法,也叫静态方法。不需要创建对象就可以调用的方法
e) 定义格式:
修饰符 static 返回值类型 方法名 (参数列表){
// 执行语句
}
f) 调用:
被static修饰的成员可以并且建议通过类名直接访问。虽然也可以通过对象名访问静态成员,原因即多个对象均属于一个类,共享使用同一个静态成员,但是不建议,会出现警告信息。 调用格式:类名.静态方法名(参数);
4. 静态代码块:
g) 定义在类中方法外
h) 随着类的加载执行一次,且只执行一次,优先于main方法执行
5. 静态方法调用的注意事项:
i) 静态方法可以直接访问类变量和静态方法。
j) 静态方法不能直接访问普通成员变量或成员方法。反之,成员方法可以直接访问类变量或静态方法。
k) 静态方法中,不能使用this关键字。
Arrays类
Arrays类包含操作数组的方法,均为静态方法,使用类名直接调用
1. 将数组转换成字符串:
Arrays.toString(数组名)
2. 将数组升序排序
Arrays.sort(数组名)
Math类
包含数学计算的类,比如计算绝对值、四舍五入等计算的类
1. 求绝对值
Math.abs(数值)
2. 四舍五入
Math.round(数值)
3. 取整
a) 向上取整,取一个整数 必须大于原值
Math.ceil(数值)
b) 向下取整,取一个整数,必须小于原值
Math.floor(数值)