newStringJava
‘壹’ java New String 4个参数什么意思
new String(tmp,1,nlen,"UTF8")
tmp是一个byte(字节)数组,如:['a','b','c'...],tmp[0]是去byte中的第一个,运算符&表示按位运算‘且’,就是前后值的二进制相同位有0取0,否则取1,如:2&3就是运算二进制的10&11,结果是二进制10,表示十进制就是2,所以tmp[0]&0xff返回的是tmp[0]这个字节的ASCII码,如A对应65,a对应97,new String(tmp,1,nlen,"UTF8")就是将字节数组tmp从索引的第1位取nlen长度后组成字符串,切组成后的字符串按照utf8的字符集编码,够详细了吧
‘贰’ JAVA中new String是什么意思还有两个问题(见补充说明)
关于问题一,你列出的2种方法的结果都是一样的,实例化一个String对象。一个是直接将字符串赋值给对象,一种是通过构造函数实例化一个对象。
问题二,构造函数内部实现的功能,截取指定字符数组生成一个字符串对象。
‘叁’ java中new String[]{file}什么意思
数组初始化带大括号,file表示初始化的第0个下标值为file,此时该数组长度为1;举例:
String[]str = new String[]{};
大括号的意思是初始化 前面定义的String[]str ;
但是现在大括号里面是空的,也就是没有内容,
具体解释说明:new代表新建一个对象在堆中开辟空间,String[] 代表一个字符串数组,String[]{file}表示初始化的String[]的长度1,下标为0的值为file.总体来说,就是创建一个字符串数组,并开辟1个长度,里面值为file变量.
‘肆’ 如何new string数组 java
方法一:
Integerlength=5;//自定义数组长度
String[]strArray=newString[length];
方法二:
String[]strArray=newString[]{"hello","world"};
‘伍’ java的new String()问题
Java字符串对象没有提供String(char s)这样的构造器,所以报错了,你要先把字符转换成字符串
‘陆’ java 中的String 和new String 的区别
不相等
内存中有区别,
String
str
=
"abc"
如果之前有String对象是abc的值的话那str直接就指向之前的那个对象了,不再重新new一个对象了
String
str
=
new
String("abc");无论以前有没有都重新new一个新的
‘柒’ java中的new String的问题。
假设你的 neme的内存地址为 100
this.name=neme。那么name的值就会指向内存中100那个地方。
this.name=new Striing (neme);系统会重新开辟一块内存,假设地址为200.那么此时你的name的值就会指向内存中200那个地方。
字符串的字面值是一样的 但是内存地址不一样。
String s1 ="a";
String s2 = s1;
String s3 =new String(s1);
此时 s1==s2 true; s1==s3 false;
但是如果使用 s1.equals(s2), s1.equals(s3). 都是 true.