J4. Java基本程序设计结构之数据类型与精度问题

1.1 数据类型

Java中的数据类型分为基本数据类型和引用数据类型两种。关于引用类型,我们在后面的学习中会逐渐理解的,这里不再赘述,重点介绍基本数据类型。在Java中有8种基本数据类型来存储数值、字符和布尔值,如图4.1所示。

图4.1   Java数据类型

1.3.1 整数类型

  整数类型用来存储整数数值,即没有小数部分的数值。可以是正数、负数,也可以是0。根据所占内存的大小不同,可以分为byte、short、int和long 4种类型。他们所占的内存和取值范围如表4.2所示。整数默认的类型为int型。

图4.2   整数类型(1个字节是8位)

1.3.1.1.byte型

  使用byte关键字来定义byte型变量,可以一次定义多个变量并对其进行赋值,也可以不进行赋值。byte型是整型中分配内存空间最少的,只分配1个字节,取值范围也是最小的,只在-128~127之间,在使用时一定要注意,以免数据溢出产生错误。

【例4.1】定义byte型变量,并对其进行简单赋值操作,验证其几点要素;

package cn.basic.datatype.bytes;
public class BytePractice{
    public static void main(String[] args){
        byte a = 45 , b = 127 , c ;
        System.out.println(a+b);//整数类型的默认类型为int,所以再给byte类型进行运算时会先将其转换为int类型,然后进行运算
        //System.out.println(c); 我们声明了变量却未给其赋值,这里会报未初始化变量
        /* b = 128 ; byte类型的内存空间为1字节,取值范围为-128-127,所以这里会报损失精度的问题,但是仍然可以通过强制转型来解决,结果就是输出与实际数值不符,这是精度损失造成的
        System.out.println(b);*/
    }
}

注意:成员字段如果没有初始化,那么编译时会自动初始化为默认值。但局部变量如果没有初始化则会在编译时报错“变量未经初始化”;

1.3.1.2.Short型

  Short型是短整型,使用short关键字来定义short型变量,可以一次定义多个变量并对其赋值,也可以不进行赋值。系统给short型在内存中分配2个字节,取值范围也比byte大得多,在-32768~32767之间,虽然取值范围变大,但仍要注意溢出。

【例4.2】定义short型变量

short a = 23 ;   //定义short型变量a、b、c,并赋值给a、b

1.3.1.3.int型

  int型即整型,使用int关键字来定义int型变量,可以一次定义多个变量并对其赋值,也可以不进行赋值。int型变量取值范围很大,在-2147483648~2147483647之间,足够在一般情况下使用,所以是整数变量中应用最广泛的。Int类型是整数类型的默认类型。

【例4.3】定义int型变量

int a = 23 , b = 78 ;   ////定义int型变量a、b、c,并赋值给a、b

1.3.1.4.long型

  long型即为长整形,使用long关键字来定义long型变量,可以一次定义多个变量并对其进行赋值,也可以不进行赋值。而在对long型变量进行赋值时结尾必须加上“L”或“l”(因为I和i的大写相似,所以我们一般使用L,便于阅读。),否则将不被认为是long型,而会被默认作为int型处理,这时可能会出现溢出内存的错误。所以当数值过大超过int型范围时就用long型,系统分给long型8个字节,取值范围更大,在-9223372036854775808~9223372036854775807之间。

【例4.4】定义long型变量,并对其进行一些分析;

package cn.basic.datatype.longs;
public class LongPractice{
    public static void main(String[] args){
        long a = 3890 , b;     //当我们定义一个变量时如果他的数值超过int的范围,却又不对其进行末尾强制,
        //b = 922337203685477 ;        那么程序会将其当做int处理,则会发生错误,提示超出范围
        //System.out.println(b);    提示我们数值过大
        System.out.println(a);
        b = 922337203685477L;
        System.out.println(b);
        b = 922337203685477l;
        System.out.println(b);
        //b = 922337203685477 L;  我们在定义long型变量时要注意,初始化的后面紧跟"L"或"l",不能有空格的存在,否则会提示错误
        System.out.println(b);
    }
}

