JavaScript

预约义分外类

本条头文件包涵的内容极度轻巧,只满含9个可怜类,均从exception类派生,因而大家用三张图来描述:

图片 1
图片 2
图片 3

此间仅解释两点:

  • overflow : 指值的尺寸超越 整型
    变量能代表的范围,即稍差于最小值、大于最大值
  • underflow : 指浮点值的量级小于 浮点
    变量能表示的矮少量级,即太周围浮点数0,非常小概代表

Java学习整理笔记(三)数据类型,java数据类型

数据类型:

数据类型明确了数据在内部存款和储蓄器中占用的蕴藏空间以及存款和储蓄情势。每一个数据类型都有它的取值范围,编写翻译器依据各种变量或常量的数据类型为其分配内部存储器空间。

Java语言的数据类型能够分成两类:一类是简约数据类型(或骨干数据类型),比方整数类型、浮点数类型、字符型类型和布尔类型等;另一种是援引类型,例如数组类型、类、接口等。

一、基本数据类型

8种为主数据类型,分别是字节型(byte)、短整型(short)、整型(int)、长整型(long)、字符型(char)、浮点型(float)、双精度型(double)、布尔型(boolean)。

1.整数品类:

Java使用4种等级次序的平头:byet、short、int 和 long,都是有暗记的整数。

(与有暗号整数对应的是无符号整数,两个的分化在于把二进制数转变为十进制数的不二等秘书诀不平等。有标识数把二进制的第二位作为标记位,当第四位数是0时,对应十进制的正整数;当首位是1时,对应十进制的负整数。无符号整数在进展进制调换时,把二进制的具备位转化为正整数。)

专注:Java不帮忙可是是正的无符号的大背头。

(1)字节型(byte):最小的整数类型。有记号的8位类型,数的限量是
-128~127。当从网络或文件管理数据流的时候,字节类型的变量特别有用。

宣示字节变量: byte 变量名;

(2)短整型(short):有暗号的16人类型,数的限量是
-32768~32767。因为它被定义为高字节优先(称为
big-endian格式),它大概是Java中应用的最佳的种类。

扬言短整型变量: short 变量名;

(3)整型(int):最常用的整数类型。有暗号的33位类型,数的范围是 -2147
483 648~2147 483 647。int类型的变量常常被用来调节循环及作为数组的下标。

其余时候,若是整数表达式包括byte、short、int及整型常量。在开始展览计算从前,全数表明式的等级次序被进级(自动转变)到整型。

宣称整型变量: int 变量名;

(4)长整型(long):有暗记的六16位类型,它对于那三个整型不足以保存所要求的数值时是一蹴而就的。长整型数的限定是一对一大的。

声称长整型变量: long 变量名;

2.浮点型:

Java使用二种档案的次序的浮点数:float和double。double型的囤积空间是float型的两倍,所以double型又称为双精度,而float型又称作单精度。当数码或表明式的值有精度需求时,要求利用浮点型数据。

(1)单精度浮点型(float):专指占用叁10位存储空间的单精度值(Single-Precision)。单精度在局地Computer上比双精度更加快并且只占用双精度一般的上空,可是当班值日异常的大或十分小的时候,它将变得不规范。当需求小数部分还要对精度的渴求不高时,单精度浮点型的变量是卓有成效的。

证明单精度浮点型变量: float 变量名;

(2)双精度浮点型(double):占用六15个人的寄放空间。全体逾越人类经历的数学函数,如sin()、cos()和sqrt()均重回双精度的值。当需求保持数11回回到迭代的乘除的精确时,或在操作值一点都不小的数字时,双精度型是最佳的精选。

注明双精度浮点型变量: double 变量名;

3.字符型(char):

在微型Computer中,全体的数据在蕴藏和运算时都要利用二进制数表示(因为计算机用高电平和低电平表示1和0)。将字符映射为它的二进制格局的进度称为编码(Encoding)。

为了能够落到实处互相之间通讯而不变成混乱,就不可能不运用同样的编码法规或编码格局。当前选取最广大的三种编码方式是
统一码(Unicode)和美国正规新闻沟通代码(ASCII)码。

在Java中,字符型数据用 char
关键字张开定义,采取Unicode码代表字符,使用16人数据表示字符集。

4.布尔型(boolean):

Java中表示逻辑值的简约类型。它的值只可以是 true(真)或
false(假)那八个值中的二个。它是有所的比如说 a<b
那样的涉及运算的回到类型。布尔类型对保管像
if、for那样的支配语句的尺度表明式也是不能缺少的。

 

