7 您所在的位置:网站首页 java数据类型分为哪两类型 7

7

2024-07-11 04:53| 来源: 网络整理| 查看: 265

目录

1.基本数据类型

1.1.逻辑型——boolean

1.2.文字型——char和String

1.2.1.char

1.2.2.String

1.3.整数类型:byte,short,int和long

1.3.1.byte

1.3.2.short

1.3.3.int

1.3.4.long

1.4.浮点型:float和double

1.4.1.float

1.4.2.double

1.5.输出Java基本数据类型相关的一些常数

2.复合数据类型

类:class

接口:interface

数组:Array

枚举

3.基本类型与引用类型变量

4.两种类型变量的不同处理

5.引用型变量的赋值

总结:

Java,C,C++是强类型语言,定义一个变量一定要规定它的类型。

js是弱类型语言,在声明变量时不需要指定数据类型,直接使用var修饰符声明变量。变量没有类型,但是数据本身是有类型的。

Java中数据类型分为两大类:基本数据类型和复合数据类型。

1.基本数据类型

Java语言中定义了4类共8种基本数据类型。

逻辑型:boolean。文本型:char。整型:byte,short,int和long。浮点型:double和float。 1.1.逻辑型——boolean

基本语法格式:

boolean 变量名 = 初始值;

代码示例:

boolean value = true;

注:

1).boolean类型数据只有两种取值true(真)和false(假);

2).boolean类型有些JVM的实现占1个字节,有些占1个比特位,(无明确规定);

3).与其他高级语言不同,Java中的布尔值和数字之间不能来回转换,即false和true不对应于任何零或非零的整数值。

4).boolean型变量的默认初始值为false。

1.2.文字型——char和String

char是文字型的基本数据类型,而String是类不是基本类型,但很常用,所以在此一并介绍。

1.2.1.char

基本语法格式:

char 变量名 = '初始值';

代码示例:

char ch = 'A'; char ch = '和'; //使用一个字符表示一个汉字

注:

1).Java中使用 单引号 + 单个字母 的形式表示字符字面值。

2).计算机中的字符本质上是一个整数。在C语言中使用ASCII表示字符,而Java中使用Unicode表示字符。因此一个字符占用2个字节。表示的字符种类更多,包括中文。

3).字符型变量的默认初始值是'\u0000'。(空字符,代表一个空格)。

4).执行javac时可能会出现乱码报错:未结束的字符文字。此时在执行javac时加上-encoding UTF-8选项即可。

Unicode字符集可以支持各类文字的字符,通过将国际标准的Unicode字符集作为字符变量的取值范围,使Java能方便地处理各种语言(例如将汉字作为字符型变量的值)。

一些控制字符不能直接显示,可利用转义序列来表示这些字符。还有一种直接以八进制或十六进制代表字符值的表示方法,在反斜杠后跟3位八进制数字或在反斜杠后跟u,后面再跟4位十六进制数字都可以代表一个字符常量,如"\141"和"\u0061"都代表字符常量"a"。

转义字符描述转义字符描述\ddd1~3位八进制数所表示的字符\r回车\uxxxx1~4位十六进制数所表示的字符\n换行\'单引号字符\f走纸换页\"双引号字符\b退格

\\

反斜杠字符\t

水平制表(Tab键)

一般情况下,char类型的十六进制Unicode编码值可自动转换成等值的int类型值,并可与int类型数值进行运算。而int类型到char类型需要通过强制类型转换。

1.2.2.String

基本语法格式:

String 变量名 = "初始值";

代码示例:

String name = "zhangsan";

注:

1).Java使用 双引号 + 若干字符 的方式表示字符串字面值。

2).和上面类型不同,String不是基本类型而是引用类型。是一个类。

3).字符串在Java中是对象,在Java中有两个类可以表达字符串:String和StringBuffer。String对象表示的字符串是不能修改的。如果需要对字符串修改,应该使用StringBuffer类。

4).字符串中的字符也是Unicode。与C和C++不同,Java中的字符串不以'\0'为结束符。

5).字符串中的一些特定的不太方便直接表示的字符需要进行转义。