我们在定义long型数据时末尾最好加L,因为l和1是不好区分的;

上面的四种整数类型在Java程序中有3种表示形式,分别为十进制、八进制、和十六进制。

  • l 十进制表示法。十进制的表现形式,是我们现实世界最熟悉的一种表达形式了,即逢10进1,每位上数字最大为9,如120、99等都是十进制。
  • l 八进制表示法。八进制即逢8进1,每位上的数字最大是7,且必须以0开头。例如,0123(转换成十进制是1*8^2+2*8^1+3*8^0=64+16+3=83)、-123(转换成十进制数为-(1*8^2+2*8^1+3*8^0)=-(64+16+3)=-83)都是八进制。
  • l 十六进制表示法。实际上中国古代就有16进制,所谓的半斤八两就是如此,逢16进1,每位上最大数字是f(15),且必须以0X或0x开头。如0x25转换成十进制是37.

【例4.5】整数的各型运算

package cn.basic.datatype.integer;
public class IntegerPractice{
    public static void main(String[] args){
        byte a = 127 ;
        short b = 3276 ;
        int c = 214748364 ;
        long d = 21474836423444L ;
        long resultL = a + b + c + d ;
        //int resultD = a + b + c + d ;当一个高精度的数据类型向低精度转换时,会报可能损失精度的错误
        //int dd = (int)d;
        int dd = new Long(d).intValue();
        int resultD = a + b + c + dd ;
        System.out.println("结果为"+resultL);
        System.out.println("结果为"+resultD);
    }
}

1.3.2 浮点类型

  浮点类型表示有小数部分的数字。Java语言中浮点类型分为单精度浮点类型(float)和双精度浮点类型(double),它们具有不同的取值范围,如图所示。浮点型默认的类型为double。

1.3.2.1 float型

  Float型即为单精度浮点型,使用float关键字来定义float型变量,可以一次定义一个或多个变量并对其进行赋值,也可以不进行赋值。在对float型进行赋值时末尾必须加上“f”或“F”,如果不加,系统会将其默认作为double型来处理,float型的取值范围在1.4E-45~3.4028235E38之间。

【例4.6】对float型进行定义;

package cn.basic.datatype.floats;
public class FloatPractice{
    public static void main(String[] args){
        Float a = 1.4E-45F ;
        System.out.print(a);
    }
}

1.3.2.2 double型

  double型即双精度浮点型,使用double关键字来定义double型变量,可以一次定义多个变量并对其进行赋值,也可以不进行赋值。在给double型赋值时,可以使用后缀“D”或“d”明确表明这是一个double类型数据,但加不加并没有硬性要求,可以加也可以不加,double型变量的取值范围在4.9E-324和1.2976931348623157E-308之间。

  单精度和双精度的区别我们会在后面探讨数据精度中讲解。

【例4.6】定义一个double型变量和float型变量,并对它们进行赋值、运算和输出;

package cn.basic.datatype.doubles;
class DoublePractice{
    public static void main(String[] args){
        double a = 987.987123456789012D , b = 789.789879887918799d ;
        double c = 68.8978978977 ;
        float aa = 987.987123F ;        //当我们定义一个float型变量却又不对其进行末尾"F"或"f",那么会提示错误可能损失精度
        float d = 987.987123456789012F ;
        float e = 987.987153456789012F , f = 987.987144456789012f ;
        System.out.println(a+"和"+b) ;
        System.out.println(c) ;
        System.out.println(aa+"和"+d+"和"+e+"和"+f) ;
    }
}

