字符串的不可变
var str = ‘abc’; //常量区 类型为string
str = ‘hello’; //常量区
// 当重新给str赋值的时候,常量’abc’不会被修改,依然在内存中
// 重新给字符串赋值,会重新在内存中开辟空间,这个特点就是字符串的不可变
// 由于字符串的不可变,在大量拼接字符串的时候会有效率问题
创建字符串对象
var str = new String('Hello World'); //堆区,类型为object
// 获取字符串中字符的个数
console.log(str.length);//11
字符串的内存
var s1 = "11";
var s2 = "11";
var s3 = new String("11");
var s4 = new String("11");
console.log(s1 == s2); //true
console.log(s2 == s3); //true //自动拆箱
console.log(s2 === s3); //fasle //类型不一致
console.log(s3 == s4); //false
<script>
var str = "abc123"; //['a','b','c','1','2','3']
console.log(str.charAt(2));
console.log(str.charCodeAt(2));
console.log(str[1]);
//字符串是不可变
var str1 = str.concat("mm");
console.log(str1);
//slice包前不包后
var str2 = str1.slice(0,3);
var str2 = str1.substring(0,3);
console.log(str2);
var str2 = str1.substr(1,3);
console.log(str2);
//trim() 去除字符串首尾的空格
var s = " 11 aa bb ";
console.log(s.trim());
//转换为大小写
console.log(s.toUpperCase());
console.log(s.toLowerCase());
//从字符串查找
var s = "abc123abc";
var i = s.search("b");
console.log(i);
//替换字符串
var ns = s.replace("b","k");
var ns = s.replace(/b/ig,'k');
console.log(ns);
//根据ASCII构建字符串
var ss = String.fromCharCode(120, 101, 102, 103);
console.log(ss);
//遍历字符串
var s = "abc123abc";
for (var i = 0; i < s.length; i++) {
console.log(s.charCodeAt(i));
}
</script>
作业
给定一个字符串如:“abaasdffggghhjjkkgfddsssss3444343”问题如下:
1、 字符串的长度
2、 取出指定位置的字符,如:0,3,5,9等
3、 查找指定字符是否在以上字符串中存在,如:i,c ,b等
4、 替换指定的字符,如:g替换为22,ss替换为b等操作方法
5、 截取指定开始位置到结束位置的字符串,如:取得1-5的字符串
6、 找出以上字符串中出现次数最多的字符和出现的次数
7、 遍历字符串,并将遍历出的字符两头添加符号“@”输出至当前的文档页面。