在 Java 语言中,字符串都被设计成「不可变」的类型,即无法直接修改字符串的某一位字符,需要新建一个字符串实现
StringBuilder
字符是用单引号括起来的单个字母,在Java中,表示字符的数据类型为char。一个字符在内存中占16位大小的空间(2个字节)。在编写程序的多数时候,使用字符值,通常会使用原始的char类型。例如:
char ch ='a'; //创建一个名为ch的字符并赋值
char uniChar='\u039a'; //创建大写的希腊omega字符的Unicode编码
char [] charArray={'h','e','l','l','o'}; //创建一个字符的数组charArray并赋值
char sex='男'; //创建一个名为sex的字符并赋值
在实际开发过程中,我们经常会遇到需要使用对象,而不是内置数据类型的情况。为了解决这个问题,Java语言为内置数据类型char提供了包装类Character类,提供了一个“包装(wrapper)器”类,用来将char类型的字符“包装”为一个Character对象。可以使用Character构造器创建一个Character对象,例如:
Character sex=new Character('男');
Java编译器会根据需要自动创建一个Character对象。将一个char类型的参数传递给需要一个Character类型参数的方法时,那么编译器会自动地将char类型参数转换为Character对象。 这种特征称为装箱,反过来称为拆箱
Character ch = 'a'; // 原始字符 'a' 装箱到 Character 对象 ch 中
char c= test('x'); //原始的'x'被装箱用于方法test,返回值被拆箱为字符'c'
字符串(String)是用一对双引号括起来的零个或多个字符组成的有限序列。在Java中,字符串被当作对象来处理。
程序中需要用到的字符串可以分为两大类:
String类:创建之后不会再做修改和变动的字符串常量;
StringBuffer类:创建之后允许再做更改和变化的字符串变量。
串的两种最基本的存储方式是顺序存储方式和链接存储方式。
字符串变量必须赋值后才可以使用,这称为字符串对象初始化。
字符串的创建和赋值的方式有三种:
String 字符串变量名;
字符串变量名="字符串常量";
String username="";
username="Tom"
或者
String 字符串变量名="字符串常量";
String SayHello="Hello world";
或者
String studentName=new String("周杰杰");
1、利用构造器:
String s=new String("Hello world");
2、直接创建:
String s="Hello world";
代码1中局部变量sa,sb中存储的是JVM在堆中new出来的两个String对象的内存地址。虽然这两个String对象的值(char[]存放的字符序列)都是"Hello world"。 因此"=="比较的是两个不同的堆地址。代码2中局部变量sc,sd中存储的也是地址,但却都是常量池中"Hello world"指向的堆的唯一的那个拘留字符串对象的地址 。自然相等了。
//代码1
String sa=new String("Hello world");
String sb=new String("Hello world");
System.out.println(sa==sb); // false
//代码2
String sc="Hello world";
String sd="Hello world";
System.out.println(sc==sd); // true
public class myfirst {
public static void main(String[] args) {
char []helloArray= {'h','e','l','l','o'}; //声明一个字符数组
String helloString=new String(helloArray); //将字符数组作为构造函数的参数
System.out.println(helloString);
}
}
public class myfirst {
public static void main(String[] args) {
String helloString ="hello"; //声明一个字符串变量并赋值
char []helloArray=helloString.toCharArray(); //进行字符串和字符数组的转换
for(int i=0;i