字面量

基础知识点

匿名 (未验证) 提交于 2019-12-03 00:27:02
JAVA中的常量池 在Java的内存分配中,总共3种常量池: 字符串常量池 Java中字符串对象创建有两种形式, 一种为字面量形式,如String str = "droid",另一种就是使用new这种标准的构造对象的方法,如String str = new String("droid") ,这两种方式我们在代码编写时都经常使用,尤其是字面量的方式。然而这两种实现其实存在着一些性能和内存占用的差别。这一切都是源于JVM为了减少字符串对象的重复创建,其维护了一个特殊的内存,这段内存被成为字符串常量池或者字符串字面量池。 当代码中出现字面量形式创建字符串对象时,JVM首先会对这个字面量进行检查,如果字符串常量池中存在相同内容的字符串对象的引用,则将这个引用返回,否则新的字符串对象被创建,然后将这个引用放入字符串常量池,并返回该引用。 字符串常量池在Java内存区域的哪个位置 在JDK6.0及之前版本,字符串常量池是放在Perm Gen区(也就是方法区)中; 在JDK7.0版本, 字符串常量池被移到了堆中了 。至于为什么移到堆内,大概是由于方法区的内存空间太小了。 举例说明: 字面量创建形式 String str1 = "droid"; JVM检测这个字面量,这里我们认为没有内容为droid的对象存在。JVM通过字符串常量池查找不到内容为droid的字符串对象存在,那么会创建这个字符串对象

ECMAScript 初探 - 对象篇

