字符串常量

java常量池

大兔子大兔子 提交于 2020-01-16 10:49:42
https://www.cnblogs.com/iyangyuan/p/4631696.htm 程序计数器 是jvm执行程序的流水线,存放一些跳转指令,这个太高深,小菜不懂。 本地方法栈 是jvm调用操作系统方法所使用的栈。 虚拟机栈 是jvm执行java代码所使用的栈。 方法区 存放了一些常量、静态变量、类信息等,可以理解成class文件在内存中的存放位置。 虚拟机堆 是jvm执行java代码所使用的堆。 Java中的常量池,实际上分为两种形态: 静态常量池 和 运行时常量池 。 所谓 静态常量池 ,即*.class文件中的常量池,class文件中的常量池不仅仅包含字符串(数字)字面量,还包含类、方法的信息,占用class文件绝大部分空间。 而 运行时常量池 ,则是jvm虚拟机在完成类装载操作后,将class文件中的常量池载入到内存中,并保存在 方法区 中,我们常说的常量池,就是指方法区中的运行时常量池。 接下来我们引用一些网络上流行的常量池例子,然后借以讲解。 首先说明一点,在java 中,直接使用==操作符,比较的是两个字符串的引用地址,并不是比较内容,比较内容请用String.equals()。 s1 == s2这个非常好理解,s1、s2在赋值时,均使用的字符串字面量,说白话点,就是直接把字符串写死,在编译期间,这种字面量会直接放入class文件的常量池中,从而实现复用

java常量池

回眸只為那壹抹淺笑 提交于 2020-01-09 09:18:55
要了解Java的中常量池,首先要知道jvm虚拟内存分布: 程序计数器 是jvm执行程序的流水线,存放一些跳转指令,这个太高深,小菜不懂。 本地方法栈 是jvm调用操作系统方法所使用的栈。 虚拟机栈 是jvm执行java代码所使用的栈。 方法区 存放了一些常量、静态变量、类信息等,可以理解成class文件在内存中的存放位置。 虚拟机堆 是jvm执行java代码所使用的堆。 Java中的常量池,实际上分为两种形态: 静态常量池 和 运行时常量池 。 所谓 静态常量池 ,即*.class文件中的常量池,class文件中的常量池不仅仅包含字符串(数字)字面量,还包含类、方法的信息,占用class文件绝大部分空间。 而 运行时常量池 ,则是jvm虚拟机在完成类装载操作后,将class文件中的常量池载入到内存中,并保存在 方法区 中,我们常说的常量池,就是指方法区中的运行时常量池。 接下来我们引用一些网络上流行的常量池例子,然后借以讲解。 1 String s1 = "Hello"; 2 String s2 = "Hello"; 3 String s3 = "Hel" + "lo"; 4 String s4 = "Hel" + new String("lo"); 5 String s5 = new String("Hello"); 6 String s6 = s5.intern(); 7

触摸java常量池

半世苍凉 提交于 2020-01-08 16:40:10
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> java常量池是一个经久不衰的话题,也是面试官的最爱,题目花样百出,小菜早就对常量池有所耳闻,这次好好总结一下。 理论 小菜先拙劣的表达一下jvm虚拟内存分布: 程序计数器 是jvm执行程序的流水线,存放一些跳转指令,这个太高深,小菜不懂。 本地方法栈 是jvm调用操作系统方法所使用的栈。 虚拟机栈 是jvm执行java代码所使用的栈。 方法区 存放了一些常量、静态变量、类信息等,可以理解成class文件在内存中的存放位置。 虚拟机堆 是jvm执行java代码所使用的堆。 Java中的常量池,实际上分为两种形态: 静态常量池 和 运行时常量池 。 所谓 静态常量池 ,即*.class文件中的常量池,class文件中的常量池不仅仅包含字符串(数字)字面量,还包含类、方法的信息,占用class文件绝大部分空间。 而 运行时常量池 ,则是jvm虚拟机在完成类装载操作后,将class文件中的常量池载入到内存中,并保存在 方法区 中,我们常说的常量池,就是指方法区中的运行时常量池。 接下来我们引用一些网络上流行的常量池例子,然后借以讲解。 1 String s1 = "Hello"; 2 String s2 = "Hello"; 3 String s3 = "Hel" + "lo"; 4 String s4 = "Hel

【PHP】PHP7新特性