二、定义常量

在程序运维进度中,其值无法更换的量称为常量。常量必须在长期以来条语句中证明和赋值,final是声称常量的Java关键字

先后中常量名具有字母最棒用小写格局,词与词之间能够用下划线隔绝。

Java中常用的常量有布尔型常量、整型常量、浮点型常量、字符常量和字符串常量。

1.布尔型常量:

布尔型常量用于表示五个逻辑状态之一的值:true(真)或false(假)。区别于C/C++语言,Java语言中规定不得将布尔型看成整型值。

留意:在Java语言中,true常量的值不等于1,false常量的值不等于0,它们仅仅能被赋给已定义的布尔变量,或在布尔运算符表明式中选拔。

2.整型常量:

其它贰个整数的值正是二个整数常量。整型常量能够用来给整型变量赋值。整型常量有3种表示方式:

(1)十进制整型常量:如 1,25,-37等。

(2)八进制整型常量:在Java语言中,以0起首的整型量表示八进制整型常量,如
010 表示十进制的 8 ,-015 表示十进制的 -13。

(3)十六进制整型常量:在Java语言中,以 0x 或 0X
开首的整型常量表示十六进制整型常量,如 0x10 表示十进制的 16 , -0X15
表示十进制的 -21 。

在Java语言中,整形常量的暗中同意类型为int值,用4个字节表示。当四个整型常量的值被赋给一个byte 或 short
型的变量时,固然常量的值未有超越对应品种的限定期不会发出错误。所以,整型常量总是能够被赋给三个long型变量。不过,借使要表示一个long类型的常量,则要专门指明,即由此在常量的前面加多少个大写或小写的
L 来实现,如 1234567L 等。

3.浮点型常量:

浮点型常量是足以涵盖小数点的数值型常量。依照占用内部存款和储蓄器长度的两样,能够分成一般浮点常量和双精度常量。如若要代表一般浮点常量,可以在数值后面加上f或F;假如要代表双精度常量,能够在数值前边加上d和D。

瞩目:Java中的浮点型常量暗许是双精度。

暗中认可的双精度类型要私吞61人存款和储蓄空间,而规范低些的浮点类型仅仅需求三12位。

4.字符常量:

Java用
Unicode字符集来代表字符。Java的字符是拾几位值,能够被更改为整数并可举行像加(+)或减(-)那样的大背头运算。

在Java语言中,有以下二种方式的字符常量:

(1)普通字符:用单引号括起来的八个字符,如
‘A’、’0’、’$’等。不可能写成’AB’或’12’。

瞩目:单引号只是界限符,字符常量只可以是一个字符,不包含单引号。’a’和’A’表示不一致的字符常量。

(2)转义字符:以字符\
开首的字符类别。那是一种在显示器上无法体现的“调节字符”,在先后中也无能为力用贰个一般格局的字符来表示,只好动用这样的奇怪格局表示。

转义字符及其作用
转义字符 名称 Unicode 输出结果
\b 退格键 \u0008   将当前位置后退一个字符
\t  Tab键 \u0009   将当前位置移动到下一个Tab位置
\n 换行符号   \u0009A 将当前位置移动到下一行的开头 
\f 换页  \u000C   将当前位置移动到下一页的开头 
\r 回车键   \u000D  将当前位置移动到本行的开头 
\\ 反斜杠   \u005C  输出此字符 
\’ 单引号   \u0027  输出此字符 
\" 双引号   \u0022  输出此字符 

 

 

5.字符串常量:

Java语言中用双引号(””)括起来的字符类别表示字符串。字符串能够涵盖转义字符,标记字符串起头和完工的双引号必须在同一行。

能够行使连接操作符(+)将多个或七个字符串常量连接在一齐组成四个新的字符串,比如”Welcome”+”to China”的结果约等于”Welcome to China”。

瞩目:不可能将 “ABC”错写为
‘ABC’。单引号内只好分包三个字符,而双引号内足以涵盖一个字符串。另外,’A’和”A”表示七个不等的量,后边多个是二个字符常量,而后面一个是三个字符串常量。

在C/C++等繁多Computer语言中,字符串作为字符的数组被完毕。然则,在Java中,字符串实际上是目的类型。

 

三、定义变量及其成效域

