对象数组

java解析多层嵌套json字符串

我的未来我决定 提交于 2020-02-20 14:14:05
java分别解析下面两个json字符串 package jansonDemo; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; public class TestJSON { /** * JSON实际上也是键值对("key":"value") * key 必须是字符串,value 可以是合法的 JSON 数据类型(字符串, 数字, 对象, 数组, 布尔值或 null) * value如果是字符串,用jsonobj.getString("key")获取 * value如果是数 字,用jsonobj.getIntValue("key"),jsonobj.getFloatValue("key"),jsonobj.getInteger("key")等基本数据类型及其包装类的方法获取 * value如果是布尔值,用jsonobj.getBoolean("key"),jsonobj.getBooleanValue("key")获取 * value如果是数 组,用jsonobj.getJSONArray("key")获取 * value如果是Object对象,用jsonobj.get("key"),获取 *

VUE2中文文档:语法基础笔记

让人想犯罪 __ 提交于 2020-02-20 08:01:12
声明式渲染 Vue.js 的核心是,可以采用简洁的模板语法来声明式的将数据渲染为 DOM: <div id="app"> {{ message }} //模板语法 </div>    var app = new Vue({  //新建vue实例(响应式) el: '#app',      //挂载到#app data: { message: 'Hello Vue!'  //数据 } }) 除了文本插值(text interpolation),我们还可以采用这样的方式绑定 DOM 元素属性: <div id="app-2"> <span v-bind:title="message">     //v-bind:属性=“数据” 鼠标悬停此处几秒, 可以看到此处动态绑定的 title! </span> </div> var app2 = new Vue({ el: '#app-2', data: { message: '页面加载于 ' + new Date().toLocaleString() } })   由组件组合而成的应用程序 在 Vue 中,一个组件本质上是一个被预先定义选项的 Vue 实例,在 Vue 中注册组件很简单: // 定义一个被命名为 todo-item 的新组件 Vue.component('todo-item', { template: '<li>这是一个

PHP基础加固4——数据类型2

点点圈 提交于 2020-02-20 07:59:41
本节介绍PHP的其他数据类型。包括数组、对象、Resource以及NULL等等数据类型,也涵盖了不同数据类型之间的转换等知识点。 Array数组 PHP 中的数组实际上是一个有序映射。映射是一种把 values 关联到 keys 的类型。此类型在很多方面做了优化,因此可以把它当成真正的数组,或列表(向量),散列表(是映射的一种实现),字典,集合,栈,队列以及更多可能性。由于数组元素的值也可以是另一个数组,树形结构和多维数组也是允许的。 1. 语法 定义数组 array() 可以用 array() 语言结构来新建一个数组。它接受任意数量用逗号分隔的 键(key) => 值(value)对。 array( key => value , ... ) // 键(key)可是是一个整数 integer 或字符串 string // 值(value)可以是任意类型的值 最后一个数组单元之后的逗号可以省略。通常用于单行数组定义中,例如常用 array(1, 2) 而不是 array(1, 2, )。对多行数组定义通常保留最后一个逗号,这样要添加一个新单元时更方便。 5.4 起可以使用短数组定义语法,用 [] 替代 array()。 <?php $array = array( "foo" => "bar", "bar" => "foo", ); // 自 PHP 5.4 起 $array = [

关于js中伪数组

生来就可爱ヽ(ⅴ<●) 提交于 2020-02-20 07:16:48
伪数组: 具有length属性; 按索引方式存储数据; 不具有数组的push()、pop()等方法;   伪数组无法直接调用数组方法或期望length属性有什么特殊的行为,不具有数组的push()、pop()等方法,但仍可以对真正数组遍历方法来遍历它们。这种对象有很多,比较特别的是function内的arguments对象,还有像调用getElementsByTagName, document.childNodes之类的,它们都返回的NodeList对象都属于伪数组,也称为类数组,还有自定义的对象,也属于伪数组。我们可以通过Array.prototype.slice.call(fakeArray)将伪数组转变为真正的Array对象。 代码例子如下: var fakeArray01 = {0:'a',1:'b',length:2};//这是一个标准的伪数组对象 var arr01 = Array.prototype.slice.call(fakeArray01); alert(arr01[0]);//a var arr02 = [].slice.call(fakeArray01); alert(arr02[0]);//a 还有就是,jQuery中的$()对象都是伪数组对象,其中保存的是DOM对象,基于此,也就更好理解jQuery中的this,目前就理解到这里了,就酱! 来源:

常用数组、字符串的方法(详解)

≡放荡痞女 提交于 2020-02-20 03:18:11
1、indexOf( 数组 || 字符串 ); 作用:返回数组中某个指定元素的位置 (下标)。 (‘item’,[‘start’]) 两个参数: item: 必选、查找的元素。 start: 可选参数,规定在字符串中开始检索的位置,它的合法取值是StringObject.legth-1如省略该参数,则从字符串首字符开始检索。 返回值: Number类型 元素在数组中的位置,如果没有搜索到则返回 -1 。 兼容:所有主流浏览器都支持 indexOf()方法,IE8及以下不支持该方法。 2、slice( 数组 || 字符串 ); 作用:该方法是对数组的部分截取,并返回一个数组副本; (‘start’,[‘end’]) 两个参数 : start:参数start是截取的开始数组索引 end :可选参数end是你要截取的最后一个字符的 位置值 加上 1 。 (1) :如果传入的参数是一个,那么将从参数一的索引位置开始截取,一直到数组尾; (2) :如果传入的参数是一个,并且是一个负数的话,那么他会从数组的后面开始截取; (3) :如果传入的参数是一个,并且是一个负数的话,并且它的绝对值大于或等于数组的 length ,那么他会截取整个数组。 (4) :如果两个参数都是负数的话,前面的参数小于后面的参数。 注:位置是固定好的,从左往右找,不包含结尾位置的字符。 3、substr(); 作用

java面试题 -- 基础

醉酒当歌 提交于 2020-02-19 15:12:30
1.抽象和封装的不同点 抽象和封装是互补的概念。一方面,抽象关注对象的行为。另一方面,封装关注对象行为的细节。一般是通过隐藏对象内部状态信息做到封装,因此,封装可以看成是用来提供抽象的一种策略。 2.重载和重写的区别 重载: 发生在同一个类中,方法名必须相同,参数类型不同、个数不同、顺序不同,方法返回值和访问修饰符可以不同,发生在编译时。 重写: 发生在父子类中,方法名、参数列表必须相同,返回值范围小于等于父类,抛出的异常范围小于等于父类,访问修饰符范围大于等于父类;如果父类方法访问修饰符为private则子类就不能重写该方法。 3.字符型常量和字符串常量的区别 字符常量是单引号引起的一个字符 字符串常量是双引号引起的若干个字符字符常量相当于一个整形值(ASCII值),可以参加表达式运算 字符串常量代表一个地址值(该字符串在内存中存放位置)字符常量只占一个字节 字符串常量占若干个字节(至少一个字符结束标志)4.成员变量与局部变量的区别有那些? 从语法形式上,看成员变量是属于类的,而局部变量是在方法中定义的变量或是方法的参数;成员变量可以被public,private,static等修饰符所修饰,而局部变量不能被访问控制修饰符及static所修饰;但是,成员变量和局部变量都能被final所修饰;从变量在内存中的存储方式来看,成员变量是对象的一部分,而对象存在于堆内存

Java集合--线程安全(CopyOnWrite机制)

老子叫甜甜 提交于 2020-02-19 12:23:06
5 Java并发集合 5.1 引言 在前几章中,我们介绍了Java集合的内容,具体包括ArrayList、HashSet、HashMap、ArrayQueue等实现类。 不知道各位有没有发现,上述集合都有一个共同的特点,那就是线程不安全性,在并发情况下都不能保证数据的一致性。(当然,这个集合必须是共享了,所以才会有数据不一致) 所以,当我们在进行并发任务时候,共享了一个不适用于并发的数据结构,也就是将此数据结构变成了程序中的成员变量,那么我们将会遇到数据的不一致,进而影响到我们程序的运行。 为了应对并发场景的出现,Java在后续迭代过程中(具体应该是JDK1.5版本),推出了java.util.concurrent包。该包的出现,让Java并发编程变得更加轻松,帮助开发者编写更加高效、易维护、结构清晰的程序。 在java.util.concurrent包中,不但包含了我们本篇要说的线程安全的集合,还涉及到了多线程、CAS、线程锁等相关内容,可以说是完整覆盖了Java并发的知识栈。 对于Java开发人员来说,学好java.util.concurrent包下的内容,是一个必备的功课,也是逐渐提升自己的一个重要阶段。 5.2 并发集合实现1 JDK1.5的出现,对于集合并发编程来说,java developer有了更多的选择。不过,在JDK1.5之前,Java也还是提供了一些解决方案。

javascript Array对象

青春壹個敷衍的年華 提交于 2020-02-19 04:35:28
Array对象用于在变量中存储多个值 数组属性 constructor 返回创建数组对象的原型函数。 length 设置或返回数组元素的个数 prototype 允许你向数组对象添加属性或方法。 concat:concat() 方法用于连接两个或多个数组。该方法 不 会 改变现有的数组 ,而仅仅会返回被连接数组的一个副本。 1.2 返回新的数组 copyWithin() 方法用于从数组的指定位置拷贝元素到数组的另一个指定位置中。 改变原来的数组 ES6 返回新的数组 如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。 如果所有元素都满足条件,则返回 true。     注意: every() 不会对空数组进行检测。     注意: every() 不会改变原始数组 。 fill () 方法用于将一个固定值替换数组的元素。改变原来的数组 ES6 返回新的数组    array . fill ( value , start , end ) value 填充的值 start 开始填充的位置 end 结束填充的位置 filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素 1.6 返回符合条件的元素组成的新数组     注意: filter() 不会对空数组进行检测。     注意: filter()

JavaScript之数组

余生颓废 提交于 2020-02-19 03:19:32
  数组是用来在单独的变量名中存储数据的,你可以通过方法来操作数组,如:增加数据、删除数据等。 创建/ 访问 数组    通过指定数组名以及索引号码(数组的索引从0开始),你可以访问某个特定的元素,如arr[2]、arr[3]。 1 // 创建数组的方法有两种:1、通过new关键字创建 2、通过字面量创建 2 var arr = new Array(); // 创建一个空数组 3 arr[0] = "Hello"; // 向arr数组中添加元素 4 arr[1] = "world"; // 向arr数组中添加元素 5 6 var arr1 = new Array(3); // 创建一个数组长度的3的数组 7 arr[0] = "My"; // 向arr1数组中添加元素 8 arr[1] = "name"; // 向arr1数组中添加元素 9 arr[3] = "Lily"; // 向arr1数组中添加元素 10 11 var arr2 = new Array(1,2,3,4,5); // 创建数组[1,2,3,4,5] 12 13 var arr3 = []; // 创建一个空数组 14 var arr4 = [1,2,3]; // 创建数组[1,2,3] 15 16 console.log(arr[1]); // 返回world 17 console.log(arr4[2]);

C++ Primer(第五版)读书笔记 & 习题解答 --- Chapter 3

戏子无情 提交于 2020-02-19 01:05:09
Chapter 3.1 1. using声明具有如下的形式: using namespace::name; Chapter 3.2 1. C++标准一方面对库类型所提供的操作做了规定,另一方面也对库的实现做出了性能上的要求,所以,在一般的应用场合,标准库类型都有足够的效率。 2. 当用一个字符串字面值初始化string对象时,除了最后那个空字符外其他所有的字符都会被拷贝到新创建的string对象中去。 3. 如果使用等号初始化一个变量,实际上执行的是拷贝初始化。如果不使用等号,则执行的是直接初始化: string s1 = "hi, ya"; // 拷贝初始化 string s2(10, 'c'); // 直接初始化 4. 在执行读取string的操作时,string对象会自动忽略开头的空白(即空格符、换行符、制表符等)并从第一个真正的字符开始读起,直到遇见下一处空白为止: // 如果我们输入" Hello World! ",输出将是"Hello",没有任何空格 string s; cin >> s; cout << s << endl; 5. string::size_type是一个无符号类型的值,而且能足够存放下任何string对象的大小。需要注意的是,string类的size函数的返回值类型是string::size_type,由于它是一个无符号类型的值