Java刷题基础语法

一、Java集合概览

​ Java 集合, 也叫作容器,主要是由两大接口派生而来:一个是 Collection接口,主要用于存放单一元素;另一个是 Map 接口,主要用于存放键值对。对于Collection 接口,下面又有三个主要的子接口:ListSetQueue

​ Java 集合框架如下图所示:

Java 集合框架概览

阅读更多

Effective Modern C++笔记

零. 绪论

  • 左值和右值
    • 概念上,右值对应的是函数返回的临时对象,左值对应的是可指涉的对象(通过名字、指针或左值引用)
    • 甄别方式:能取得地址的为左值。
    • 右值引用类型的形参,该形参本身也是左值。
      • 任何形参都是左值
    • 若某对象是依据同一类型的另一对象初始化出来的,则该新对象称为原对象的一个副本。右值的副本通常由移动构造函数创建,左值的副本通常由复制构造函数创建。
阅读更多

Effective C++笔记

01:把c++视为一个语言联邦

02:尽量以const, enum, inline替代#define

1. 对于单纯变量,最好用const对象或enum替换#define

​ #define由预处理器进行处理,因此可能不被编译器看见。当获得编译器错误信息时无法追踪(通过#define定义的变量可能未进入记号表)。而使用const对象则不会出现这样的问题。

​ 并且,#define无法限制作用域。当需要定义class的专属常量时,可以通过const定义,并且为了保证此常量至多一个实体,可以将其定义为static类型。

阅读更多

JavaScript笔记

基本语法注意事项

  • === 比较运算符
  • NaN

NaN === NaN; // false

// true```(唯一判断方法)
1
2
3
4
5
6
7
8
9
10
11
- null 和 undefined
- 变量类型不固定,可以赋值为不同类型
```var a = 123; // a的值是整数123```
```a = 'ABC'; // a变为字符串```

<!--more-->

### 字符串

- 用' '或" "括起来
- 多行字符串

这是一个 多行 字符串;