1.3.3 字符类型

  Char型即字符类型。使用char关键字进行声明,用于存储单个字符,系统分配两个字节的内存空间。在定义字符型变量时,要用单引号‘’括起来。如‘s’表示一个字符,且单引号中只能有一个字符,多了就不是字符类型,而是字符串类型,需要用双引号进行声明。

  Java 字符采用 Unicode 编码,每个字符占两个字节,因而可用十六进制编码形式表示。【注:Unicode是全球语言统一编码,所有的字符都分配两个字节的空间】

  与C、C++语言一样,Java语言也可以把字符作为整数对待,由于Unicode编码采用无符号编码,可以存储65536个字符(0x0000~0xffff),所以Java中的字符几乎可以处理所有国家的语言文字。若想得到一个0~65536之间的数所代表的Unicode表中相应位置上的字符,也必须使用char型显式转换。

  在字符类型中有一种特殊的字符,以反斜线“\”开头,后跟一个或多个字符,具有特定的含义,不同于字符原有的意义,叫做转义字符,Java中的转义字符如下所示。

注意:转义字符也是字符,所以在使用时同样要加‘’单引号。

【例4.7】创建一个类CharPractice,实现将Unicode表中某些位置上的一些字符以及一些字符在Unicode表中的位置在控制台上面输出。

package cn.basic.datatype.ch;
class CharPractice{
    public static void main(String[] args){
        int a = ‘d‘ , aa = 97 ;
        char b = 97 , c = ‘a‘ ;
        char d = ‘\\‘ , e = ‘\b‘ , f = ‘\n‘ , g = ‘\u2605‘ , h = ‘\u0052‘ ; //转义字符
        char i = ‘\u4e08‘;
        System.out.println(a+"和"+aa+"和"+b+"和"+c) ;
        System.out.println(d+"和"+e+"和"+"和"+g+"和"+h) ;
        System.out.println(f) ;
        System.out.println(i);
    }
}

4.3.4 布尔类型

布尔类型又称逻辑类型,只有“true”和“false”两个值,分别代表布尔逻辑中的“真”和“假”,使用boolean关键字来声明布尔类型变量,通常被用在流程控制中作为判断条件。

【例4.8】声明一个布尔变量,并对其进行输出;

     boolean abc = true , cba = false ;
        System.out.println(abc+"还是"+cba) ;
        if(abc)System.out.println("真就是真!");
        else{
            System.out.println("假就是假!");
        }
        if(cba)System.out.println("真就是真!");
        else{
            System.out.println("假就是假!");
        }

原文地址:https://www.cnblogs.com/lin-jing/p/8001753.html

时间: 2024-10-11 21:54:08

J4. Java基本程序设计结构之数据类型与精度问题的相关文章

Java核心技术 卷1 读书笔记 (3 Java基本程序设计结构)

3.3 数据类型 Java是强类型语言,必须为每一个变量声明一种类型. 3.3.1 整型 Java 提供四种整型 int 4字节 short 2字节 long 8字节 byte 1字节 长整型(long)数值有一个后缀L(例如40000000000L),十六进制数值有一个前缀0x(例如0xCAFE),八进制数值有一个前缀0(例如010). 3.3.2 浮点型 Java提供两种浮点类型 float 4字节 double 8字节 float类型的数值有一个后缀F(例如3.42F),没有后缀F的浮点数

java 基本程序设计结构 一

首先Java区分大小写.如果出现了大小写拼写错误,程序无法运行. java 变量名字必须以字母开头,后面可以跟字母数字的任意组合.长度基本上没有限制.但是不能使用java保留字. 标准的命名规范:类名是以大写字母开头的名词.如果名字由多个单次组成,每个单词的第一个字母都应该大写(这种在一个单词中间使用大写字母的方式称为骆驼命名法.应该写成CamelCase). 源代码的文件名必须与公共类的名字相同,并用.java作为扩展名.例如: public class FirstSample { ... }

201671010142 Java基本程序设计结构学习的感悟