变量是Java程序的三个主导存款和储蓄单元,表示内部存款和储蓄器中的一小块空间,用来存款和储蓄将要先后中用到的数码。在内部存款和储蓄器中能够有比较多少个这么的小块空间,为了加以差异,为它们起分裂的名字,那几个名字就叫变量名,常常简称为变量。被称之为变量是因为它们的值在程序施行中能够被更动。

变量名坚守标志符的概念法规,每种变量都有温馨一定的门类,编写翻译器能够依据变量的数据类型为变量分合作适的蕴藏空间。

怀有的变量都有一个功用域,定义变量的可知性与生存期。

1.概念变量:

在Java中,各样变量在动用以前必须先对其展开定义,即要遵守先定义后接纳的法规。

概念变量的语法:

 

    数据类型 变量名[ = 初始值][,变量名 [ = 初始值]…];

 

数据类型能够是Java的主干项目之一,也能够是类及接口类型的名字。

变量名是用于标志该变量的名字,能够钦命一个等号和三个值来初阶化变量。

起首化表明式必须发生与钦定的变量类型同样(或包容)的变量。

扬言钦点项目标多个变量时,使用逗号将各变量分开。

例子:

int count;                    //声明 count为一个整型变量
double radius = 2.0;        //声明radius为一个double型变量,并赋初值为2.0
char ch = 'A';             //声明ch为字符类型的变量,并赋初值为字符'A'

2.变量早先化:

变量日常都有开端值。在Java中,能够在概念变量的还要对其开首化,也同目的在于变量申明时利用其余有效的表明式来动态的初叶化变量。

初阶化表达式能够运用别的有效的因素,满含方法调用、别的变量或字面量。

3.变量的作用域和生存期:

在Java语言中,各样变量都有一定的生存周期和卓有功效限制。变量的功用域正是变量的平价限制,唯有在那些限制内,程序代码技艺访问它。

与C语言同样,Java用大括号将若干语句组成语句块,变量的效率域都以概念它的口舌所在的语句块,一旦程序的推行离开了那一个语句块,变量就变得未有趣,无法再使用了。

变量的生命周期是指从八个变量被创设并为其分配内部存款和储蓄器空间开头,到那个变量并销毁并化解所据有的内部存款和储蓄器空间的进程。变量的作用域决定了变量的生命周期。

Java允许在任何程序块定义变量。

依照功能域的不及,变量能够分成以下项目:

(1)成员变量:在类中宣称,它的功效域是整个类。

(2)局地变量:在二个办法的中间依然措施的一个代码块的里边宣称。要是在一个措施内部宣称,它的功能域就是任何艺术;假若在一个艺术的有些代码块的中间宣称,它的功用域正是以此代码块。

(3)方法参数:方法仍旧构造方法的参数,它的成效域是整个艺术恐怕构造方法。

(4)卓殊处理参数:十分处理参数和艺术参数很相像,差别在于前面一个是传递参数给那一个管理代码块,而后人是传递参数给艺术或许构造方法。至极管理参数是指
catch(Exception e)语句中的相当参数“e”,它的功效域是追随catch(Exception
e) 语句后的代码块。

(作为贰个通用准则,在多个成效域中定义的变量对于该成效域外的先后是不可知(即访谈)的。因而,当在几个效能域中定义贰个变量时,应将该变量局地化何况爱戴它不被非授权访谈和/或改造。实际上,成效域法则为包装提供了基础。)

 效用域能够打开嵌套。比如:每回创制三个主次块时,就创设了三个新的嵌套的功用域。那样,外面包车型大巴功效域包括当中的效用域。这表示外部功用域定义的靶子对于当中功效域中的程序是可知的。不过,反过来是荒唐的,内部成效域定义的指标对于外界是不可知的。

例子:

class Scope{
    public static void main(String[] args){
        int x;      //定义局部变量x,在整个main()方法中有效
        x = 10;
        if(x==10){     //开始一个新的作用域
            int y = 20;    //定义局部变量y,在当前语句块中有效
            System.out.println("x and y:"+x+" "+y);    //x和y在这里均为有效
            x = y*2;
        }
        //y=100;     //错误,超出了y的作用范围
        x=15;      //正确,x在此处依然有效
        System.out.println("x is"+x);
    }
}    

 

还会有,变量在其成效域被创建,离开其意义域时被打消意味着二个变量一旦离开它的成效域,将不再保留它的值了。因而,四个变量的生存期就被限制在它的作用域中。假若贰个变量定义包涵八个初阶化,那么每一次步向定义它的程序块时,该变量都要被重新开首化。

