java17

string 类
字符串常量池
public boolean equal ( Object obj )
public int length ( ) 方法
分割字符串
SubString 方法
Arrays 类
StaticFiled 方法
StaticMethod 方法
1、string
String 类代表字符串。
Java程序中所有字符串字面值(如:“abc”)都作为此类的实现。也就是说,“abc"都是String 类的对象。
字符串的特点:
1.字符串内容永远不可变(重点)
2.字符串可以共享使用。
3.字符串效果上是相当于一个char[],但是实际底层存储的是byte[]。
常用的三种构造方法:
1.public String() 创建一个空白的字符串,不包含任何内容。
2.public String(char[] array) 根据字符数组来创建字符串。
3.public String(byte[] array) 根据字节数组来创建字符串。
最直接的方式:String str = “class5”;
例一:
运行代码如下:
package demo01;
public class Demo01String {
public static void main(String[] args) {
String str1 = new String();
System.out.println(“第一个字符串:”+str1);
System.out.println(”");
char[] chararray = new char[10];
System.out.println(chararray);
String str2 = new String(chararray);
System.out.println(str2);
System.out.println("
");
byte[] bytearray = {10,20,30};
System.out.println(chararray);
String str3 = new String(chararray);
System.out.println(str3);
//String str4 = new
String str4 = “class5”;
System.out.println(str4);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
运行结果:
2、字符串常量池
字符串常量池
int a = 5;
int b = 6;
对于基本类型 == 比较的是值
对于引用类型 == 比较的是地址值
例二:
运行代码如下:
package demo01;
public class Demo02StringPool {
public static void main(String[] args) {
String str1 = “abc”;
String str2 = “abc”;
System.out.println(str2);
char[] chararray = {‘a’,‘b’,‘c’};
String str3 = new String(chararray);
System.out.println(str1 == str2);//第一个和第二个的地址是一样的
System.out.println(str1 == str3);
System.out.println(str2 == str3);
str2 = “hjsdkfbasjfbasj”;
System.out.println(str2);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
运行结果:
3、public boolean equal(Object obj) 方法
public boolean equal(Object obj)
说明:
1.这个方法具有对称性 a.equal(b) b.equal(b)
2.但建议写成"Why".equals(str1)
例三:
运行代码如下:
package demo02;
public class Demo01StringEquals {
public static void main(String[] args) {
String str1 = “Why”;
String str2 = “Why”;
System.out.println(str2);
char[] chararray = {‘W’,‘h’,‘y’};
String str3 = new String(chararray);

System.out.println(str1.equals(str2));
System.out.println(str2.equals(str3));
System.out.println(str1.equals(str3));

System.out.println(str1.equals("Why"));

System.out.println("Why".equals(str1));
System.out.println("====================");
String str4 = null;
// System.out.println(str1.equals("fdnkfn"));
System.out.println("Why".equals(str4));
System.out.println("====================");

String str5 = "why";
// System.out.println(str1.equals("fnjdjsk"));
System.out.println("why".equals(str5));
System.out.println("====================");

System.out.println("Why");

}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
运行结果:
4、public int length ( ) 方法
例四:
运行代码如下:
package demo02;
//获得
public class Demo02StringGet {
public static void main(String[] args) {
//1.字符串长度
int length = “zxcvbnmasdfghjkl”.length();
System.out.println(“字符串长度”+length);

	//2.字符串拼接
	String str1 = "zhang";
	String str2 = "yanju";
	String str3 = str1.concat(str2);
	System.out.println(str1);//zhang
	System.out.println(str2);//yanju
	System.out.println(str3);//zhangyanju  重新创建了一个字符串,并不是在原来的基础上进行修改。
	//3.获得指定索引位置的单个字符
	char ch = "Heello".charAt(4);
	System.out.println("0号索引位置的字符是:"+ch);
	
	//查找某个字符串第一次出现的位置
	String origan1= "Helloword";
	int index = origan1.indexOf("llo");
	System.out.println(index);

	System.out.println(origan1.indexOf("Hello"));
}

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
运行结果:

5、分割字符串

分割字符串
public String[] split(String)
例五:
运行代码如下:
package demo02;
public class Demo03StringSplit {
public static void main(String[] args) {
String str1 = “aa bb cc”;
String[] array1 = str1.split(" ");
for(int i=0;i<array1.length;i++) {
System.out.println(array1[i]);
}
}
}
1
2
3
4
5
6
7
8
9
10
运行结果:

6、SubString 方法

例六:
运行代码如下:
package demo02;
/*

  • public string substring (index)

  • public string substring (int begin , int end)
    */
    public class Demo04SubString {
    public static void main(String[] args) {

     String str1="HelloClass5";
     String str2=str1.substring(5);
     System.out.println(str1);
     System.out.println(str2);
     
     String str3=str1.substring(2,5);
     System.out.println(str3);
    

    }
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    运行结果:

7、Arrays 类
java.util.Arrays 是一个与数组相关的工具类,里面提供了大量的静态方法。
备注:
如果是数值,默认按升序 从小到大
如果是字符串,sort 默认按字母升序
例七:
运行代码如下
package demo03;
import java.util.Arrays;
public class Demo01Arrays {
public static void main(String[] args) {
int[] intArray = {10,20,30};
System.out.println(intArray);
String intStr = Arrays.toString(intArray);
System.out.println(intStr);

int[] array1 = {1,2,3,4,5};
System.out.println(Arrays.toString(array1));
Arrays.sort(array1);
System.out.println(Arrays.toString(array1));

String[] array2 = {"zzz","xxx","ccc"};
Arrays.sort(array2);
System.out.println(Arrays.toString(array2));

}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
运行结果:

Math
运行代码如下:

package demo03;

public class Demo02Math {
public static void main(String[] args) {
//去绝对值
System.out.println(Math.abs(3.14));
System.out.println(Math.abs(0));
System.out.println(Math.abs(-3.14));
System.out.println("=================");

	//向上取整
	System.out.println(Math.ceil(3.91));
	System.out.println(Math.ceil(3.5));
	System.out.println(Math.ceil(3.0001));
	System.out.println("=================");
	
	//向下取整
	System.out.println(Math.floor(3.91));
	System.out.println(Math.floor(3.5));
	System.out.println(Math.floor(3.0001));
	System.out.println("=================");
	
	System.out.println(Math.round(20.4));
	System.out.println(Math.round(20.5));
}

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
运行结果:

8、StaticFiled 类

①student
package demo04;

public class Student {
private int id;
private String name;
private int age;

private static String room;

public Student(){
	
}

public Student(String name, int age) {
	super();
	this.name = name;
	this.age = age;
}

public Student(int id, String name, int age, String room) {
	super();
	this.id = id;
	this.name = name;
	this.age = age;
	this.room = room;
}
public int getId() {
	return id;
}

public void setId(int id) {
	this.id = id;
}

public String getName() {
	return name;
}

public void setName(String name) {
	this.name = name;
}

public static String getRoom() {
	return room;
}

public static void setRoom(String room) {
	Student.room = room;
}

public int getAge() {
	return age;
}

public void setAge(int age) {
	this.age = age;
}

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
package demo04;

  • 如果一个成员变量用static关键字修饰,那么这个内容不再属于对象自己,而是属于类的。所以凡是本类的对象,都共享一份。
    public class Demo01StaticFiled {
    public static void main(String[] args) {
    Student one = new Student(“timi”,19);
    one.setRoom(“3306教室”);
    System.out.println(one.getName()+" “+one.getAge()+” "+one.getRoom());

     Student two = new Student("bg",18);
     System.out.println(two.getName()+"  "+two.getAge()+"  "+two.getRoom());
    

    }
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    运行结果:
    9、StaticMethod 方法
    ①Myclass

package demo04;

public class MyClass {
int num;
static int numstatic;

public void method() {
	System.out.println("这是成员方法");
}
public static void methodStatic() {
	System.out.println("这是静态方法");
}

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
如果用static关键字修饰成员方法 , 变成了静态方法,静态方法不属于对象,属于类。
可以通过对象来调用 也可以通过类直接调用
package demo04;
public class Demo02StaticMethod {
public static void main(String[] args) {
MyClass obj = new MyClass();
obj.method();//普通方法,必须通过对象类调用

	obj.methodStatic();//可以通过对象类调用      正确 不推荐
	MyClass.methodStatic();//可以通过类直接调用  正确 推荐
}

}
1
2
3
4
5
6
7
8
9
10

上一篇:Java17 新特性确定,Java之父:终于可以和一个长达25年的漏洞说再见了


下一篇:什么?ZGC在Java17中没有更新了