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):最常用的整数类型。有符号的32位类型,数的范围是 -2147 483 648~2147 483 647。int类型的变量通常被用来控制循环及作为数组的下标。

任何时候,如果整数表达式包含 byte、short、int及整型常量。在进行计算以前,所有表达式的类型被提升(自动转换)到整型。

声明整型变量: int 变量名;

(4)长整型(long):有符号的64位类型,它对于那些整型不足以保存所要求的数值时是有用的。长整型数的范围是相当大的。

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

2.浮点型:

Java使用两种类型的浮点数:float和double。double型的存储空间是float型的两倍,所以double型又称为双精度,而float型又称为单精度。当数据或表达式的值有精度要求时,需要使用浮点型数据。

(1)单精度浮点型(float):专指占用32位存储空间的单精度值(Single-Precision)。单精度在一些处理器上比双精度更快而且只占用双精度一般的空间,但是当值很大或很小的时候,它将变得不精确。当需要小数部分并且对精度的要求不高时,单精度浮点型的变量是有用的。

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

(2)双精度浮点型(double):占用64位的存储空间。所有超出人类经验的数学函数,如sin()、cos()和sqrt()均返回双精度的值。当需要保持多次返回迭代的计算的精确时,或在操作值很大的数字时,双精度型是最好的选择。

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

3.字符型(char):

在计算机中,所有的数据在存储和运算时都要使用二进制数表示(因为计算机用高电平和低电平表示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中的浮点型常量默认是双精度。

默认的双精度类型要占用64位存储空间,而精确低些的浮点类型仅仅需要32位。

4.字符常量:

Java用 Unicode字符集来表示字符。Java的字符是16位值,可以被转换为整数并可进行像加(+)或减(-)这样的整数运算。

在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++等大多数计算机语言中,字符串作为字符的数组被实现。然而,在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++。

时间: 2024-11-06 17:48:33

Java学习整理笔记(三)数据类型的相关文章

Java学习整理笔记(一)Java认识

一.Java介绍: Java技术主要分成三个部分:Java语言.Java运行环境和Java类库.(一般情况下并不区分指哪个部分) 即Java并不只是一门编程语言,也是一个完整的平台,有一套庞大的开发类库(包含很多可以重复利用的代码)和提供跨平台的可移植性.自动垃圾回收以及安全性等服务的执行环境. 1.Java语言: 跟其他编程语言一样,定义的一套用于程序设计的语法规范. 2.Java运行环境: 执行Java应用程序(Java Application)必须安装 Java Runtime Envir

Java 学习整理笔记(二)Java基本语法结构

一.源文件的编写 Java是完全面向对象的语言,所以Java的所有操作都是基于类(class)完成的.Java中所有程序的代码都需要放在一个类中,类用关键字class声明,在class之前可以添加一些修饰符,Java应用程序的源文件由若干个书写形式相互独立的类组成. 1.例子: // HelloDate.java import java.util.Date; //引入 java.util 包中的Date类 public class HelloDate{ /* * 该程序的目的是:输出当前系统的时

Java学习总结(三)——面向对象(上)

Java学习总结(三) -面向对象(上) 一.面向对象的概念及思考方式 面向对象的理解:是一种编程思想,他将对象作为解决问题的基本元素,利用对象与对象之间的相互作用来设计程序. 2.面向对象的思考方式:(1)首先确定问题域中的对象 (2)确定对象的特征与功能 (3)了解对象与对象之间的关系 例:设计一个五子棋游戏的对象:·黑白双方对象     ·绘制棋盘     ·输赢规则 二.类与对象 1.对象:用来描述客观事物的一个实体,由一组属性和行为构成. 2.类:(1)是一个模板,他描述一类对象的行为

JAVA学习之路三 编程英文汇总学习

JAVA学习中的每个章节中都有许多英文,不断熟悉工作英语也是提高编程能力很重要的一块,对于IT行业,英语才是通用语. 记在<JAVA语言程序设计>学习的第一章英文学习之后 .class file(.class文件)                       javac command(javac命令)          .java file(.java文件)            java Development Toolkit(JDK,java开发工具包)          assembl

Java 学习札记(三)免安装版TomCat中tomcat6w.exe的运行

1.使用环境 很多时候我们用的是官网的解压免安装版的Tomcat,相比安装Tomcat除了少了安装步骤以外还少了tomcat6w.exe运行所需要的环境变量,所以一般Java开发免安装版的已经足够使用了,但是如果部署服务的时候我们不可能只运行startup.bat文件,我们需要新建一个服务并可以通过tomcat6w.exe启动和关闭服务. 2.无法运行tomcat6w.exe (1)提示错误: 运行tomcat6w.exe ,提示 指定的服务未安装 unable to open the serv

Java学习笔记三——数据类型

前言 Java是强类型(strongly typed)语言,强类型包含两方面的含义: 所有的变量必须先声明后使用: 指定类型的变量只能接受预支匹配的值. 这意味着每一个变量和表达式都有一个在编译时就确定的类型. Java数据类型分为两大类:基本类型和引用类型. 基本数据类型 Java的基本数据类型包括:boolean.字符型和数值类型. 数值类型包括:整型和浮点类型 boolean 大小:Java规范并没有强制指定boolean类型的变量所占内存大小 范围:true或false 例子:boole

java学习小笔记(三.socket通信)【转】

三,socket通信1.http://blog.csdn.net/kongxx/article/details/7288896这个人写的关于socket通信不错,循序渐进式的讲解,用代码示例说明,运用流和socket进行远程通讯 2.最简单的socket是一个服务端对应一个客户端 server的写法 ServerSocket server = new ServerSocket(10000); Socket socket = server.accept(); BufferedReader in =

java学习日记第三天之简单算法问题

hello 大家好 今天学习了一些有关java算法: 1.算法:解决问题的基本步骤,和实现方案 业务处理中的算法问题: 分析问题找规律 针对规律写代码 2.九九乘法口诀表 问题分析 : 1*1=1 1*2=2 2*2=2 1*3=3 2*3=6 3*3=9 我们发现规律 第几行有几个乘法式,需要两个遍历,从1-9行遍历,然后1-9列遍历 public class ReturnTest { public static void main(String[] args) { ReturnTest.ce

Java学习之面向对象三

1.多态是什么,多态的前提条件是什么? 多态就是父类引用变量指向子类对象: 前提条件:必须有子父类关系或类实现接口关系: 2.多态中成员访问的特点分别是什么?     成员变量: 当子父类中出现同名的成员变量,多态调用该变量时, 编译时期:参考的是引用变量所属的类中是否有被调用的成员变量.没有编译失败: 运行时期:也是调用引用型变量所属的类中的成员变量: 简单记:运行编译看左边.  成员方法(非静态方法) 编译时期:参考引用变量所属的类,如果没有类中调用的方法,便以失败: 运行时期:参考引用变量