江枫思渺然 提交于 2020-01-02 21:55:15
PHP7新特性 PHP7.0 PHP7.0新特性 PHP7.0 变化 PHP7.1 PHP7.1新特性 PHP7.1变化 PHP7.2 PHP7.2新特性 PHP7.2变更 PHP7.3 PHP7.3新特性 PHP7.3变化 PHP7.0 PHP7.0新特性 组合比较符 (<=>) 组合比较符号用于比较两个表达式。当$a小于、等于或大于$b时它分别返回-1、0或1,比较规则延续常规比较规则。对象不能进行比较。 var_dump ( 'PHP' <= > 'Node' ) ; // int(1) var_dump ( 123 <= > 456 ) ; // int(-1) var_dump ( [ 'a' , 'b' ] <= > [ 'a' , 'b' ] ) ; // int(0) null合并运算符 由于日常使用中存在大量同时使用三元表达式和isset操作。使用null合并运算符可以简化操作。 # php7以前 if ( isset ( $_GET [ 'a' ] ) ) { $a = $_GET [ 'a' ] ; } # php7以前 $a = isset ( $_GET [ 'a' ] ) ? $_GET [ 'a' ] : 'none' ; #PHP 7 $a = $_GET [ 'a' ] ? ? 'none' ; 变量类型声明 变量类型声明有两种模式。一种是强制的

php中的注释、变量、常量

…衆ロ難τιáo~ 提交于 2019-12-27 05:31:42
php中单引号与双引号的区别? 1. 由下可看出,双引号的变量是解析并输出,而单引号的变量不解析。 2.单引号的解析速度比双引号的快 3. 对于单引号来说,只有两个转义 \',\\ 4. 除了上述两个转义字符,其他都原样输出。 5. 对于双引号来说,可转义字符除\\,\',\"之外,还有\t, \r , \n 等 6.除了单引号和双引号用来声明字符串变量外,还有heredoc方式 程序代码: //$age = 22; //$str1 = '他今年 $age 岁'; //''原样输出 //$str2 = "他今年 $age 岁"; //""要解析里面的变量 即输出22 //echo $str1,"<br />",$str2; php中的注释 (一) 以//开始. (二) 以#开始. #这是shell单行注释风格 (三) 多行注释有一种以/*开始以 */结束 php中的注意事项 1. 在js中,一个语句如果单占一行的话,在行尾可以不加;号 2. 但是,在php加,必须每一行后面都要加分号 虽然在整个php的最后一句例外,但是强烈建议也加上 3 . 对于纯php页面,?>是可以不写的 而且,对于不直接运行,而是被别的页面所包含的文件,往往还推荐结束不加 ?> 这样包含的页面更快执行速度更快 php中的变量 (一) php变量有8种 1). <1> 整型(1,11,21) <2> 浮点型

第5单元数组总结

孤街浪徒 提交于 2019-12-24 20:20:14
基本知识: 第1课、一维数组的定义 1.数组就是一组相同类型的变量。他们往往都是为了表示同一批对象的统一属性,如一个班级所有同学的身高,全球所有国家的人口数等。 2.数组可以是一维的,也可以是二维或者多维的. 3.在数学中可以用hi表示第i个同学的身高,i为编号,在c++中,使用一维数组时,一般是从0开始编号。,h[i]就表示第i+1个同学的身高,i称为下标变量。 4.读入50个同学的身高,语句就可以这样写: for(i=0;i<=49;i++) cin>>h[i]; 5.数组经常应用在大批量、同一类型的数据处理任务中。 6.定义一维数组的格式如下: 类型标识符 数组名[常量表达式]; 7.其中类型标识符可以是任何基本数据类型,也可以是结构体等构造类型,相同类型的数组可以一起定义.数组名必须是合法的标识符,常量表达式的值即为数组元素的个数。 8.注意:int h[50] 就表示定义一个一维数组h共有50个元素,它们的编号从0开始到49,每个元素都是int类型。 9.还有几种特殊的定义: int d[50],g[100]; int a[5*10]; #define N 50int b[N] 10.假设要储存10000个人的中考成绩和性别,可以定义两个数组: int score[10000];//或者float score [10000]; bool xb[10000];/

触摸java常量池

自作多情 提交于 2019-12-21 20:46:22
java常量池是一个经久不衰的话题,也是面试官的最爱,题目花样百出,小菜早就对常量池有所耳闻,这次好好总结一下。 理论 小菜先拙劣的表达一下jvm虚拟内存分布: 程序计数器 是jvm执行程序的流水线,存放一些跳转指令,这个太高深,小菜不懂。 本地方法栈 是jvm调用操作系统方法所使用的栈。 虚拟机栈 是jvm执行java代码所使用的栈。 方法区 存放了一些常量、静态变量、类信息等,可以理解成class文件在内存中的存放位置。 虚拟机堆 是jvm执行java代码所使用的堆。 Java中的常量池,实际上分为两种形态: 静态常量池 和 运行时常量池 。 所谓 静态常量池 ,即*.class文件中的常量池,class文件中的常量池不仅仅包含字符串(数字)字面量,还包含类、方法的信息,占用class文件绝大部分空间。 而 运行时常量池 ,则是jvm虚拟机在完成类装载操作后,将class文件中的常量池载入到内存中,并保存在 方法区 中,我们常说的常量池,就是指方法区中的运行时常量池。 接下来我们引用一些网络上流行的常量池例子,然后借以讲解。 1 String s1 = "Hello"; 2 String s2 = "Hello"; 3 String s3 = "Hel" + "lo"; 4 String s4 = "Hel" + new String("lo"); 5 String s5 =