1.在课堂检测过程中发现自己很大的问题,有些是在学习c语言时就遗留下来的问题,比如对于自加自减,强制类型转换的问题,在Java中又多了一个数据类型就是字节型,而且当字节想加就会自动生成int型,必须进行强制类型转化.布尔类型输出结果就是ture或者就是false,掌握到与c语言的不同. 2.对于数组也有明显的不同.java在数组声明时并不为数组分配空间内存.对于数组的拷贝,java允许把一个数组变量拷贝给另一个变量时,两个变量都指向相同的数组.对于各种语句的学习,语其他与语言的逻辑思维几乎一样.

Java基本程序设计结构

1.注释 单行注释——// 多行注释——/*  */ 1 public class Main { 2 public static void main(String[] args) { 3 //这是一个单行注释 4 5 /* 6 * 这是一个多行注释 7 */ 8 } 9 } 2.数据类型 整型 在Java中,数字均为有符号整数,不存在无符号整数,数字在计算机中可以有三种编码方式: 原码:最高位为符号位,其余位为数字的绝对值的二进制表示. [1]原=[0000 0001]原 [-1]原=[1000

201771010117马兴德 实验二 Java基本程序设计(1)

实验二 Java基本程序设计(1)  第一部分    理论知识的学习. 第三章Java基本程序设计结构 1  基本知识: (1)标识符:标识符由字母.下划线.美元符号和数字组成,且第一个符号不能为数字.比如Hello,$1234都是合法的字符:同时标识符也可用作类名.变量名.方法名.文件名等. (2)关键字:关键字就是Java语言中被赋予特定意义的一些单词.比如 class.public.try等,但是关键字不能用作变量名. (3)注释:Java有三种注释方法,如://./*和*.(定义一个注释

201771010142 张燕 Java的基本程序设计结构第二周学习总结

第三章 Java的基本程序设计结构 第一部分 理论知识学习部分 一 基本知识: 1.标识符:由字母.下划线,美元符号和数字组成,第一个符号不能为数字,可以用作类名.变量名.方法名.数组名和文件名等. 2.关键字:Java语言中已经被赋予特定意义的一些单词,关键字不能作为变量名. 3.注释:①//②/*和/*③/**开始,*/结束 二 数据类型: 整数类型(int. short. long. byte)浮点类型(float. double )字符类型(char)浮点类型(float double)

java的基本程序设计结构

java的基本程序设计结构 这一系列Java基础的博客,均为扎实自己的java基础,一为面试.二为走得更远 数据类型 这个很基础,面试真的被问到过,虽然不影响面试结果,但是还是记一下,哈哈哈哈哈. 在java中,一共有八种基本类型,其中有4中整形,2中浮点类型,1个字符类型,1个表示真值的类型 整型 类型 存储需求 取值范围 byte 1个字节 -128 —— 127 short 2个字节 -32768 —— 92767 int 4个字节 约莫着 -21亿 —— 21亿 long 8个字节 这个

JAVA的程序基本结构和数据类型

1 //源程序 Hello.java 2 public class Hello 3 { 4 static String str ="Hello World"; 5 public static void main(String args[]) 6 { 7 System.out.println(str); 8 } 9 } 通过这个一个简单的方法可以看到一些JAVA的基本结构.(这些是借鉴前辈们的一些理解做下记录) 1.在java中一切都是对象,数据和函数必须封装在'类'中.一个源文件至少包

第一部分:Java基础程序设计

Java(a)--Java 基础程序设计 Java 语言介绍(认识JAVA) JVM(Java虚拟机):JVM是可运行java代码的假想计算机,其保证了java可以进行跨平台地运行,亦即其可移植性,也符合sun公司提出的口号:Write Once, Run Anywhere.(一次编写,处处运行) 运行示意图如下:(由于图片无法加载,因此暂时不上传) Java技术的架构包括三个方面: J2EE(Java 2 Platform Enterprise Edition)企业版,是以企业为环境而开发应用