类型转换与反射(Java)
类型转换&检查
类型转换
强制类型转换
强制类型转换通过
(NewType)
形式实现类型的强制转换。如下例所示,将aList
强制转换为ArrayList
类型。List aList = new ArrayList(); ArrayList anArrayList = (ArrayList) aList;
Class对象(Java)
关于Class对象,需要了解的是:
- 每个类都有一个Class对象
- 默认情况下,类通过“原生类加载器”从磁盘中加载;可以挂接其他的类加载器
- Java采用动态加载机制;类在第一次被访问静态成员时被加载,从这个角度上讲,可以认为构造器为类的静态方法
JavaScript函数
定义函数
最常见的函数定义方法如下所示,该示例定义了一个函数——sayHi。
sayHi();
function sayHi(name, message) {
alert("hello " + name + "," + message);
}
还可以通过函数表达式定义一个函数,如下例所示,同样定义了函数sayHi,只不过sayHi在这里是作为一个变量出现的,使用typeof sayHi
检测得到"function"
。但由于JavaScript变量初始化顺序的问题,这种定义方式要求函数必须在声明后才能使用,而不能像前面的示例一样在声明前使用。而且,从这种定义方式,也就不难理解另一个现象:函数可以被覆盖,就像变量被重新赋值一样。
JavaScript数据类型检测
数据类型概述
JavaScript的数据类型不像Java等语言那样清晰,或许这是JavaScript的变量是松散类型的原因。概括地讲,JavaScript变量的数据类型包括:
- Undefined
- Boolean
- Number
- String
- Object
- Function
其中,Boolean/Number/String为基本类型,Object为引用类型,Function为函数,Undefined为JavaScript作为松散类型所特有的数据类型,在后文中会专门介绍。
注:
在【JavaScript高级程序设计】中,还定义了专门的Null类型,表示字面值为null
的变量;并将Undefined类型也作为基本数据类型的一种。
JavaScript变量
在JavaScript中定义变量
如下所示,定义变量message
,并赋值"hi"
。
var message = "hi";
其中,关键字var
可省略,即直接通过message = "hi";
定义变量,但这种方式不推荐使用(该问题会在全局变量与局部变量中再讨论)。
此外,也可以通过下面的方式一次定义多个变量。
使用SSH密钥实现Git多账号切换
阅读本文前,请先参考使用SSH密钥连接Git仓库了解SSH密钥配置方法。
场景
有时,在一台机器上需同时使用多个Git账号(个人账号和工作账号),不同的Git仓库使用不同的账号访问。本文将介绍如何通过配置实现该需求。
使用SSH密钥连接Git仓库
检查SSH密钥是否存在
打开Git Bash
,执行下面的命令,显示.ssh
目录下的所有文件:
ls -al ~/.ssh
如果该目录下已经存在密钥对(比如,id_rsa.pub
/id_rsa
是一对公/私钥),可跳过下一步直接添加密钥到ssh-agent。