文章目录
- String类(java.lang)
- static关键字
- Arrays类(java.uitl)
- Math类(java.lang)
String类(java.lang)
java.lang.String 类代表字符串。
特征:
- 字符串不变:字符串的值在创建后不能被更改。
- 因为String对象是不可变的,所以它们可以被共享。
- “abc” 等效于 char[] data={ ‘a’ , ‘b’ , ‘c’ } 。
public static void main(String[] args) {
String str1 = "abc";
String str2 = "abc";
char[] chars = {'a','b','c'};
String str3 = new String(chars);
System.out.println(str1 == str2);
System.out.println(str3);
}
String类的底层是靠字符数组实现的。
常用方法:
- public boolean equals (Object anObject) :将此字符串与指定对象进行比较。
- public boolean equalsIgnoreCase (String anotherString) :将此字符串与指定对象进行比较,忽略大小写。
public static void main(String[] args) {
String a = "hello";
String b = "hello";
String c = "Hello";
System.out.println(a.equals(b));
System.out.println(b.equals(c));
System.out.println(a.equalsIgnoreCase(c));
}
这里我们可以看到,a字符串和b字符串是相等的,b字符串和c字符串是不相等的,但是当我们使用equalsIgnoreCase()方法来进行比较的时候,a和c比较的结果就是相等的。这表示equals()比较的时候不忽略大小写,equalsIgnoreCase 比较的时候忽略大小写。
- public int length () :返回此字符串的长度。
- public String concat (String str) :将指定的字符串连接到该字符串的末尾。
- public char charAt (int index) :返回指定索引处的 char值。
- public int indexOf (String str) :返回指定子字符串第一次出现在该字符串内的索引。
- public String substring (int beginIndex) :返回一个子字符串,从beginIndex开始截取字符串到字符
串结尾。 - public String substring (int beginIndex, int endIndex) :返回一个子字符串,从beginIndex到
- endIndex截取字符串。含beginIndex,不含endIndex。
public static void main(String[] args) {
String str1 = "xiaohu";
String str2 = " love study";
System.out.println("str1的长度:" + str1.length());
String str3 = str1.concat(str2);
System.out.println("str1连接str3后的结果:" + str3);
System.out.println("获取指定索引的值:" + str1.charAt(0));
String str4 = str1.substring(4);
String str5 = str2.substring(6,8);
System.out.println("返回从开始索引到字符串结尾的值:" + str4);
System.out.println("返回指定开始索引到结尾索引的值:" + str5);
}
注意:
字符串读取索引的时候是从第0个索引开始,并且当我们使用substring()方法时,是含头不含尾的,例如str2的值为” love study“,我们的str5是从6号索引开始一直到8号索引,即从0开始数,一直到s是第6号索引(这里要注意空格符号也要算作一位),第八号是u,但是根据含头不含尾的规则,我们可以看到输出的结果为st。
- public char[] toCharArray () :将此字符串转换为新的字符数组。
- public byte[] getBytes () :使用平台的默认字符集将该 String编码转换为新的字节数组。
- public String replace (CharSequence target, CharSequence replacement) :将与target匹配的字符串使用replacement字符串替换。
public static void main(String[] args) {
String str = "xiaohu love code";
char[] charArray = str.toCharArray();
for (int i = 0; i < charArray.length; i++) {
System.out.print(charArray[i] + ",");
}
System.out.println();
System.out.println("=======================");
byte[] bytes = str.getBytes();
for (int i = 0; i < bytes.length; i++) {
System.out.print(bytes[i] + ",");
}
System.out.println();
System.out.println("=======================");
String str1 = str.replace("love", "like");
System.out.println(str1);
}
- public String[] split(String regex) :将此字符串按照给定的regex(规则)拆分为字符串数组。
public static void main(String[] args) {
String str1 = "a111,b222,c333";
String[] split = str1.split(",");
for (int i = 0; i < split.length; i++) {
System.out.println(split[i]);
}
}
这里String regex参数表示的是分割规则,我们定义的字符串是“a,b,c”是以’,‘进行分割,因此我们可以获取到一个字符串数组,每个数组里面存储的就是以逗号分割的每个字符串。
static关键字
以用来修饰的成员变量和成员方法,被修饰的成员是属于类的,而不是单单是属于某个对象的。
- 类变量:使用 static关键字修饰的成员变量。
举例:
企业员工报到。现在想为每一位新来报到的员工编号(eid),从第一名员工开始,eid为1000,以此类推。员工号必须是唯一的,连续的,并且与企业的人数相符,这样以便知道,要分配给下一名新员工的员工号是多少。这样我们就需要一个变量,与单独的每一个员工对象无关,而是与整个企业员工数量有关。
public class Emp {
private String name;
private int age;
private int eid;
private static int EmpNum = 1000;
public Emp(String name, int age) {
this.name = name;
this.age = age;
this.eid = EmpNum++;
}
@Override
public String toString() {
return "Emp{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
public static void main(String[] args) {
Emp emp1 = new Emp("小明", 20);
Emp emp2 = new Emp("小红", 21);
System.out.println("员工号" + emp1.eid + ":" + emp1);
System.out.println("员工号" + emp2.eid + ":" + emp2);
}
}
- 类方法:使用 static关键字修饰的成员方法,习惯称为静态方法。
注意点: - 静态方法可以直接访问类变量和静态方法。
- 静态方法不能直接访问普通成员变量或成员方法。反之,成员方法可以直接访问类变量或静态方法。
- 静态方法中,不能使用this关键字。
static修饰的成员可以并且建议通过类名直接访问。
静态原理图解:
静态代码块:
定义在成员位置,使用static修饰的代码块{ }。
- 位置:类中方法外。
- 执行:随着类的加载而执行且执行一次,优先于main方法和构造方法的执行。
import java.util.ArrayList;
public class Student {
private String name;
private int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
private static ArrayList<Student> arrayList;
static {
Student stu1 = new Student("小胡", 18);
Student stu2 = new Student("小潘", 19);
arrayList = new ArrayList<>();
arrayList.add(stu1);
arrayList.add(stu2);
}
public static void main(String[] args) {
for (int i = 0; i < arrayList.size(); i++) {
System.out.println(arrayList.get(i));
}
}
}
Arrays类(java.uitl)
java.util.Arrays 此类包含用来操作数组的各种方法
- public static String toString(int[] a) :返回指定数组内容的字符串表示形式。
- public static void sort(int[] a) :对指定的 int 型数组按数字升序进行排序。
public static void main(String[] args) {
int[] arr = {3,2,1,8,5,6,10,9};
String str = Arrays.toString(arr);
System.out.println(str);
Arrays.sort(arr);
for (int i = 0; i < arr.length; i++){
System.out.print(arr[i] + ",");
}
}
Arrays工具类对开发有很大的帮助,感兴趣的小伙伴可以深入了解一下其中的使用技巧。
Math类(java.lang)
- public static double abs(double a) :返回 double 值的绝对值。
- public static double ceil(double a) :返回大于等于参数的最小的整数。(向上取整)
- public static double floor(double a) :返回小于等于参数最大的整数。 (向下取整)
- public static long round(double a) :返回最接近参数的 long。 (相当于四舍五入方法)
代码示例:
public static void main(String[] args) {
double x = - 1.389;
double xabs = Math.abs(x);
System.out.println("xabs = " + xabs); // 1.389
xabs = Math.ceil(xabs);
System.out.println("xabs = " + xabs); // 2.0
xabs = Math.floor(1.13);
System.out.println("xabs = " + xabs); // 1.0
xabs = Math.round(5.31);
System.out.println("xabs = " + xabs); // 5.0
}