字符串常量相关知识
-
Java 字符串常量池在 JDK 1.7 之前,HotSpot 虚拟机中的字符串常量池都在方法区中,用永生代实现。JDK 1.7 及以后的版本,字符串常量池移到了堆里。JDK 1.6 的 String.intern 方法会将首次遇到的 String 对象复制到永久代,并返回这个对象的引用。JDK 1.7 的 String.intern 方法不再复制,而是记录首次出现的 String 对象的引用。以下用 JDK 1.8 实验探究字符串常量池。// test1String s1 = "red";String s2 = "red";System.out.println(s1 == s2); // true// test2String s3 = new String("red");String s4 = new String("red");System.out.println(s3 == s4); // false// test3System.out.println(s1 == s3); // false// test4System.o
-
JavaScript里嵌入批量字符串常量的方法在JavaScript文件里嵌入大量字符串常量是经常遇到的事。有时为了省事,就把一些界面的HTML和CSS直接写在JS文件里。数量少还好,多的话就密密麻麻的一坨文字,讲究美观的文艺青年们,会用大量的字符连接符号甚至加上缩进,强制换成好几行。例如:var html = '<div>' + '<p>Hello</p>' + '<p>World'</p>' + '</div>'; 这还好,要是字符串里有不少双引号单引号,那就更麻烦了,
-
彻底弄懂字符串常量池等相关问题前言: 在平时我们使用字符串一般就是拿来直接搞起,很少有深入的去想过这方面的知识,导致别人在考我们的时候,会问 String str = new String("123"); 这个一行代码执行创建了几个对象, String str1= str + new String("456");这行代码中str1存储在内存的哪个位置,堆or 字符串常量区(方法区)? 会把我们问的哑口无言了;哈哈哈哈,其实也不是水平问题,是我们平时可以仔细的去总结该类问题,下面就详细的对这类问题进行总结; 一、首先把容易混淆以及被人问傻的几个问题归类汇总:[没看本文答案解析,全部答对的请留言,我关注你]问题1: String str1 = new String("1"); str1.intern(); String&n
-
Java基础小知识点不要低估你的能力,不要高估你的毅力1.equals()和==的区别?equals()是Object类中的方法,而==是运算符equals()比较的是内容,而==比较的是地址2.传值和传址传值:例如a=b把b的值传给a修改a并不会影响到b传址:例如a=b把b的地址传给a,修改a的同时会影响到b3.为什么我们常说字符串是不可变的?字符串的底层是char[]类型的字符数组字符串被创建的时候保存在字符串常量池里(jdk1.7之前字符串常量池在方法区,jdk1.7之后,字符串常量池在堆区),加入有String str="abc",当执行str="def"的时候,字符串常量池这的abc并不会销毁,而是在字符串常量池中添加新的def并将其指向str4.switch()-case可以接受的类型jdk1.7之前switch-case所接受的参数只能是整形或者转换为整形后没有损失的类型int charbyte short还有枚举 enum jdk1.8之后在此基础之上增加了String类型.5.运行时异常和编译器异常有和异同?
字符串常量相关课程
字符串常量相关教程
- 2. 字符串字面量类型 字符串字面量类型允许你指定字符串必须的固定值。let protagonist: 'Sherlock'protagonist = 'Sherlock'protagonist = 'Watson' // Error, Type '"Watson"' is not assignable to type '"Sherlock"'代码解释: 变量 protagonist 被声明为 'Sherlock' 字面量类型,就只能赋值为 'Sherlock'。type Easing = 'ease-in' | 'ease-out' | 'ease-in-out'class UIElement { animate(dx: number, dy: number, easing: Easing) { if (easing === 'ease-in') {} else if (easing === 'ease-out') {} else if (easing === 'ease-in-out') {} else { // Error, 不应该传递 null 或 undefined } }}let button = new UIElement()button.animate(0, 0, 'ease-in')button.animate(0, 0, 'uneasy') // Error, 'uneasy' 不被允许代码解释:第 1 行,通过类型别名,声明了类型 Easing 为 'ease-in' | 'ease-out' | 'ease-in-out'这样三个字符串字面量构成的联合类型。第 4 行,你只能从三种允许的字符中选择其一来做为参数传递,传入其它值则会产生错误。字符串字面量类型还可以用于区分函数重载:function createElement(tagName: 'img'): HTMLImageElementfunction createElement(tagName: 'input'): HTMLInputElementfunction createElement(tagName: string): Element {}代码解释:如果参数 tagName 为 'img' 类型,返回值类型为 HTMLImageElement; 如果参数 tagName 为 'input' 类型,返回值类型为 HTMLInputElement。
- 2.1 字符串 字符串是 Redis 最基本的键值对类型。它在数据库中将一个单独的键和单独的一个值关联起来。和 Python 字典类型中的 key-value 类似。常用的字符串操作命令有:指令含义set为字符串键设置值get获取字符串键的值getset获取旧值设置新值mset一次设置多个字符串键的值mget一次获取多个字符串键的值msetnx只在键不存在的情况下,一次为多个字符串键设置值strlen获取字符串值的字节长度getrange获取字符串值指定索引范围的值setrange对字符串值的指定索引范围进行设置incrby/decrby对指定值执行加法操作和减法操作incrbyfloat对整数值执行浮点数加法操作接下来我们就使用上面的指令在 redis 的命令行中进行测试,请仔细查看每一步操作并动手实践:首先是 set 和 get 指令,非常简单:127.0.0.1:6777> set hello worldOK127.0.0.1:6777> get hello"world"127.0.0.1:6777>接着是 getset 指令,getset 返回的是旧值,同时会设置新的值# 127.0.0.1:6777> getset hello "new world""world"127.0.0.1:6777> get hello"new world"127.0.0.1:6777>接着演示 mset 和 mget 指令,都是 set 和 get 的批量版,set 后面跟的是 key1 value1 key2 value2 … 这样的形式# 127.0.0.1:6777> mset key1 value1 key2 value2 key3 value3OK127.0.0.1:6777> mget key1 key2 key31) "value1"2) "value2"3) "value3"127.0.0.1:6777>msetnx 只能对不存在的键进行批量设置值,对于存在的键进行设置时会报错。返回0表示失败# 127.0.0.1:6777> msetnx key3 value3 key4 value4(integer) 0127.0.0.1:6777> get key4(nil)类似于 python 中的 len(key1) 语句# 127.0.0.1:6777> strlen key1(integer) 6getrange 和 setrange 指令非常类似于 python 中的切片操作# 127.0.0.1:6777> get key1"value1"127.0.0.1:6777> getrange key1 0 3"valu"127.0.0.1:6777> getrange key1 -3 -1"ue1"127.0.0.1:6777> setrange key1 2 xxx(integer) 6127.0.0.1:6777> get key1"vaxxx1"127.0.0.1:6777> setrange key1 10 ", this is so pretty!"(integer) 30可以看到,对于超出范围的,会用 \x00 填充# 127.0.0.1:6777> get key1"vaxxx1\x00\x00\x00\x00, this is so pretty!"127.0.0.1:6777> incrby、decrby 和 incrbyfloat 指令的实例127.0.0.1:6777> set number 1OK127.0.0.1:6777> incrby number 100(integer) 101127.0.0.1:6777> get number"101"127.0.0.1:6777> decrby number 50(integer) 51127.0.0.1:6777> get number"51"加浮点数必须使用专门的指令,不能再使用 incrby 指令:# 127.0.0.1:6777> incrby number 12.2(error) ERR value is not an integer or out of range127.0.0.1:6777> incrbyfloat number 12.2"63.2"redis 字符串类型的操作是不是比较简单?接下来还有更复杂的数据类型,请继续往下学习。
- 2. 字符串 字符串类型的数据表示一段文本,使用单引号、双引号创建,例如:单引号字符串 ‘hello’双引号字符串 “hello”字符串通常用于文本的连接,例如:连接两个字符串,形成一个新的字符串>>> 'Hello' + 'World''HelloWorld'连接三个字符串,形成一个新的字符串>>> 'Hello' + ':' + 'World''Hello:World'
- 4. 字符串类型 双引号或者单引号表示字符串:let protagonist: string = "Sherlock Holmes"let partner: string = 'Dr. John Hamish Watson'使用模板字符串:let protagonist: string = 'Sherlock'let sentence: string = `华生是${protagonist}的朋友、助手和室友。`模板字符串使用反引号来代替普通字符串中的用双引号和单引号。模板字符串可以包含特定语法 ${expression} 的占位符,占位符内可以写变量名,模板字符串会进行变量值的解析。
- 2.1 字符串 字符串由字符组成,字符串在使用的时候会使用双引号(")或者单引号(')包裹。var str1 = '字符串';var str2 = "字符串";console.log(str1); // 输出:"字符串"console.log(str2); // 输出:"字符串"上述例子中,两个变量都是字符串类型的,可以双引号和单引号包裹的结果是一样的。但是如果需要在双引号包裹的字符串中使用双引号,或者在单引号包裹的字符串中使用单引号,需要使用\进行转义,否则会报错,因为 JavaScript 无法知道字符串的结束位置。var str1 = '使\'用\'单\'引\'号';var str2 = "使\"用\"双\"引\"号";console.log(str1); // 输出:"使'用'单'引'号"console.log(str2); // 输出:"使"用"双"引"号"// 以下代码会报错var str3 = "哼"!";var str4 = ''哼!';大部分开发者会使用单引号包裹字符串。因为为了网页的动态展示、复杂交互等,需要用 JavaScript 书写 HTML 模版,而 HTML 的属性按照习惯是使用双引号包裹的(XML 标准允许单引号和双引号,在 HTML5 的标准中甚至不需要书写引号)。这样如果使用 JavaScript 中的字符串表示 HTML 就会变成如下情况:var html = "<div class=\"title text-red\" style=\"display: inline-block;\">我是一个红色的标题</div>";为了契合书写 HTML 的习惯,防止代码中充斥的大量的转义,就会使用如下使用单引号的形式。var html = '<div class="title text-red" style="display: inline-block;">我是一个红色的标题</div>';
- Java 字符串 在 Java 基本数据类型一节中,我们已经知道 Java 中有两大数据类型:一个是基本数据类型,另一个是引用数据类型。字符串(String)便属于引用数据类型。字符串在 Java 程序中无处不在,其实我们在第一个 Java 程序中就已经使用过了字符串,打印语句中双引号中的Hello World就是一个字符串:System.out.println("Hello World");本小节我们将介绍字符串的基础知识,告诉你如何创建一个字符串,也会讲到 Java 13支持的多行字符串的创建方法和注意事项,还会介绍很常用的字符串的连接操作,最后我们也会着重讨论字符串的一个重要特性:不可变性。需要注意的是,String是在java.lang包中定义的内置类,了解它的相关操作需要面向对象的前置知识,为了减少初学者的困扰,字符串的相关操作不会在本小节讨论。我们将在完成面向对象的学习后专门讲解String类。
字符串常量相关搜索
-
z index
zabbix
zepto
zipentry
zookeeper
在线编辑
在线编辑器
整型常量
正则表达式
正则表达式教程
正则不包含
指示器
指针变量
指针初始化
指针的指针
指针函数
指针数组
转义字符
自学教程
字符常量