- 定义一个空的字符串
String s=""; String s2=new String();
- 也可以定义成数组转成字符串
//byte数组可以,short、int、long数组因为字节比字符大,不能转
byte[] s3={(byte)'h',(byte)'e',(byte)'l',(byte)'l',(byte)'o'};
String s4=new Sting(s3);
System.out.println(s3);//输出结果为hello
- 将所有小写的字母进行拼接
int a=97;
while(true){
if(a>=97&&a<=122){
s+=(char)a;
a++;
}else break;
}
System.out.println(s);
字符串中内容占的空间
- String s=“中国”;
- 字符串占几个字节是由里面的内容决定的
- 在utf-8中一个汉字占三个字节,所以中国占了六个字节
- 在GBK中一个汉字占二个字节,所以中国占了四个字节
- 一个字母占一个字节
以中字为例
String s="中国";
byte[] x=s.getBytes();
System.out.println(Arrays.toString(x));
字符串拼接输出结果为:[-28, -72, -83, -27, -101, -67]//前三个代表中,后面为国
'中’在ASII码中是20013,二进制100 1110 0010 1101补够16位0100 1110 0010 1101
1110 0100 -->0001 1100 4+8+16= -28 //在前面补1110,在从后面取四位凑够八位
1011 1000 -->0100 1000 8+64= -72 //补10,同理凑八位
1010 1101 -->0101 0011 1+2+16+64= -83 //补10,同理
如何计算去这看
链接:link(Ctrl+鼠标左键可以进链接)
- 在基本数据类型中==用来判断数值是否相等
- 在引用数据类型中==用来判断地址是否相等
- 在字符串池中创建的,只要内容相等,地址一定相等。
String s1="hello" System.out.println(s==s1); // true格式化字符串
- 方法调用 String.format()
- System.out.printf();也可以只是不换行
%d 代表整数
%s 字符串
%f 小数
%.af 保留a位小数(%.3f 保留三位小数)
%x 16进制
%% 对%进行转义
int a=2,b=16;
String s="%d+%x=%d";
String s1 = String.format(s, a, b, a + b);
System.out.println(s1);
System.out.printf("%d+%d=%d",a,b,a+b);
System.out.println();
int num=90;
s="今年亏了%d%%";
System.out.printf(s,num);
- 结果
2+10=18 2+16=18 今年亏了90%调用字符串方法
字符串转成char数组 .toCharArray();
char[]数组转成字符串 String string=new String(“char”);
valueOf将任意数据类型转成字符串 String.valueOf();
valueOf还可以截取部分数据类型转成字符串 String.valueOf(0,2);//从0开始,长度为2,但不包含第二个