String类及常用方法

大城市里の小女人 提交于 2019-12-21 13:07:54
在学习String类之前,先看一道笔试题:new String("abc")创建了几个对象? 答案: 两个对象, 一个对象是 位于字符串常量池中,一个对象是位于堆内存中。 原因:主要取决于字符串的创建方式; String str = “hello”这种方式创建字符串的时候,jvm首先检查字符串常量池中是否存在该字符串对象,如果存在,就不会在字符串常量池中在创建了,直接返回该字符串在字符串常量池中的内存地址。如果该字符串不存在在字符串常量池中,就会在字符串常量池中先创建该字符串的对象,然后在返回。 new String("hello");这种方式创建字符串对象的时候,jvm首先会先检查字符串常量翅中是否存在该字符串,如果存在,则不会在字符串常量池中创建了,如果不存在就会在字符串常量池中创建该字符串对象,然后还会在堆内存中在创建一份字符串的对象,把字符串常量池中的字符串内容拷贝到堆内存中的字符串对象,然后返回堆内存中字符串对象的内存地址。 代码验证如下: 1 public class StringDemo { 2 3 public static void main(String[] args) { 4 String str1 = "hello world"; 5 String str2 = "hello world"; 6 String str3 = new String("hello

深入理解Java中的String

拜拜、爱过 提交于 2019-12-21 05:59:14
目录 JVM相关知识 String源码分析 Srtring在JVM层解析 String典型案例 String被设计成不可变和不能被继承的原因 JVM相关知识 下面这张图是JVM的体系结构图: 下面我们了解下Java栈、Java堆、方法区和常量池: Java栈(线程私有数据区): 每个Java虚拟机线程都有自己的Java虚拟机栈,Java虚拟机栈用来存放栈帧,每个方法被执行的时候都会同时创建一个栈帧(Stack Frame)用于存储局部变量表、操作栈、动态链接、方法出口等信息。每一个方法被调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程。 Java堆(线程共享数据区): 在虚拟机启动时创建,此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配。 方法区(线程共享数据区): 方法区在虚拟机启动的时候被创建,它存储了每一个类的结构信息,例如运行时常量池、字段和方法数据、构造函数和普通方法的字节码内容、还包括在类、实例、接口初始化时用到的特殊方法。在JDK8之前永久代是方法区的一种实现,而JDK8元空间替代了永久代,永久代被移除,也可以理解为元空间是方法区的一种实现。 常量池(线程共享数据区): 常量池常被分为两大类:静态常量池和运行时常量池。 静态常量池也就是Class文件中的常量池,存在于Class文件中。 运行时常量池(Runtime

python基础

假装没事ソ 提交于 2019-12-19 13:01:43
/*--> */ /*--> */ python 常量与变量 1、常量的概念 2、常量的应用 3、什么是变量 4、赋值 5、变量的应用 Python的常量主要是指在程序运行的过程中不可变的量, python的变量主要是指在程序执行的过程中可以改变的量。 #常量的概念 1、 python中在程序运行时不会被更改的量称之为常量,比如数字 7和字符串“ abc”在运行时一直都是数字 7跟字符串“ abc”,不会更改成其他的量,这就是常量,除此之外,还可以定义任意的字符串为制定值的常量。 常量有一个特点,就是:一旦绑定,不能更改 #常量的应用 2、在 python中是不能够像 php等其他编程语言一样通过 const来定义常量的,在 python中定义常量需要用对象的方法来创建 #什么是变量 3、 python中在程序运行时可以随着程序的运行更改的量称之为变量,比如我们可以定义一个量 i,并将数字 5赋给变量 i,然后再将数字 7在赋给变量 i,那么这个时候 i的值就变成了 7, i的值是可以改变的。那么像 i这种可以改变的值的量称之为变量。 变量有一个特点,就是:即使赋值,也可以更改。 #什么是赋值 4 、 例: I=7 #i不是等于 7,而是 7赋值给变量 i,这时候 i的值为 7 Print I # 打印结果就是7 #变量的应用 5、因为变量可以随着程序的运行而改变