我的梦境 提交于 2019-12-02 11:38:44
一、对象 如果你用过 C++ 或 Java,肯定熟悉类(class)。在 ECMAScript 中并没有 “类” 这个词, 其对应的是 “对象定义”,不过这太拗口了,因此还是诜择使用 “类” 这个词。 对象是由 new 运算符加上要实例化的类型的名字创建的。比如下面的代码创建 Array 类的实例: var a = new Array(); 在语法上与 C++ 类似。如果类的构造函数没有参数,括号可以省略;如果有多个参数, 则必须使用括号。为了避免混乱,笔者建议都使用括号。 1.1 Objec Object 类是所有 ECMAScript 类的基类,Object 类的所有属性和方法都会出现在其他类中, 理解了 Object 类,就可以更好地理解其他类。 Object 类具有下列属性: constructor,指向创建对象的函数,对于 Object 类,它指向 object() 函数。 prototype,对该对象的对象原型的引用。暂时可以将原型理解为 C++ 中的类声明,不过不同的是,ECMAScript 允许在运行时改变对象原型,而 C++ 中的类一旦声明后, 其成员变量和方法都不可在运行时增删。 Object 类还有几个方法: hasOwnProperty(property),判断对象是否有某个属性,property 为字符串,比如 root.hasOwnProperty (

go 指针

不羁的心 提交于 2019-12-02 02:48:15
首先我们要了解 那些类型是不可寻址的(unAddressable) 以下列表中的值都是不可寻址的。 常量的值。 示列: const num = 123 _:= &num 编译失败 基本类型值的字面量。示列: _ = &(123) // 基本类型值的字面量不可寻址 算术操作的结果值。示列:_ = &(123 + 456) // 算术操作的结果值不可寻址。 对各种字面量的索引表达式和切片表达式的结果值,不过有一个例外,对切片字面量的索引结果值却是可寻址的。示列:_ = &([3]int{1, 2, 3}[0]) 对数组、切片字面量的索引结果值不可寻址。 对字符串变量的索引表达式和切片表达式的结果值。示列:_ = &(str[0]) // 对字符串变量的索引结果值不可寻址。 对字典变量的索引表达式的结果值。示列:_ = &(map[int]string{1: "a"}[0]) // 对字典字面量的索引结果值不可寻址。 函数字面量和方法字面量,以及对它们的调用表达式的结果值。示列:_ = &(fmt.Sprintln("abc")) // 对函数的调用结果值不可寻址。 结构体字面量的字段值,也就是对结构体字面量的选择表达式的结果值。 示列:_ = &(Dog{"little pig"}.name) //不可寻址 类型转换表达式的结果值。示列:_ = &(interface{}(dog))

怎样理解两种通过字面量形式声明函数的方式

我的梦境 提交于 2019-11-30 21:41:21
前言: 函数的声明可以使用字面量, 也可以使用构造函数, 使用字面量时又分为: 1. 用 function声明; 2. 用 var声明; 这两者声明方式在进行JS预解析时是不一样的, 导致在调用时会有些许区别; 第一步: 使用 function声明, 整个函数都会被预解析, 函数可以在声明前调用 fn(); // "hello" function fn(){ console.log("hello"); } 第二步: 使用 var 声明, 预解析的只是 var 声明的变量, 并将 undefined 赋值给它, 因此在声明前调用会报错 fn(); // Error: not a function var fn = function () { console.log("hello") }; 注意: var 声明的函数是在JS逐行解析时声明的, 它随着变量的生命周期而创建或销毁, 而function声明的函数只有在声明的作用域被销毁以后才会跟着销毁, 因此可以理解为function声明的函数具有更长的生命周期. 来源: https://www.cnblogs.com/aisowe/p/11641401.html

golang1.13中重要的新特新

筅森魡賤 提交于 2019-11-30 15:11:36
本文索引 语言变化 数字字面量 越界索引报错的完善 工具链改进 GOPROXY GOSUMDB GOPRIVATE 标准库的新功能 判断变量是否为0值 错误处理的革新 Unwrap Is As golang1.13发布已经有一个月了,本文将会列举其中几个较为重要的特性。我们将会从语言变化、库变化以及工具链的改进这三方面逐个介绍新版本中引入的新特性。 语言变化 go团队一直承诺1.x版本的向前兼容,所以虽然1.13作为第一个开始向go2过渡的版本,其引入的语言变化是极少的,主要只有这两点:更多的数字字面量和改进的panic信息。 数字字面量 数字字面量是大家再熟悉不过的东西了,比如 100 , 0.99 , 1. 等。 然而奇怪的是,1.13之前的golang仅支持10进制和16进制的字面量,而在其它语言中广泛支持的二进制和八进制却不受支持。例如下面的代码是无法编译的: fmt.Println(0b101) fmt.Println(0o10) 在go1.13中上述字面量语法已经被支持了你可以通过 0b 或 0B 前缀来表明一个二进制数字的字面量,以及用 0o 和 0O 来表明八进制字面量。值得注意的是虽然两种写法都可以,但是gofmt默认会全部转换为小写,所以我更推荐使用 0b 和 0o 使你的代码风格尽量统一。 数字字面量的另一个变化就是引入了16进制浮点数的支持。

JavaScript学习——进阶(续3:数组)

混江龙づ霸主 提交于 2019-11-29 16:31:10
数组 对象的几种创建方式: 字面量 系统自带的构造函数 自定义构造函数 Object.create() 数组的创建方式: 数组字面量 var arr = []; 系统提供的数组的构造函数 var arr = new Array(); 基本介绍 < script type = "text/javascript" > //下面两语句等价: var arr = [ 1 , 2 , 3 ] ; var arr = new Array ( 1 , 2 , 3 ) ; //两种构造方式的仅有唯一区别: var arr = [ 10 ] ; //表示arr仅有一个元素 var arr = new Array ( 10 ) ; //表示arr有10个元素(目前都为undefined) < / script > 需要注意:在JS中,数组没有越界这一说,如果“越界”的引用了某一元素,则会显示undefined,而不是报错。“可以溢出读,也可以溢出写”: < script type = "text/javascript" > var arr = [ 1 , 2 , 3 ] ; < / script > 数组操作 数组是引用值,能够调用方法。对数组的操作的常用方法可以简单地分为以下两类: 操作后使原数组改变: push:在数组最后添加若干指定元素,返回添加后数组长度 push()方法的实现: Array

数据类型

谁都会走 提交于 2019-11-29 13:30:47
整数: Byte,Short,Int,Long 浮点数:Float,Double 字符:Char 字符串:String 布尔:Boolean Unit:表示无值,不返回任何结果,只有一个实例值() Null Nothing:其他任何类型的子类型 Any:其他类的超类 AnyRef:是Scala里所有引用类(reference class)的基类 整形字面量:用于Int类型,如果是Long,后面可加L或者l 浮点型字面量:用于Doube类型,如果是Float,后面可加F或者f 布尔型字面量:true或者false 符号字面量: 字符字面量:单引号 --'a' 字符串字面量:双引号 --"hello word" /多行字符串 三引号""" ... """ 转义字符: \t \u0008 水平制表(跳到下一个TAB位置) \n \u000a 换行,将当前位置移到下一行开头 \r \u000d 回车,将当前位置移到本行开头 来源: https://www.cnblogs.com/hapyygril/p/11518569.html

eslint规则

て烟熏妆下的殇ゞ 提交于 2019-11-28 22:40:05
{ "env": { "browser": true, "node": true, "commonjs": true }, "ecmaFeatures": { // lambda表达式 "arrowFunctions": true, // 解构赋值 "destructuring": true, // class "classes": true, // http://es6.ruanyifeng.com/#docs/function#函数参数的默认值 "defaultParams": true, // 块级作用域,允许使用let const "blockBindings": true, // 允许使用模块,模块内默认严格模式 "modules": true, // 允许字面量定义对象时,用表达式做属性名 // http://es6.ruanyifeng.com/#docs/object#属性名表达式 "objectLiteralComputedProperties": true, // 允许对象字面量方法名简写 /*var o = { method() { return "Hello!"; } }; 等同于 var o = { method: function() { return "Hello!"; } }; */ "objectLiteralShorthandMethods":

Go语言入门教程

橙三吉。 提交于 2019-11-28 19:31:18
1.概述 Go 是一个开源的编程语言,它能让构造简单、可靠且开发高效的软件变得容易。Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月开源,在2012年早些时候发布了Go 1稳定版本。现在Go的开发已经是完全开放的,并且拥有一个活跃的社区。 2.优缺点 2.1 优点 开源 编译性语文,运行高速 语法简洁 并行处理封装 内存管理、数组安全 2.2缺点 作为编译性语言调试不如脚本方便 在数据分析上没有脚本适用 对底层的控制没有基础语言灵活 3.用途 常应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器。对于高性能分布式系统领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率。它提供了海量并行的支持,在服务端的开发优势较大。 4.语言基础 4.1基本数据类型 4.1.1变量和常量 普通赋值: // var 变量名称 变量类型 = 值 var num int = 1 平行赋值: var num1, num2 int = 1, 2 多行赋值: var ( num1 int = 1 num2 int = 2 ) 4.1.2整数类型的命名和宽度 Go的整数类型一共有10个其中计算架构相关的整数类型有两个: 有符号的整数类型

2.Python入门-计算机组成、指令和程序、标识符、变量、数据类型、对象和变量关系、运算符

坚强是说给别人听的谎言 提交于 2019-11-28 15:24:19
一、计算机的组成 计算机由两部分组成:硬件 和 软件 硬件包含:键盘、鼠标、显示器、CPU、主板、内存、硬盘 。。。   -硬件是看的见摸得着的 软件包含:系统软件(windows、macOS、Linux)和应用软件(office 、QQ、绝地求生)   -软件是看的见摸不着的,软件负责控制计算机中的硬件 二、指令和程序 计算机的硬件系统通常由五大部件构成,包括:运算器、控制器、存储器、输入设备和输出设备。 中央处理器:运算器和控制器,它的功能是执行各种运算和控制指令以及处理计算机软件中的数据。 程序实际上就是指令的集合,我们程序就是将一系列的指令按照某种方式组织到一起,然后通过这些指令去控制计算机做我们想让它做的事情 “冯·诺依曼结构”有两个关键点,一是指出要将存储设备与中央处理器分开,二是提出了将数据以二进制方式编码。 三、字面量、变量、数据类型 标识符: 第一个字符必须是字母表中字母或下划线 _ 。 标识符的其他的部分由字母、数字和下划线组成。 标识符对大小写敏感。 在Python中所有可以自主命名的内容都属于标识符 比如:变量名、函数名、类名 标识符必须遵循标识符的规范   1.标识符中可以含有字母、数字、_,但是不能使用数字开头     例子:a_1 _a1 _1a   2.标识符不能是Python中的关键字和保留字     也不建议使用Python中的函数名作为标识符