初识Java语言——String类以及字符串与字符和字符数组之间的转换

初识Java语言——String类以及字符串与字符和字符数组之间的转换

一、String类
String类是和字符串相关的封装类。
1、什么是字符串?
在C语言中:用“”括起来的由字符构成的字串;末尾‘\0’结尾。
在Java中没有‘\0’结尾这一说。
2、存储位置在哪?
堆当中的字符串常量池,且每个字符串在常量池中都是唯一的。
3、如何声明一个字符串?

String str="hahahaha";
/
String str1=new String("hahahaha");

char[]c={
    
    'a','b','c'};
String str2=new String(c);

(主要用以上三种方式进行声明一个字符串。)
4、字符串可以被改变吗?
不能,如果非要改变,则必须采用反射去解决。


下面引入两个字符串有关的题:
1、指出下列程序运行的结果()

public class Example{
    
    
    String str = new String("good");
    char[ ] ch = {
    
     'a' , 'b' , 'c' };
    public static void main(String args[]){
    
    
        Example ex = new Example();
        ex.change(ex.str,ex.ch);
        System.out.print(ex.str + " and ");
        System.out.print(ex.ch);
    }
    public void change(String str,char ch[ ]){
    
    
        str = "test ok";
        ch[0] = 'g';
    }
}

作业内容
A.good and abc
B.good and gbc
C.test ok and abc
D.test ok and gbc
乍一看选择D,但是正确答案选择B,为什么呢?
在这里插入图片描述
因为Change中的str是局部变量,在传参时只是让str的指向变为指向ex的str所指向的对象,而改变时之改变了局部变量str的指向,使其指向“text ok”,而ex的str的指向并没有变。所以答案选B。
2、下面代码将输出什么内容:()

public class SystemUtil{
    
    
	public static boolean isAdmin(String userId){
    
    
		return userId.toLowerCase()=="admin";
	}
	public static void main(String[] args){
    
    
		System.out.println(isAdmin("Admin"));
	}
}

作业内容
A.true
B.false
C.1
D.编译错误
正确答案选B。
String类的toLowerCase方法是将字符串中的大写字母全变为小写字母,并且返回一个new对象,所以new的对象的地址是和“admin”是不同的,后者在字符串常量池,前者不在字符串常量池,“==”是比较值的,明显地址值不相同,所以为false。
二、字符串与字符和字符数组之间的转换
1、字符串变字符:

String str="hahahaha";
char c=str.charAt(0);//即根据下标转换

2、字符串变字符数组:

String str="hahahaha";
char[]c=str.toCharArray();

3、字符数组变字符串:

char[]c={
    
    'a','b','c'};
String str=new String(c);
char[]c={
    
    'a','b','c'};
String str=String.valueOf(c);
String str2=String.copyValueOf(c);

在学Java的路上坚定的走下去,一起加油!

猜你喜欢

转载自blog.csdn.net/qq_45841205/article/details/112826304