就算程序块能被嵌套,不能够将里面成效域注脚的变量与其表面效用域注明的变量重名。那或多或少,Java分歧于C和C++。

数据类型:
数据类型鲜明了多少在内部存款和储蓄器中占用的蕴藏空间以及存款和储蓄方式。每种数据类型皆有…

变量

JavaScript中变量的扬言是三个特别轻易出错的点,局部变量必须多个 var
开首,如若未选用var,则暗中同意表示注脚的是全局变量。

JavaScript中代码注释:

  • 单行 //
  • 多行 /\  */*

稳重:此注释仅在Script块中生效。

JavaScript 中的数据类型分为原始类型和指标类型:

  • 原始类型
    • 数字
    • 字符串
    • 布尔值
  • 对象类型
    • 数组
    • “字典”

特意的,数字、布尔值、null、undefined、字符串是不可变。

null是JavaScript语言的关键字,它表示一个特殊值,常用来描述“空值”。
undefined是一个特殊值,表示变量未定义。

分布数据类型

1、数字(Number)

JavaScript中不区分整数值和浮点数值,JavaScript中享有数字均用浮点数值表示。

转换:

  • parseInt(..)    将某值调换到数字,不成事则NaN
  • parseFloat(..) 将某值转变来浮点数,不成功则NaN

特殊值:

  •  NaN,非数字。可使用 isNaN(num) 来判断。
  • Infinity,无穷大。可使用 isFinite(num) 来判断。

 

2、字符串(String)

字符串是由字符组成的数组,但在JavaScript中字符串是不可变的:能够访谈字符串大肆地方的文书,可是JavaScript并未有提供修改已知字符串内容的办法。

obj.length                           长度
obj.trim()                           移除空白
obj.split(delimiter, limit)          分割
obj.search(regexp)                   从头开始匹配,返回匹配成功的第一个位置(g无效)
obj.match(regexp)                    全局搜索,如果正则中有g表示找到全部,否则只找到第一个。
obj.replace(regexp, replacement)     替换,正则中有g则替换所有,否则只替换第一个匹配项,
                                     $数字:匹配的第n个组内容;
                                     $&:当前匹配的内容;
                                     $`:位于匹配子串左侧的文本;
                                     $':位于匹配子串右侧的文本
                                     $$:直接量$符号

 

3、布尔类型(Boolean)

布尔类型仅包蕴真假,与Python差别的是其首字母小写。

  • ==      比较值十三分
  • !=       不等于
  • ===   比较值和档期的顺序相等
  • !===  不等于
  • ||        或
  • &&      且

 

4、数组

JavaScript中的数组类似于Python中的列表

大面积功用:

obj.length          数组的大小

obj.push(ele)       尾部追加元素
obj.pop()           尾部获取一个元素
obj.unshift(ele)    头部插入元素
obj.shift()         头部移除元素
obj.splice(start, deleteCount, value, ...)  插入、删除或替换数组的元素
                    obj.splice(n,0,val) 指定位置插入元素
                    obj.splice(n,1,val) 指定位置替换元素
                    obj.splice(n,1)     指定位置删除元素
obj.slice( )        切片
obj.reverse( )      反转
obj.join(sep)       将数组元素连接起来以构建一个字符串
obj.concat(val,..)  连接数组
obj.sort( )         对数组元素进行排序

 

正则表明式

1、定义正则表达式

  • /…/  用于定义正则表明式
  • /…/g 表示全局相配
  • /…/i 代表不区分轻重缓急写
  • /…/m 代表多行相称
    JS正则匹配时作者就是协理多行,此处多行相称只是影响正则表明式^和$,m情势也会利用^$来协作换行的开始和结果)

 

2、匹配

JavaScript中匡助正则表明式,其利害攸关提供了四个效用:

  • test(string)     检查字符串中是还是不是和正则相称

    n = ‘uui99sdf’
    reg = /\d+/
    reg.test(n) —> true

    # 只要正则在字符串中设有就分外,假使想要开端和最终相称的话,就供给在正则前后加 ^和$

  •  exec(string)  
     获取正则表达式匹配的从头到尾的经过,假设未相称,值为null,不然,获取相配成功的数组。

    取得正则表明式相称的剧情,假如未匹配,值为null,不然,获取相配成功的数组。

    非全局方式

    获取匹配结果数组,注意:第一个元素是第一个匹配的结果,后面元素是正则子匹配(正则内容分组匹配)
    var pattern = /\bJava\w*\b/;
    var text = "JavaScript is more fun than Java or JavaBeans!";
    result = pattern.exec(text)
    
    var pattern = /\b(Java)\w*\b/;
    var text = "JavaScript is more fun than Java or JavaBeans!";
    result = pattern.exec(text)
    

    大局情势

    需要反复调用exec方法,来一个一个获取结果,直到匹配获取结果为null表示获取完毕
    var pattern = /\bJava\w*\b/g;
    var text = "JavaScript is more fun than Java or JavaBeans!";
    result = pattern.exec(text)
    
    var pattern = /\b(Java)\w*\b/g;
    var text = "JavaScript is more fun than Java or JavaBeans!";
    result = pattern.exec(text)
    

 

规格语句

JavaScript中辅助两在那之中条件语句,分别是:if 和 switch

图片 4图片 5

if(条件){

    }else if(条件){

    }else{

    }

if块

图片 6图片 7

switch(name){
        case '1':
            age = 123;
            break;
        case '2':
            age = 456;
            break;
        default :
            age = 777;
    }

switch块

循环语句

JavaScript中帮助三种循环语句,分别是:

var names = ["alex", "tony", "rain"];

for(var i=0;i<names.length;i++){
    console.log(i);
    console.log(names[i]);
}

 

var names = ["alex", "tony", "rain"];
for(var index in names){
    console.log(index);
    console.log(names[index]);
}

 

while(条件){
    // break;
    // continue;
}

 相当管理

try {
    //这段代码从上往下运行,其中任何一个语句抛出异常该代码块就结束运行
}
catch (e) {
    // 如果try代码块中抛出了异常,catch代码块中的代码就会被执行。
    //e是一个局部变量,用来指向Error对象或者其他抛出的对象
}
finally {
     //无论try中代码是否有异常抛出(甚至是try代码块中有return语句),finally代码块中始终会被执行。
}

 注:主动跑出非常 throw Error(‘xxxx’)

函数

1、基本函数

JavaScript中等高校函授数基本上能够分成一下三类:

// 普通函数
    function func(arg){
        return true;
    }

// 匿名函数
    var func = function(arg){
        return "tony";
    }

// 自执行函数
    (function(arg){
        console.log(arg);
    })('123')

 注意:对于JavaScript中函数参数,实际参数的个数可能低于格局参数的个数,函数内的极度值arguments中封装了装有实际参数。

 

作用域

JavaScript中种种函数都有友好的功能域,当出现函数嵌套时,就涌出了职能域链。当内层函数使用变量时,会基于效果与利益域链从内到外一斑斑的循环,要是空头支票,则丰裕。

咱俩必要谨记以下几点:

  1. 有着的功用域在创制函数且未进行时候就曾经存在
  2. 功能域在编写翻译进度中曾经更动了
  3. 超前注脚的前提是前面后变量定义

银角有一篇很自负的小说,叫五句话化解JavaScript效能域:

  1. JavaScript中无块级功用域
  2. JavaScript采纳函数成效域
  3. JavaScript的功效域链
  4. JavaScript的成效域链执行前已创制
  5. 宣示提前

 附上链接: 

 

闭包

闭包经常是叁个自实行函数,是指装有七个变量和绑定了这几个变量的条件的表明式(日常是叁个函数),由此那几个变量也是该说明式的一有的。它「记住了四周发出了怎样」。表现为由「一个函数」体中定义了「另个函数」.

鉴于效果域链只可以从内向外找,默许外界不可能获取函数内部变量。闭包,在外表获得函数内部的变量。

function f2(){
    var arg= [11,22];
    function f3(){
        return arg;
    }
    return f3;
}

ret = f2();
ret();

setInterval(function(){
   alert(123);
}, 1000);

function f1(arg){
   alert(arg);
}
f1(123);
//做封装,闭包
(function(arg){
   alert(arg);
})(123)

 

面向对象

JavaScript中并未有邻近于Python中的类,他的指标是由函数成立出来的.

function Foo (name,age) {
    this.Name = name;
    this.Age = age;
    this.Func = function(arg){
        return this.Name + arg;
    }
}

var obj = new Foo('alex', 18);
var ret = obj.Func("sb");
console.log(ret);

疏解下方面包车型地铁代码:

  • Foo充当的构造函数
  • this代指对象
  • 创立对象时索要运用 new

 

 

 

 

 

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注