6).引用型变量的默认初始值都是null。

7).在Java中,任何数据类型只要和字符串”+”,都会将其转为字符串而后进行字符串的拼接操作。

public class Test { public static void main(String[] args) { int a = 10; int b = 20; System.out.println("运算结果为:"+a+b); } }

1.3.整数类型:byte,short,int和long 1.3.1.byte

基本语法格式:

byte 变量名 = 初始值;

代码示例:

byte value = 0;

注:Java中byte类型占1字节。

1.3.2.short

基本语法格式:

short 变量名 = 初始值;

代码示例:

short value = 0;

注:Java中short类型占2字节。这个表示范围较小,一般不推荐使用。

1.3.3.int

基本语法格式:

int 变量名 = 初始值;

代码示例:

int num = 10;

注:

1).初始化操作是可选的,但是建议创建变量时都显式初始化。

即定义了一个整型变量,可以在声明变量时,不赋值。

前提:必须是类中(当类内有方法时,为类内,方法外)的变量。

否则会报错。

public class Test{ public static void main(String[] args){ int a; System.out.println(a); } }

这样在类中,方法中会报错:可能尚未初始化变量a。

public class Test{ int a; public static void main(String[] args){ System.out.println(new Test().a); } }

这样就可以,不报错,会打印0。注意:这里不能直接打印a,一切皆对象,要new一个新对象。

当在类中(主方法外)定义int变量时,默认值为0。

2).在Java中,一个int变量占4个字节,和操作系统没有直接关系。(C语言中一个int变量所占字节数与操作系统,编译器有关)

字节是计算机中表示空间大小的基本单位。

计算机使用二进制表示数据。

8个二进制位(bit)为1个字节(Byte)。

1KB = 1024Byte

1MB = 1024KB

1GB = 1024MB

1.3.4.long

基本语法格式:

long 变量名 = 初始值;

代码示例:

long num = 10L; //也可写作10l(小写L)

注:Java中long类型占8字节。

小结:由于char类型的值可以转换为int型,故下面一起列出char和这4种类型的长度与取值范围。

类型长度取值范围byte8位-2^7~2^7-1,即-128~127short16位-2^15~2^15-1,即-32768~32767int32位-2^31~2^31-1,即-2147483648~2147483647long64位-2^63~2^63-1,即-9223372036854775808~9223372036854775807char16位'\u0000'~'\uffff',即0~65535

注:

1).Java中所有的整数类型都是有符号的整数类型,Java没有无符号整数类型(最高位表示正负,0表示正数,1表示负数)。

2).所有整型变量的默认初始值为0。

3).由于不同的机器对于多字节数据的存储方式不同,可能是从低字节向高字节存储,也可能是从高字节向低字节存储,这样,在分析网络协议或文件格式时,为解决不同机器上的字节存储顺序问题,用byte类型来表示数据会比较合适。但通常,由于其表示的数据范围很小,容易造成溢出,因此尽量少使用。

4).如果一个数超出了计算机的表达范围,称为溢出。超出最大值,称为上溢;超过最小值,称为下溢。将一个整型类型数的最大值加1后,产生上溢而变成了同类型的最小值;最小值减1后,产生下溢而变成了同类型的最大值。

5).整型常量可以有4种形式:二进制(以0b或0B开头),八进制(以0开头),十进制和十六进制(以0x或0X开头)。

1.4.浮点型:float和double 1.4.1.float

基本语法格式:

float 变量名 = 初始值;

代码示例:

float num = 1.0f; //也可写作1.0F

注:float类型在Java中占4个字节,遵循IEE754标准。由于表示的数据精度范围较小,一般优先考虑double,不太推荐使用float。

1.4.2.double

基本语法格式:

double 变量名 = 初始值;

代码示例:

double num = 1.0d; //也可写成1.0D

注:

Java中的double虽然也是8个字节,但是浮点数的内存布局和整数差别很大,不能单独用2^n的形式表示数据范围。

Java的double类型的内存布局遵循IEE754标准,尝试使用有限的内存空间表示可能无限的小数,势必会存在一定的精度误差。

