Java中String类的构造⽅法String类的构造⽅法
String代表字符串,字符串是由多个字符组成的⼀串数据,字符串可以看成字符数组,
1.字符串字⾯值“abc”也可以看成⼀个字符串的对象
2.字符串是常量,⼀旦被创建,就不能改变
3.字符串可以看做是⼀个长度固定的有序字符序列,每个组成的字符编有索引从0开始
常见的构造⽅法
public String():空构造
public String(byte[] bytes):把字符串数组反转成字符串
public class MyTest {
public static void main(String[] args) {
byte[] b={'2','2','4','6'};
String s = new String(b);
System.out.println(s);
}
}
把字符数组的⼀部分转成字符串
public class MyTest {
public static void main(String[] args) {
char[] dat={'a','d','c'};
String s = new String(dat,0,1);
System.out.println(s);
}
}
public String ( String original):把字符常量值转成字符串
String的特点⼀旦被创建就不能改变
因为字符串的值是在⽅法区的常量池中划分空间分配地址值
a:如何理解这句话
String s = “hello” ;
s = “world” + “java”; 问s的结果是多少?
他的内存图
String s = new String(“hello”)和String s = “hello”;的区别
1.⾸先,通过main()⽅法进栈。
2.然后再栈中定义⼀个对象s1,去堆中开辟⼀个内存空间,将内存空间的引⽤赋值给s1,“hello”是常量,然后去字符串常量池 查看是否有hello字符串对象,没有的话分配⼀个空间存放hello,并且将其空间地址存⼊堆中new出来的空间中。
3.在栈中定义⼀个对象s2,然后去字符串常量池中查看是否有”hello”字符串对象,有,直接把”hello”的地址赋值给s2.
4.即s1中存的是堆中分配的空间,堆中分配的空间中存的是字符串常量池中分配空间存放”hello”的空间的地址值。⽽s2中之间存的是字符串常量池中分配空间存放”hello”的空间的地址值。
5.由于s1与s2中存放的地址不同,所以输出false。因为,类String重写了equals()⽅法,它⽐较的是引⽤类型的 的值是否相等,所以输出true。即结果为false、true
String类的判断功能
public boolean equals(Object obj): ⽐较字符串的内容是否相同,区分⼤⼩写
public boolean equalsIgnoreCase(String str): ⽐较字符串的内容是否相同,忽略⼤⼩写
public boolean contains(String str): 判断字符串中是否包含传递进来的字符串
public boolean startsWith(String str): 判断字符串是否以传递进来的字符串开头
public boolean endsWith(String str): 判断字符串是否以传递进来的字符串结尾
public boolean isEmpty(): 判断字符串的内容是否为空
例如
public class MyTest2 {
public static void main(String[] args) {
String str="sui";
String str1="hello";
String str2="HELLO";
boolean equals = str.equals(str1);
boolean b = str1.equalsIgnoreCase(str2);
boolean u = ains("u");
boolean h = str1.startsWith("h");
boolean l = dsWith("o");
boolean empty = str1.isEmpty();
System.out.println(equals);
System.out.println(b);
System.out.println(u);
System.out.println(h);
System.out.println(l);
System.out.println(empty);
}
}
输出结果:
false
true
true
true
true
false
public int length(): 获取字符串的长度。
public char charAt(int index): 获取指定索引位置的字符
public int indexOf(int ch): 返回指定字符在此字符串中第⼀次出现处的索引。
public int indexOf(String str): 返回指定字符串在此字符串中第⼀次出现处的索引。
public int indexOf(int ch,int fromIndex):返回指定字符在此字符串中从指定位置后第⼀次出现处的索引。
public int indexOf(String str,int fromIndex): 返回指定字符串在此字符串中从指定位置后第⼀次出现处的索引。public String substring(int start): 从指定位置开始截取字符串,默认到末尾。
public String substring(int start,int end): 从指定位置开始到指定位置结束截取字符串。
例如:
public class MyTest3 {
public static void main(String[] args) {
String str="我是这条街最靓的仔";
int length = str.length();
System.out.println(length);
char c = str.charAt(str.length() - 1);
System.out.println(c);
int i = str.indexOf("条");
System.out.println(i);
String substring = str.substring(1, 4);
System.out.println(substring);
}
}
输出结果:
9
3
是这条
public byte[] getBytes(): 把字符串转换为字节数组。
public char[] toCharArray(): 把字符串转换为字符数组。
public static String valueOf(char[] chs): 把字符数组转成字符串。
public static String valueOf(int i): 把int类型的数据转成字符串。
注意:String类的valueOf⽅法可以把任意类型的数据转成字符串。
public String toLowerCase(): 把字符串转成⼩写。
public String toUpperCase(): 把字符串转成⼤写。
public String concat(String str): 把字符串拼接。
例如:下⾯程序就是对这些⽅法的应⽤
String str="我喜欢你";
byte[] bytes = Bytes();
char[] chars = CharArray();
System.out.println(bytes);
System.out.println(chars);
int n=8478;
double s1=2763.332;
String s3 = String.valueOf(s1);
String s = new String(String.valueOf(n));
System.out.println(s);
String str1="GHJKJjjooHUjijh";
String s11 = UpperCase();
String s2 = LowerCase();
String concat = at(str1);
System.out.println(s1);
System.out.println(s2);
System.out.println(concat);
System.out.println(s3);
}
}
输出结果:
[B@1540e19d
我喜欢你
8478
2763.332
ghjkjjjoohujijh
我喜欢你GHJKJjjooHUjijh
2763.332
public String replace(char old,char new) 将指定字符进⾏互换
public String replace(String old,String new) 将指定字符串进⾏互换
public String trim() 去除两端空格
String的按字典顺序⽐较两个字符串及案例演⽰
public int compareTo(String str) 会对照ASCII 码表 从第⼀个字母进⾏减法运算 返回的就是这个减法的结果如果前⾯⼏个字母⼀样会根据两个字符串的长度进⾏减法运算返回的就是这个减法的结果
如果连个字符串⼀摸⼀样 返回的就是0
public int compareToIgnoreCase(String str) 跟上⾯⼀样 只是忽略⼤⼩写的⽐较
例如:下⾯是对⽅法的应⽤
public class MyTest3 {
public static void main(String[] args) {
String str="我喜欢杜兰特".replace("我","你");
System.out.println(str);
String str1="我喜欢詹姆斯".replace("詹姆斯","欧⽂");
System.out.println(str1);
String str2="  sgh    ".trim();
System.out.println(str2);
int str3="a"pareTo("A");
System.out.println(str3);
int str4="b"pareToIgnoreCase("B");
System.out.println(str4);
}
}
输出结果:
你喜欢杜兰特
我喜欢欧⽂
sgh
32
String类功能的应⽤
案例⼀: 需求:模拟登录,给三次机会,并提⽰还有⼏次。
public class MyTest3 {
public static void main(String[] args) {
String username = "张三";
int password = 123456;
Scanner sc = new Scanner(System.in);
int n = 3;
while (n > 0) {
System.out.println("请输⼊你的⽤户名");
String s = sc.nextLine();
System.out.println("请输⼊你的密码");
String i = sc.nextLine();
if (s.equals(username) && i.equals(password)) {
System.out.println("登录成功");
break;
} else {java replace方法
n--;
if (n == 0) {
System.out.println("次数已⽤完");
} else {
System.out.println("你输⼊有误,你还有" + n + "次机会");
}
}
}
}
}
案例⼆:需求:统计⼀个字符串中⼤写字母字符,⼩写字母字符,数字字符出现的次数。(不考虑其他字符)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。