范文一:2.3 C++数据类型
2. 3 C++的数据类型
2. 3. 1 C++的数据类型及类型修饰符
数据是 C++程序的重要组成部分, 是程序操作的对象, 它们具有一定的数据名称、 数据 类型、存储类型、作用域和生存期等属性。
数据名称是程序员为某一数据所指定的标识符。 数据类型确定了数据占用内存区域的大 小和数据存放形式。 存储类型则规定了数据在内存中的位置和生存期。 作用域确定了数据可 以使用的范围。生存期则说明了数据占用的内存时间。
2. 3. 1. 1 数据分类
可以按照不同的属性将数据进行分类。
1、按构造方式进行分类——最常用的数据分类方法(默认值)
构造方式确定了数据在内存中的存储方式和对数据可实施的操作。 在 C++中, 数据按其 构造方式可分为基本数据类型和派生 /聚合数据类型两大类,如图 2. 2所示。
(1) 、基本数据类型及其类型修饰符
基本数据类型是 C++语言预定义的数据类型。 对于多数微机, 表2. 1给出了基本数据 类型的字长和表示范围。
注 表中的字长和表示范围假定机器的字长为 16位。
空值型数据主要用在两种情况:①确定函数无返回值;②设置类属指针。
除了空值型数据以外, 基本数据类型的前面还可以加各种类型修饰符。 类型修饰符可以 改变基本数据类型的含义,以更精确地适应各种实际应用的需求。 C++中的类型修饰符共有 四种,如下所示:
signed //有符号,修饰字符型和整型
unsigned //无符号,修饰字符型和整型
long //长型,修饰整型和双精度浮点型
short //短型,修饰整型
P40 表 2. 2给出了 C++允许的所有基本数据类型和类型修饰符的组合及其字长和表示范围。
值得注意的是, 当这四种修饰符用来修饰整型数据类型 (int) 时, 关键字 int 可以省略, 只需给出类型修饰符,如:
unsigned var; ==== unsigned int var;
signed var; ==== signed int var;
short var; ==== short int var;
等等。
另外不带任何类型修饰符的 int 被认为是有符号的(即 signed int) 。而对于字符型数 据类型(char) 的情况,不同的编译系统有不同的规定。
(2)派生 /聚合数据类型
除了基本数据类型之外, C++还提供了指针、枚举、数组、函数、结构体、共用体、类 等几种派生 /聚合数据类型。这些复杂的数据类型将在后续章节中进行详细讨论。
2、按作用域进行分类
数据的作用域指的是该数据可被访问的程序区域。
可以按两种方式决定数据的作用域:
(1)对该数据进行说明的语句在程序中所处的位置;
(2)在数据定义语句前面所施加的作用域算符。
按作用域的大小不同,数据又可以分为全局数据和局部数据。
全局数据是在所有函数体和类之外定义 (即程序的全局说明部分) 进行说明的数据。 全 局数据自说明后在程序的运行过程中始终存在, 并可以被主函数及各子函数访问。 全局数据 是伴随该程序的退出而消亡的。
注意:各函数内的局部数据的标识符不能与全局数据的标识符相同。
局部数据是在某一个函数 (主函数或子函数) 内进行说明的数据。 局部数据的作用域仅 限于说明该数据的函数内, 即任何函数 (包括主函数) 都不能访问在其他函数中被说明的局 部数据。局部函数在说明他的函数被调用时产生,并在该函数调用完毕返回时消亡。
注意:不同函数的局部数据的标识符可以相同,编译器将把它们当作不同数据处理。
3、按存储类型进行分类
在一个程序运行时,其代码和数据是在内存中进行存储的。一个 C++程序在内存中所占 用的空间可分为三个区域:程序区、 静态存储区和动态存储区。 程序区用来存放函数的代码, 而静态存储区和动态存储区都可以用来存放数据。 数据在不同区域中进行存储、 体现了其不 同的生存期,即数据占有的内存期限。
静态存储区用来存放静态存储的数据, 这些数据在程序开始运行时便获得所分配的内存 单元, 并在程序的运行过程中一直占用着为其内存单元。 直到程序执行完毕, 被静态数据所 占用的内存单元才被释放。 静态数据在程序运行的整个运行过程中只进行一次初始化, 每次
访问某一静态数据时,该数据保持上次被访问修改后的值。
动态存储区用来存放动态存储的数据, 这些数据在其作用域的代码开始执行时才被分给 所需的内存单元,在其作用域的代码运行结束时,这些内存单元将被释放,进行重新分配。 动态数据在每次其作用域被调用而为动态数据分配内存单元, 该数据获得的内存单元内存在 的数据内容是不可预测的。 因此动态数据需要在其作用域每次重新被调用时进行初始化, 否 则将发生错误。
过多地使用静态存储数据会引起程序运行所占用的内存的急剧增加, 影响程序的运行效 率。因此在静态数据和动态数据的使用上应根据实际要求决定,不可滥用。
在 C++语言中,根据存储类型的不同,数据可分为四种:
(1)自动存储类型数据:用关键字 auto 进行说明,为此类数据分配存储空间及回收它 们所占用的存储空间的工作都是由系统自动处理的,属于动态存储数据类型。 C++ 编译器将 所有局部数据默认为自动存储类型,所以 auto 在实际编程中很少使用。
(2)静态存储类型数据:用关键字 static 进行说明,由于该类数据是按静态存储方式 进行保存的, 因而数据在其作用域之外仍能保留其值, 以便下次进入其作用域时能继续使用 该值。
(3)寄存器存储类型数据:用关键字 regist 进行说明,该类型数据彩动态存储方式进 行保存,但与 auto 类型不同的是,编译器会尽可能地将所说明的该类数据存储在 CPU 的寄 存器中。 其目的是为了提高访问效率。 若在程序运行的某一时期 CPU 暂时没有空闲的寄存器, 则编译系统的优化功能会当作自动存储类型数据处理; 反之也可以。 因此很少用到寄存器存 储类型数据。
值得注意的是全局数据及静态数据不能说明为寄存器存储类型, 否则两者的说明发生矛 盾。
(4)外部存储类型数据:用关键字 extern 进行说明,该类型数据主要用在由多个源文 件组成的程序中,向编译器说明该数据在其它文件中已经定义过了。不带 extern 说明的全 局数据属于定义性说明。 在一程序的多个源文件中, 对同一个数据只能在一个文件中进行一 个定义性说明,此时编译将为该文件中说明的数据分配内存。
注意:①变量的初始化也属于定义性说明,不能在其他文件中再对其进行初始化。 ②若程序中的所有源文件对某一全局数据所作的全是外部说明,也没有初始化, 则编译器将从中任意选取其中一个外部数据的说明作为其定义性说明。
例 2. 6 自动存储类型数据和静态存储类型数据比较示例
//EX2_6.CPP
//自动存储类型数据和静态存储类型数据比较示例
#include void display(int var);//子函数的引用说明 void main()//程序的主函数 { int i,j; i=19; j=91; display(i); display(j); } void display(int var) { int auto_var=10; //自动存储类型数据,初始化 static int static_var=10; //静态存储类型数据,初始化 auto_var+=var; static_var+=var; cout cout } 4、按访问特性进行分类 数据的访问特性指的是对数据进行访问时的权限规定。在 C++中有两种访问修正符: const 和 volatile 。在 C++中,数据的访问特性有只读和读写两种。其对应的数据类型为常 量(用 const 说明)和变量(用 volatile 说明 ) 。 常量是指其值在程序运行的过程中固定不变的数据。又分为: (1) 普通常量——是指直接用值来表示,不需要进行任何说明就可以直接使用。 (2) 符号常量——是指用一定标识符来表示, 且在程序运行过程中, 只在程序开 始运行阶段赋一次初值勤, 其后便是不可改写的词法符号。 在程序运行的过程中, 对符号常 量的访问是只读的,因此在说明符号常量的同时,必须对该常量赋值。 变量是指在程序运行的过程中, 其值可以多次被修改的数据。 在程序的运行过程中, 对 变量的访问既可读取数据,又可以对其进行赋值。 注意:若在变量的说明时没有为其赋初值,则对该变量的第一次访问必须是对其赋值, 否则读取的数据是不可预测的。 2. 3. 1. 2 数据说明 使用数据的一个基本原则是数据必须先说明, 后使用。 在对数据进行说明时, 编译器为 其分配相应的内存单元。在对该数据进行访问之前,必须对数据进行初始化。 在进行数据说明时应指定该数据的存储类型、 数据类型及其标标识符。 数据说明的形式 如下所示: <存储类型>数据类型 标识符; 在 C++中分别使用 auto 、 static 、 regist 、 extern 进行说明,存储类型向编译器指定 了该数据的存储位置。 数据类型确定了为该数据所分配的内存单元的大小及数据保存和读取的形式。 标识符即程序员为该数据指定的名称。 在某一数据的作用域内, 标识符与数据一一对应, 可以通过标识符访问指定的数据。 数据的存储类型可以缺省。 缺省时, 编译器会根据数据的类型和作用域为其指定相应的 存储类型。 如函数的缺省存储类型为 extern, 全局数据的缺省存储类型为 static , 而局部数 据的存储类型为 auto 。 数据的作用域则由数据说明语句在程序中所处的位置决定。 在进行数据说明时, 可同时 对数据进行初始化,也可放在后面进行(P45例) 。 2. 3. 2 常量 常量是指用来表示固定的数据或字符值的词法符号。 对于符号常量, 在对其进行说明的 同时赋予初值,且其值在程序的运行过程中不允许进行修改。在 C++ 中,有以下几种不同 类型的常量:整型常量、浮点数常量、字符串常量和枚举型常量。 1、整型常量 整型常量可以用八进制、十进制、十六进制来表示。 八进制整型常量由 0~7这 8个数字组成,且其右端第一个数字必须为 0。 十进制整型常量由 0~9这 10 个数字组成,且第一个数字不能为 0。 十进六制整型常量必须以 0x (或 0X )开头。其中的字母可以大写也可以小写。 这三种进制的整型常量前面都可以加正负号(+/- )来表示其数值的正负,正号可以不 写。 同时,可以在整型常量的末尾添加一定的标识符将某一常量标识符为特定类型的常量。 整型常量末尾的字符 L 或 l 将该常量标识为 long 型的数值 (建议用 L 表示) ; 整型常量末尾 同时加上字符 U 或 u 将该常量标识为 unsigned 型的数值; 也可以将以上两种方式进行组合。 如:3645L , 0x89Lu,0256UL 此外为了使得程序中各常量的含义更加明确, 增加程序的可读性, 可采用符号常量。 符 号常量可采用预处理宏替换指令 #define或 const 类型修饰符进行说明(一一对应) ,以便 在程序中通过某标识符来访问常量。 利用预处理宏替换指令对符号常量进行说明的形式如下: #define 符号常量标识符 常量值 (例如:#define count 20) 在 C++中,提供了类型修饰符 const 对符号常量进行标识,其形式如下: const 数据类型 符号常量标识符 =常量值; 例如:const int bufsize=1024; 注意:(1) 、必须对符号常量赋初值——常量值,之后不能修改。否则会出现错误 (2) 、不能把一个符号常量的地址赋给一个普通指针,否则会出现编译错误。因 为常量的值有可能会通过指针间接地进行修改。 (详见后续章节) 例如:const int count=120; int *pt=&count;//错误,将符号常量的地址赋给普通指针。 当然, 符号常量的地址也可以用特殊的指针来保存, 即定义一个指向常量的指针, 例如: const int *pt; 此处, pt 是一个指向整型常量的指针,为该指针所分配的内存单元内保存着一个整型 数据的内存地址,通过该地址可以对该整型数据进行访问。在程序中, pt 可以指向任何一 个整型数据(包括常量和变量) ,但是 pt 所指向的数据不可以通过 pt 来改变其数值。一个 常量的地址只能赋给一个常指针, 但是一个常量既可以保存常量的地址, 也可以保存变量的 地址。指向常量的指针通常用于定义函数的正规参数。 (?) 2、浮点型常量 浮点型常量可以用十进制表示法或科学计数法表示。 在采用十进制表示时, 该常量都应 该带有小数点。在采用科学计数法进行表示时,其形式如下: 尾数部分 +E(或 e ) +指数部分 一个浮点数常量可以用跟在常数后的字母 F 或 f 将其标识为 float 型。 例如:3. 0.5f 5e7 2.0e-5 与整型常量相似, 也可以定义符号常量表示浮点型常量。 定义方法与在整型常量中所述 的方法相同。例如; #define PI 3.14159265 有关符号常量及其指针的一些规则, 在对整型常量一节中已进行讨论。 这些规则对任何 类型的常量都适用,具有一般性,此处不在论述。 3、字符型常量 字符型常量是一个用单引号括起来的单一字符。例如:? A ? ? 7? 。其字符的集合并不 限于 ASCII 码字符集。 注意:单引号本身不是字符常量的内容。 若想使用不可打印输出的字符、 单引号、 双引号和反斜线等字符时, 可以使用转义字符 序列进行表示,例如: 换行符 (newline ) \n 水平制表符 (horizontal tab) \t 垂直制表符 (vertical tab) \v 退格符 (backspace ) \b 回车符 (carriage return) \r 换页符 (formfeed) \f 响铃 (alert bell) \a 反斜线 (backslash) \\ 问号 (question mark) \? 单撇号 (single quote) \? 双撇号 (double quote) \” 另外,还可以用一个八进制数来表示一个字符常量,其形式如下: \nnn 其中, nnn 代表一个 3位八进制数,其数值表示该字符在内部字符集中的序号。 例如:\0 空字符 (null ) \7 响铃 (alert bell) \064 符号 @ (@) 字符常量也可以用符号常量来表示,其定义方法同整型常量。 4、字符串常量 字符串常量是一组连续的字符序列, 该字符序列用双引(撇) 号括起来, 其中的非输出 字符可以由它们的转义字符序列表示。 注意:双引(撇)号只起到定界符的作用,它本身并不是字符串常量的一部分,若在字 符串中包含双撇号时,必须使用其转义字符表示。 例如:” ” ,” \n Name: \t\” Tsinghua\” [CHN]\n” 一个字符串可以在连续的几行中书写,在行末加一个续行符(\)表示下一行文本是本 行中字符串常量的延续。例如: “ Beijing,China\n\ Tsinghua university\n\ Civil Engineer.\n” 在保存字符串常量时, 除了组成字符串常量的字符序列本身外, 系统还自动在该字符串 的结尾处添加一个空字符 null ,用于标识一个字符串的终结。因此所占据的内存单元比该 字符串的元素所用的内存单元长度多一个字节。 例如:? A ? “ A ” 2. 3. 3 变量 变量是内存中用一具标识符命名的存储单元, 可以用来存储一个特定类型的数据, 且数 据的值在程序的运行过程中可以进行修改。 在 C++中,使用某变量之前必须对该变量进行说明。变量说明通知编译器为变量分配内 存空间。变量说明的一般形式如下: <存储类型> 数据类型 变量 1<,变量 2,...="">; 存储类型即为 auto,regist,static,extern 中之一, 缺省时, 编译器将根据对该变量进 行说明的语句的位置, 即该变量的作用域, 为该变量指定相应的存储类型 (参照数据分类的 有关内容) 。 数据类型指的是按构造进行分类的基本数据类型或聚合数据类型中的一种。 它决定了该 变量可以存储的数据的种类, 编译器将根据该类型数据的存储特性为该变量分配相应大小的 内存单元,同时规定了在该变量上可施加的操作集。 变量名是程序员为该变量指定的标识符,它的组成应该满足 C++标识符命名的所有原 则。 在 C++中,一个语句的结束以分号“; ”进行标识。在对多个变量进行说明时,如果需 要, 某一说明语句可以跨越多行, 且无需任何续行符, 说明语句的结束以遇到的第一个分号 为标志。例如: unsigned int count; double mathScore,phyScore, geoscore,engScore; //说明了 4个双精度型变量 注意:(1) 、 C++是一种区分大小写的语言。 (2) 、 在某一变量的作用域, 同名变量只能作一次定义性说明; 不同作用域内的变量, 它们的标识符(变量名)可以相同。 (3) 、 变量在使用之前一定要赋初值, 否则将导致计算结果的错误或有可能死循环或死 机。 (4) 、 C++的变量说明语句可以放在程序的任何位置,只要在该变量的使用之前甚至在 使用它的同时说明即可。 下面通过一个例子体会 C++变量说明的灵活性。 [例 2. 7] 乘法表打印程序——体会 C++变量说明的灵活性。 //EX2_7.cpp //乘法表打印程序——体会 C++变量说明的灵活性。 #include void main() { printf(“ 基本乘法表 :\n” );//输出表头信息并换行 printf(“ ********” );//输出标题行首字符 for (int i=1;i<> { printf(“ %li” ,i);//输出标题行各列标题 } printf(“ \n” ); for(i=1;i<=9; i++)="" 共进行="" 9次循环,循环变量从="" 1到="" 9="">=9;> printf(“ %lix” ,i);//输出各行的标题 for (int j=1;j<=i;j++) 共进行="" i="" 次循环,循环变量从="" 1到="" i="">=i;j++)> printf(“ %2I” ,i*j);//输出两循环变量相乘结果 } printf(“ \n” );//结束一行输出,进行换行。 8种基本数据类型及取值范围: 整数类型 占位 最大值 最小值 byte 8位补码 0x7f(127) 0x80(-128) short 16位 0x7fff(32767) 0x8000(-32768) int 32位 0x7fffffff(2G-1)2^31-1或21亿 0x80000000(-2G) long 64位 2^63-1 -2^63-1 浮点数型:float 占用4字节,范围是-3.403E38~3.403E38 ,double 占用6字节 范围是-1.798E308~1.798E308 字符型:char Boolean(布尔)型;boolean int类型的数据能表示的范围比float类型小,int类型数据表示的精度比float大,double精度比int精确,但是不如long;double范围远远大于long 引用数据类型:类(class) 接口(interface) 数组(array) Java标识符命名规则: 标识符由字符,下划线"_",美元符"$"或数字组成 标识符应以字母,下划线,美元符开头 Java标识符大小写敏感,长度无限制 约定俗称:Java标识符选取因注意"见名知意"且不能与Java语言的关键字重名 Java中一些赋以特定的含义,用做专门用途的字符串称为关键字(keyword) 所有Java关键字都是小写英文 goto和const虽然从未使用,但也被Java关键字保留 Java的常量值用字符串表示,区分为不同的数据类型 如整型常量123 实型常量3.14 字符常量'a' 逻辑常量true,false 字符串常量"helloworld" Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域 从本质上讲,变量其实是内存中的一小块区域,使用变量名来访问这块区域 因此,每一个变量使用前必须要先申请(声明).然后必须进行赋值(填充内容),才能使用 内存分四个区域: code segment 存放代码 data segment 静态变量 字符串常量 stack 局部变量 栈 heap new出来的东西 堆 Java变量的分类 按被声明的位置划分: 局部变量:方法或语句块内部定义的变量 成员变量: 方法外部,类的内部定义的变量 注意:类外面(与类对应的大括号外面)不能有变量的声明 按所属的数据类型划分: 逻辑型-boolean类型适于逻辑运算,一般用于程序流程控制 boolean类型数据只允许取值true或false,不可以0货非0的整数替代true和false,这点和C语言不同 文本型-char 整数型-byte,short,int,long 浮点数型-float,double 字符型char char型数据用来表示通常意义上"字符" 字符常量为用单引号括起来的单个字符,例如: char eChar = 'a';char cChar='中'; Java字符采用Unicode编码,每个字符占两个字节,因而可用十六进制编码形式 例如: char c1 = '\u0061'; 注:Unicode是全球语言统一编码 Java语言中还允许使用转义字符'\'来将其后的字符转变为其他的含义,例如: char c2='\n';//'\n'代表换行符 while &&do while语句 while语句为如下形式: while{逻辑表达式,}{语句;...} 执行过程 先判断逻辑表达式 的值 若=true,则执行其后面的语句,然后再次判断条件并反复执行,直到条件不成立为止 do{语句;...}while(逻辑表达式); 执行过程: 先执行语句,再判断逻辑表达式的值,若为true,再执行语句,否则结束循环 break语句用于终止某个语句块的执行,用在循环语句体中,可以强行退出循环,例如 continue语句用在循环语句体中用于终止某次循环过程,跳过循环体中continue 语句下面未执行的循环,开始下一次循环过程 switch(){条件语句补充 casexx: ... casexx: ... default: ... } 小心case穿透,推荐使用break语句 多个case可以合并到一起, default可以省略,但不推荐省略 switch java中switch语句只能探测int类型值,也可以探测char,byte,short三种类型,因为这三种类型会自动转换为int类型 方法 Java的方法类似于其他语言的函数,是一段用来完成特定功能的代码片段 方法的本质是程序的复用性 形式参数:在方法被调用时用于接收外界输入的数据 实参:调用方法时实际传给方法的数据 返回值:方法在执行完毕后返还给调用它的环境的数据 面向对象: 对象是Java程序的核心,在Java程序中"万事万物皆对象" 对象可以看成是静态属性(成员变量)和动态属性(方法)的封装体 类是用来创建同一类型的对象的"模板",在一个类中定义了该类对象所应具有的 成员变量以及方法 返回值类型:事先约定的返回值的数据类型,如无返回值,必须给出返回值类型void Java语言中使用下述形式调用方法:对象名.方法名(实参列表) 实参的数目,数据类型和次序必须和所调用方法声明的形参列表匹配 return 语句终止方法的运行并指定要返回的数据 成员变量 成员变量可以是Java语言中任何一种数据类型(包括基本类型和引用类型) 在定义成员变量时可以对其初始化,如果不对其初始化,Java使用默认的之对其初始化 引用 Java语言中除基本类型之外的变量类型都称之为引用类型 如何在内存中区分类和对象? 类是静态的概念,代码区 对象是new出来的.位于堆内存,类的每个成员变量在不同的对象中都有不同的值(除了静态变量) 而方法只有一份,执行的时候才占用内存 对象的创建和使用 必须使用new关键字创建对象 使用对象(引用).成员变量或来引用对象的成员变量 使用对象(引用).方法(参数列表)来调用对象的方法 同一类的每个对象有不同的成员变量存储空间 同一类的每个对象共享该类的方法 构造方法(构造函数) 使用new+构造方法,创建一个新的对象 构造函数式定义在Java类中的一个用来初始化对象的函数 构造函数与类同名且没有返回值 8种基本数?据类型及取?值范围: ?整数类型 ? 占位 ? 最大?值 最?小值 b?yte ? ? ? 8位补码? ? ? ?0x7f(?127) ? 0x8?0(-12?8) ? sho?rt ? 16位? ? 0x7f?ff(32?767) ? ? 0x8?000(-?32768?) int? 3?2位 ? 0x7f?fffff?f(2G-?1)2^3?1-1或2?1亿 0x?80000?000(-?2G) ?long ? 64位? 2^6?3-1 ? -2^?63-1 ? 浮点数型?:floa?t 占用?4字节,范?围是-3.?403E3?8~3.4?03E38? ,dou?ble ?占用6字节? 范?围是-1.?798E3?08~1.?798E3?08 字符?型:cha?r Boo?lean(?布尔)型;?boole?an i?nt类型的?数据能表示?的范围比f?loat类?型小,in?t类型数据?表示的精度?比floa?t大,do?uble精?度比int?精确,但是?不如lon?g;dou?ble范围?远远大于l?ong ? 引用数?据类型:类?(clas?s) (int?erfac?e) 接?口 数?组(arr?ay) J?ava标识?符命名规则?: 标识符?由字符,下?划线"_"?,美元符"?$"或数字?组成 标识符应以字母??,下划线,?美元符开头? Java?标识符大小?写敏感,长?度无限制 ? 约定俗称?:Java?标识符选取?因注意"见?名知意"且?不能与Ja?va语言的?关键字重名? Jav?a中一些赋?以特定的含?义,用做专?门用途的字?符串称为关?键字(ke?yword?) 所有J?ava关键?字都是小写?英文 go?to和co?nst虽然?从未使用,?但也被Ja?va关键字?保留 J?ava的常?量值用字符?串表示,区?分为不同的?数据类型 ?如整型常量?123 实?型常量3.?14 字符?常量'a'? 逻辑常量?true,?false? 字符串常?量"hel?lowor?ld" ?Java变?量是程序中?最基本的存?储单元,其?要素包括变?量名,变量?类型和作用?域 从本质?上讲,变量?其实是内存?中的一小块?区域,使用?变量名来访?问这块区域? 因此,每一个变量使??用前必须要?先申请(声?明).然后?必须进行赋?值(填充内?容),才能? 使用 内?存分四个区?域: co?de se?gment? 存放代?码 dat?a seg?ment ? 静态变量? 字符串常?量 sta?ck ? 局?部变量 ?栈 hea?p ? ne?w出来的东?西 堆 ? Java?变量的分类? 按被声明?的位置划分?: 局部变?量:方法或?语句块内部?定义的变量? 成员变量?: 方法外?部,类的内?部定义的变?量 注意:?类外面(与?类对应的大?括号外面)?不能有变量?的声明 ?按所属的数?据类型划分?: 逻辑型?-bool?ean类型?适于逻辑运?算,一般用?于程序流程?控制 bo?olean?类型数据只?允许取值t?rue或f?alse,?不可以0货?非0的整数?替代tru?e和fal?se,这 点?和C语言不?同 文?本型-ch?ar 整数型?-byt?e,sho?rt,in?t,lon?g 浮点数?型-flo?at,do?uble ? 字符型c?har c?har型数?据用来表示?通常意义上?"字符" ?字符常量为?用单引号括?起来的单个?字符,例如?: cha?r eCh?ar = ?'a';c?har c?Char=?'中'; ?Java字?符采用Un?icode?编码,每个?字符占两个?字节,因而?可用十六进?制编码形式? 例如: ?char ?c1 = ?'\u00?61'; ?注:Uni?code是?全球语言统?一编码 J?ava语言?中还允许使?用转义字符?'\'来将?其后的字符?转变为其他?的含义,例?如: ch?ar c2?='\n'?;//'\?n'代表换?行符 w?hile ?&&do ?while?语句 ?while?语句为如下?形式: w?hile{?逻辑表达式?,}{语句?;...}? 执行过程? 先判断?逻辑表达式?的值 若=?true,?则执行其后?面的语句,?然后再次判?断条件并 反?复执行,直?到条件不成?立为止 d?o{语句;?...}w?hile(?逻辑表达式?); 执行过程?: 先?执行语句,?再判断逻辑?表达式的值?,若为tr?ue,再执?行语句,否?则结束循环? brea?k语句用于?终止某个语?句块的执行?,用在循环?语句体中,?可以强行退?出循环,例?如 co?ntinu?e语句用在?循环语句体?中用于终止?某次循环过?程,跳过循?环体中co?ntinu?e 语句下?面未执行的?循环,开始?下一次循环?过程 ?switc?h(){条?件语句补充? cas?exx: ? ...? cas?exx: ? ...? def?ault:? ..?. } ?小心cas?e穿透,推?荐使用br?eak语句? 多个ca?se可以合?并到一起,? defa?ult可以?省略,但不?推荐省略 ?switc?h jav?a中swi?tch语句?只能探测i?nt类型值?,也可以探?测char?,byte?,shor?t三种类型?,因为这三?种类型会自?动转换为i?nt类型 ? 方法 J?ava的方?法类似于其?他语言的函?数,是一段?用来完成特?定功能的代?码片段 方?法的本质是?程序的复用?性 形式参数?:在方?法被调用时?用于接收外?界输入的数?据 实参:?调用方法时?实际传给方?法的数据 ?返回值:方?法在执行完?毕后返还给?调用它的环?境的数据 ? 面向对?象: 对象?是Java?程序的核心?,在Jav?a程序中"?万事万物皆?对象" 对?象可以看成?是静态属性?(成员变量?)和动态属?性(方法)?的封装体 ?类是用来创?建同一类型?的对象的"?模板",在?一个类中定?义了该类对?象所应具有?的 成员变?量以及方法? ? 返回值类?型:事先约?定的返回值?的数据类型?,如无返回?值,必须给?出返回值类?型void? Java?语言中使用?下述形式调?用方法:对?象名.方法?名(实参列?表) 实参?的数目,数?据类型和次?序必须和所?调用方法声?明的形参列?表匹配 r?eturn? 语句终止?方法的运行?并指定要返?回的数据 ? 成员变量? 成员变?量可以是J?ava语言?中任何一种?数据类型(?包括基本类?型和引用类?型) 在?定义成员变?量时可以对?其初始化,?如果不对其?初始化,J?ava使用?默认的之对?其初始 化 ? 引用 J?ava语言?中除基本类?型之外的变?量类型都称?之为引用类?型 如何在?内存中区分?类和对象?? 类是静态?的概念,代?码区 对象是?new出?来的.位于?堆内存,类?的每个成员?变量在不同?的对象中都?有不同的值?(除 了静态?变量) 执行的?时候才占用?内存 而?方法只有一?份, 对?象的创建和?使用 必须使用?new?关键字创建?对象 使用?对象(引用?).成员变?量或来引用?对象的成员?变量 使用对象?(引用?).方法(?参数列表)?来调用对象?的方法 同?一类的每个?对象有不同?的成员变量?存储空间 ?同一类的每?个对象共享?该类的方法? 构造?方法(构造?函数) 使?用new+?构造方法,?创建一个新?的对象 构?造函数式定?义在Jav?a类中的一?个用来初始?化对象的函?数 构造函?数与类同名?且没有返回?值 ? ? 8种基本数据类型 8种基本数据类型及取值范围: 整数类型 占位 最大值 最小值 byte 8位补码 0x7f(127) 0x80(-128) short 16位 0x7fff(32767) 0x8000(-32768) int 32位 0x7fffffff(2G-1)2^31-1或21亿 0x80000000(-2G) long 64位 2^63-1 -2^63-1 浮点数型:float 占用4字节,范围是-3.403E38~3.403E38 ,double 占用6字节 范围是-1.798E308~1.798E308 字符型:char Boolean(布尔)型;boolean int类型的数据能表示的范围比float类型小,int类型数据表示的精度比float大,double精度比int精确,但是不如long;double范围远远大于long 引用数据类型:类(class) 接口(interface) 数组(array) Java标识符命名规则: 标识符由字符,下划线"_",美元符"$"或数字组成 标识符应以字母,下划线,美元符开头 Java标识符大小写敏感,长度无限制 约定俗称:Java标识符选取因注意"见名知意"且不能与Java语言的关键字重名 Java中一些赋以特定的含义,用做专门用途的字符串称为关键字(keyword) 所有Java关键字都是小写英文 goto和const虽然从未使用,但也被Java关键字保留 Java的常量值用字符串表示,区分为不同的数据类型 如整型常量123 实型常量3.14 字符常量'a' 逻辑常量true,false 字符串常量"helloworld" Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域 从本质上讲,变量其实是内存中的一小块区域,使用变量名来访问这块区域 因此,每一个变量使用前必须要先申请(声明).然后必须进行赋值(填充内容),才能使用 内存分四个区域: code segment 存放代码 data segment 静态变量 字符串常量 stack 局部变量 栈 heap new出来的东西 堆 Java变量的分类 按被声明的位置划分: 局部变量:方法或语句块内部定义的变量 成员变量: 方法外部,类的内部定义的变量 注意:类外面(与类对应的大括号外面)不能有变量的声明 按所属的数据类型划分: 逻辑型-boolean类型适于逻辑运算,一般用于程序流程控制 boolean类型数据只允许取值true或false,不可以0货非0的整数替代true和false,这点和C语言不同 文本型-char 整数型-byte,short,int,long 浮点数型-float,double 字符型char char型数据用来表示通常意义上"字符" 字符常量为用单引号括起来的单个字符,例如: char eChar = 'a';char cChar='中'; Java字符采用Unicode编码,每个字符占两个字节,因而可用十六进制编码形式 例如: char c1 = '\u0061'; 注:Unicode是全球语言统一编码 Java语言中还允许使用转义字符'\'来将其后的字符转变为其他的含义,例如: char c2='\n';//'\n'代表换行符 while &&do while语句 while语句为如下形式: while{逻辑表达式,}{语句;...} 执行过程 先判断逻辑表达式的值 若=true,则执行其后面的语句,然后再次判断条件并反复执行,直到条件不成立为止 do{语句;...}while(逻辑表达式); 执行过程: 先执行语句,再判断逻辑表达式的值,若为true,再执行语句,否则结束循环 break语句用于终止某个语句块的执行,用在循环语句体中,可以强行退出循环,例如 continue语句用在循环语句体中用于终止某次循环过程,跳过循环体中continue 语句下面未执行的循环,开始下一次循环过程 switch(){条件语句补充 casexx: ... casexx: ... default: ... } 小心case穿透,推荐使用break语句 多个case可以合并到一起, default可以省略,但不推荐省略 switch java中switch语句只能探测int类型值,也可以探测char,byte,short三种类型,因为这三种类型会自动转换为int类型 方法 Java的方法类似于其他语言的函数,是一段用来完成特定功能的代码片段 方法的本质是程序的复用性 形式参数:在方法被调用时用于接收外界输入的数据 实参:调用方法时实际传给方法的数据 返回值:方法在执行完毕后返还给调用它的环境的数据 面向对象: 对象是Java程序的核心,在Java程序中"万事万物皆对象" 对象可以看成是静态属性(成员变量)和动态属性(方法)的封装体 类是用来创建同一类型的对象的"模板",在一个类中定义了该类对象所应具有的 成员变量以及方法 返回值类型:事先约定的返回值的数据类型,如无返回值,必须给出返回值类型void Java语言中使用下述形式调用方法:对象名.方法名(实参列表) 实参的数目,数据类型和次序必须和所调用方法声明的形参列表匹配 return 语句终止方法的运行并指定要返回的数据 成员变量 成员变量可以是Java语言中任何一种数据类型(包括基本类型和引用类型) 在定义成员变量时可以对其初始化,如果不对其初始化,Java使用默认的之对其初始化 引用 Java语言中除基本类型之外的变量类型都称之为引用类型 如何在内存中区分类和对象? 类是静态的概念,代码区 对象是new出来的.位于堆内存,类的每个成员变量在不同的对象中都有不同的值(除了静态变量) 而方法只有一份,执行的时候才占用内存 对象的创建和使用 必须使用new关键字创建对象 使用对象(引用).成员变量或来引用对象的成员变量 使用对象(引用).方法(参数列表)来调用对象的方法 同一类的每个对象有不同的成员变量存储空间 同一类的每个对象共享该类的方法 构造方法(构造函数) 使用new+构造方法,创建一个新的对象 构造函数式定义在Java类中的一个用来初始化对象的函数 构造函数与类同名且没有返回值 Python 中数据类型 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值。 但是,计算机能处理的远不止数值,还可以处理文本、图形、音频、视频、网页等各种各样的数 据,不同的数据,需要定义不同的数据类型。在 Python 中,能够直接处理的数据类型有以下几 种: 一、整数 Python 可以处理任意大小的整数, 当然包括负整数,在 Python 程序中, 整数的表示方法和数学上的写法 计算机由于使用二进制,所以,有时候用十六进制表示整数比较方便,十六进制用 0-9,a-f 表 二、浮点数 浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变 的,比如,1.23x10^9和 12.3x10^8 但是对于很大或很小的浮点数,就必须用科学计数法表示,把 10用 e 替代,1.23x10^9就是 1.23e9,或 者 12.3e8,0.000012可以写成 1.2e-5,等等。 整数和浮点数在计算机内部存储的方式是不同的, 整数运算永远是精确的 (除法难道也是精确的?是的! ) , 而浮点数运算则可能会有四舍五入的误差。 三、字符串 'abc' , 3 个字符。 四、布尔值 布尔值和布尔代数的表示完全一致, 一个布尔值只有 要么是 True , 要么是 False , 在 Python 中,可以直接用 True 、 False 表示布尔值(请注意大小写),也可以通过布尔运算计算出来。 True,and 运算结果才是 True。 True,or 运算结果就是 True。 True 变成 False,False 变成 True。 五、空值 空值是 Python 不能理解为 0,因为 0是有意义的,而 None 是 一个特殊的空值。 此外,Python 还提供了列表、字典等多种数据类型,还允许创建自定义数据类型,我们后面会继续讲到 任务 试一试,在右边编辑器中,完成以下任务: 1. 计算十进制整数 45678和十六进制整数 0x12fd2之和。 2. 请用字符串表示出 Learn Python in imooc。 3. 请计算以下表达式的布尔值(注意==表示判断是否相等): 100<> 0xff ==255 注意:使用 print 命令 转载请注明出处范文大全网 » 2.3C++数据类型范文二:8种基本数据类型
范文三:8种基本数据类型
范文四:8种基本数据类型[试题]
范文五:3-1Python中数据类型.