import java.math.BigDecimal; public class Test { public static void main(String[] args) { //精度不准 System.out.println(1.1 * 1.1); //使用此类来表示小数 BigDecimal b1 = BigDecimal.valueOf(1.1); BigDecimal b2 = BigDecimal.valueOf(1.1); System.out.println(b1.multiply(b2)); } }

 当使用double类型进行小数运算时,精度会出现不准,使用BigDecimal代替。

小结:

类型

长度取值范围float32位1.4e-45~3.4028235e+38double64位4.9e-324~1.7976931348623157e+308

1).双精度类型double比单精度类型float具有更高的精度和更大的表示范围,但float类型具有速度快,占用内存小的优点。

2).浮点型变量的默认初值是0.0。浮点数在运算过程中不会因为溢出而导致异常处理。如果出现下溢,结果为0.0;如果上溢,结果为正或负无穷大;如果出现数学上没有定义的值,如0.0/0.0,结果被视为非法数,NaN(Not-a-Number)。

3).浮点类型的常量默认是double类型,可用科学计数法表示(6.02*10^23可表达为6.02e23)。

1.5.输出Java基本数据类型相关的一些常数 public class SomeConstTest{ public static void main(String args[]){ //输出byte型的最大值与最小值 System.out.println("Byte.MAX_VALUE = " + Byte.MAX_VALUE); System.out.println("Byte.MIN_VALUE = " + Byte.MIN_VALUE); System.out.println(); //输出short型的最大值与最小值 System.out.println("Short.MAX_VALUE = " + Short.MAX_VALUE); System.out.println("Short.MIN_VALUE = " + Short.MIN_VALUE); System.out.println(); //输出int型的最大值与最小值 System.out.println("Integer.MAX_VALUE = " + Integer.MAX_VALUE); System.out.println("Integer.MIN_VALUE = " + Integer.MIN_VALUE); //当整数最大值+1,发生溢出(当前的数据类型放不下当前数据) //当发生数据溢出时,需要更换更大的数据类型。 System.out.println("Integer.MAX_VALUE + 1 = " + Integer.MAX_VALUE + 1); System.out.println("Integer.MIN_VALUE - 1 = " + Integer.MIN_VALUE - 1); System.out.println(); //输出long型的最大值与最小值 System.out.println("Long.MAX_VALUE = " + Long.MAX_VALUE); System.out.println("Long.MIN_VALUE = " + Long.MIN_VALUE); System.out.println(); //输出float型的最大值与最小值 System.out.println("Float.MAX_VALUE = " + Float.MAX_VALUE); System.out.println("Float.MIN_VALUE = " + Float.MIN_VALUE); System.out.println(); //输出double型的最大值与最小值 System.out.println("Double.MAX_VALUE = " + Double.MAX_VALUE); System.out.println("Double.MIN_VALUE = " + Double.MIN_VALUE); System.out.println(); //输出float型的正无穷大与负无穷大 System.out.println("Float.POSITIVE_INFINITY = " + Float.POSITIVE_INFINITY); System.out.println("Float.NEGATIVE_INFINITY = " + Float.NEGATIVE_INFINITY); System.out.println(); //输出double型的正无穷大与负无穷大 System.out.println("Double.POSITIVE_INFINITY = " + Double.POSITIVE_INFINITY); System.out.println("Double.NEGATIVE_INFINITY = " + Double.NEGATIVE_INFINITY); System.out.println(); //输出float型0/0 System.out.println("Float.NaN = " + Float.NaN); System.out.println(); //输出double型0/0 System.out.println("Double.NaN = " + Double.NaN); System.out.println(); } }

运行结果:

Byte.MAX_VALUE = 127 Byte.MIN_VALUE = -128 Short.MAX_VALUE = 32767 Short.MIN_VALUE = -32768 Integer.MAX_VALUE = 2147483647 Integer.MIN_VALUE = -2147483648 Integer.MAX_VALUE + 1 = -2147483648 Integer.MIN_VALUE - 1 = 2147483647 Long.MAX_VALUE = 9223372036854775807 Long.MIN_VALUE = -9223372036854775808 Float.MAX_VALUE = 3.4028235E38 Float.MIN_VALUE = 1.4E-45 Double.MAX_VALUE = 1.7976931348623157E308 Double.MIN_VALUE = 4.9E-324 Float.POSITIVE_INFINITY = Infinity Float.NEGATIVE_INFINITY = -Infinity Double.POSITIVE_INFINITY = Infinity Double.NEGATIVE_INFINITY = -Infinity Float.NaN = NaN Double.NaN = NaN 2.复合数据类型 类:class 接口:interface 数组:Array 枚举

上面所说的4类8种基本数据类型,是Java的内置类型。在很多应用程序开发中,仅使用这几种类型是远不够的。

一般将用户定义的新类型称为复合数据类型。在Java中,类和接口是两种用户定义的复合数据类型。

例如:如果要处理日期,要独立声明3个整数,分别代表日,月,年。将这三个变量进行封装,用class关键字创建一个日期类。

class MyDate{ int day; int month; int year; }

使用语言内置类型定义变量时,因为每种类型都是预定义的,所以无须程序员指定变量的存储结构。

对于新的数据类型,需要指定该类型所需的存储空间以及如何解释这些空间中的内容。新类型不是通过字节数指定空间大小,也不是通过位的顺序和含义定义该存储空间的含义,而是通过包含在类定义中的已有数据类型来提供这些信息。

复合数据类型由程序员在源程序中定义。一旦有了定义,该类型就可以像其他类型一样使用。可以声明MyDate类的变量,并且日期的年,月,日三部分也都由该变量表示。例如:

MyDate a, b;

对于一个日期的年,月,日各组成部分的使用,都是通过MyDate类型的a,b变量进行,例如:

a.day = 30; a.month = 12; a.year = 1999;

在定义了MyDate类后,对于一个日期的定义只需要声明一个变量,并且日期中的3个组成部分被封装为一个有机的整体,它们之间的取值约束关系可以通过在MyDate类内部定义方法实现,操纵MyDate变量的程序员不需要关心这些问题。因此在Java中使用类或接口这样的复合数据类型,不仅反映了现实世界事物的本质形态,还使程序简练并且更可靠。

Java中数据类型分为两大类:基本数据类型与复合数据类型。相应地,变量也有两种类型:基本类型与引用类型。

3.基本类型与引用类型变量

基本数据类型的变量包含了单个值,这个值的长度和格式符合变量所属数据类型的要求,可以是一个数字,一个字符或一个布尔值。

引用类型变量的值是指向内存空间的引用(地址)。所指向的内存中保存着变量所表示的一个值或一组值。引用在其他语言中称为指针或内存地址。Java语言与其他程序设计语言不同,不支持显示使用内存地址,而必须通过变量名对某个内存地址进行访问。

4.两种类型变量的不同处理

在Java中基本类型变量声明时,系统直接给该变量分配空间,因此程序中可以直接操作。例如:

int a; //声明变量a的同时,系统给a分配了空间 a = 12;

引用类型变量声明时,只是给该变量分配引用空间,数据空间未分配。因此引用变量声明后不能直接引用,下列第二条语句是错误的。

MyDate today; today.day = 14; //错误!因为today对象的数据空间未分配

引用型变量在声明后必须通过实例化开辟数据空间,才能对变量所指向的对象进行访问。

MyDate today; today = new Date();

上面第一条语句的执行,将给today变量分配一个保存引用的空间。第二条语句分两个步骤执行:首先执行new Date(),给today变量开辟数据空间,然后再执行第二条语句中的赋值操作。

5.引用型变量的赋值

Java中引用型变量之间的赋值是引用赋值。

MyDate a, b; //在内存开辟两个引用空间 a = new MyDate(); //开辟MyDate对象的数据空间,并把该空间的首地址赋给a b = a; //将a存储空间中的地址写到b的存储空间中 总结:

数据类型:

基本数据类型

数值型:整型:byte,short,int,long(默认值为0)

              浮点型:float,double(默认值为0.0)

字符型:char(默认值为'\u0000')

布尔型:boolean(默认值为false)

复合(引用)数据类型

数组,类,接口(默认值为null)



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有