1
2
3
4
5
6
- 字符串的连接
```javascript
var name = '小明';
var age = 20;
var message = '你好, ' + name + ', 你今年' + age + '岁了!';//方法1
var message = '你好, ${name}, 你今年${age}岁了!';//方法2
  • 字符串的长度
    1
    2
    var s = 'Hello, world!';
    s.length; // 13
  • 字符串的索引
    1
    2
    3
    4
    var s = 'Hello, world!';
    s[0]; // 'H'
    s[0] = 'X';//对字符串的某个索引赋值,没有任何效果:
    alert(s); // s仍然为'Hello, world!', 字符串不可变!!!
  • 改变字符串大小写
    1
    2
    3
    var s = 'Hello, world!';
    s.toUpperCase(); // 返回'HELLO, WORLD'
    s.toLowerCase(); // 返回'hello, world!'
  • 搜索指定字符串出现的位置
    1
    2
    3
    var s = 'Hello, world!';
    s.indexOf('world'); // 返回7
    s.indexOf('World'); // 没有找到指定的子串,返回-1
  • 返回指定索引区间的子串
    1
    2
    3
    var s = 'Hello, world!';
    s.substring(0, 5); // 从索引0开始到5(不包括5),返回'hello'
    s.substring(7); // 从索引7开始到结束,返回'world'

数组

  • 创建数组
    1
    2
    var arr = [1, 2, 3.14, 'Hello', null, true];//数组可以包括任意数据类型
    var arr = new Array(1, 2, 3); // 方法2,数组为[1, 2, 3]
  • 多维数组

var arr = [[1, 2, 3], [400, 500, 600], '-'];

  • 数组的索引
    1
    2
    3
    4
    5
    6
    var arr = ['A', 'B', 'C'];
    arr[0]; //返回索引为0的元素,即A
    arr[1] = 99;
    arr; //arr现在变为['A', 99, 'C']
    arr[5] = 'x';
    arr; //arr变为['A', 99, 'C', undefined, 'x']
  • 取得Array的长度(改变长度)
    1
    2
    3
    4
    5
    6
    var arr = [1, 2, 3];
    arr.length; // 3
    arr.length = 6;
    arr; // arr变为[1, 2, 3, undefined, undefined, undefined]
    arr.length = 2;
    arr; // arr变为[1, 2]
  • 搜索一个指定的元素的位置
    1
    2
    var arr = [10, 20, '30', 'xyz', 'D', 'E', 'F'];
    arr.indexOf(10); // 元素10的索引为0,返回0
  • 截取元素
    1
    2
    3
    4
    5
    6
    var arr = [10, 20, '30', 'xyz', 'D', 'E', 'F'];
    arr.slice(0, 3); // 返回 [10, 20, '30']
    arr.slice(3); // 从索引3开始到结束,返回 ['xyz', 'D', 'E', 'F']
    var aCopy = arr.slice();//从头到尾截取所有元素,相当于复制
    aCopy; //[10, 20, '30', 'xyz', 'D', 'E', 'F']
    aCopy === arr; // false
  • 添加/删除元素
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    var arr = ['C', 'D', 'E', 'F'];
    arr.push('G', 'H'); // 向尾部添加元素,返回新的长度: 6
    arr; // ['C', 'D', 'E', 'F', 'G', 'H']
    arr.pop(); // 删除末尾元素,返回'H'
    arr; // ['C', 'D', 'E', 'F', 'G']
    arr.unshift('A', 'B'); // 向头部添加元素,返回新的长度: 7
    arr; // ['A', 'B', 'C', 'D', 'E', 'F', 'G']
    arr.shift(); // 删除开头元素,返回'A'(若arr为[],则返回undefined)
    arr; // ['B', 'C', 'D', 'E', 'F', 'G']
    arr.splice(1, 3, 'H', 'I'); // 从索引1开始,删除3个元素,再添加2个元素,返回删除的元素 ['C', 'D', 'E']
    arr;//['B', 'F', 'G', 'H', 'I']
    arr.splice(2, 2); //只删除,不添加,返回['G', 'H']
    arr; // ['B', 'F', 'I']
    arr.splice(2, 0, 'J', 'K'); //只添加,不删除,返回[]
    arr; // ['B', 'F', 'I', 'J', 'K']
  • 排序(按照默认顺序排序)
    1
    2
    3
    var arr = ['B', 'C', 'A'];
    arr.sort();
    arr; // ['A', 'B', 'C']
  • 反转字符串
    1
    2
    3
    var arr = ['A', 'B', 'C'];
    arr.reverse();
    arr; // ['C', 'B', 'A']
  • 连接字符串
    1
    2
    3
    4
    5
    6
    7
    var arr = ['C', 'B', 'A'];
    var added = arr.concat([1, 2, 3]);
    added; // ['C', 'B', 'A', 1, 2, 3]
    arr; // 原字符串并未改变,仍为['C', 'B', 'A']
    arr.concat(1, 2, [3, 4]); // concat会自动把Array拆开,返回['C', 'B', 'A', 1, 2, 3, 4]
    //将每个元素用指定的字符串连接起来,返回连接后的字符串
    added.join('-'); // 'C-B-A-1-2-3-4'

对象

  • 是由键-值组成的无序集合
    1
    2
    3
    4
    5
    6
    7
    8
    var xiaoming = {
    name: '小明',
    birth: 1990,
    height: 1.70,
    weight: 65,
    score: null
    'middle-school': 'No.1 Middle School'
    };
  • 访问元素
    1
    2
    3
    4
    xiaoming.name;// '小明'
    xiaoming['name']; // '小明'
    xiaoming['middle-school']; // 'No.1 Middle School'
    xiaoming.age; // undefined
  • 添加或删除属性
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    xiaoming.age = 18; // 新增一个age属性
    xiaoming.age; // 18
    delete xiaoming.age; // 删除age属性
    xiaoming.age; // undefined
    delete xiaoming['name']; // 删除name属性
    xiaoming.name; // undefined
    delete xiaoming.school; // 删除一个不存在的school属性也不会报错
    xiaoming.name;// '小明'
    xiaoming['name']; // '小明'
    xiaoming['middle-school']; // 'No.1 Middle School'
    xiaoming.age; // undefined

python笔记

基础

  • 采用缩进(不用“;”隔开)

  • 空值:None

  • 注释
    # print absolute value of an integer:

  • Python的整数没有大小限制,浮点数也没有,但超出一定范围就直接表示为inf(无限大)

  • 动态语言:同一个变量可以反复赋值,而且可以是不同类型的变量

    1
    2
    3
    4
    a = 123 # a是整数
    print(a)
    a = 'ABC' # a变为字符串
    print(a)
阅读更多

C++运算符重载

关于运算符重载

1
2
3
4
5
6
7
8
Box operator+(const Box& b)
{
Box box;
box.length = this->length + b.length;
box.breadth = this->breadth + b.breadth;
box.height = this->height + b.height;
return box;
}

this为运算符前对象,b为运算符后对象。

阅读更多