java中的数据类型

Python015

java中的数据类型,第1张

java中的数据类型分两大类分别是基本类型和引用数据类型。

一、基本类型

1)Java中的数据类型有八种,即基本类型。具体如下:

数据类型位数取值范围:

Boolean1True|False

Byte8-128~127

Short16-32768~32767

Int32-2e31~2e31-1

Long64-2e63~2e63-1

Float32略

Double64略

Char160~65535

‘/u0000’~’uFFFF‘

二、引用数据类型

1)定义一个byte变量如:byteb=-256;

由于-256超出了’Byte’的取值范围,所以要使程序不报错,有一下几种解决方法:

A:更改变量的数据类型(如:将byte改为int)

B:更改变量名的赋值,使其包括在变量的数据类型的值域内;

C:进行强制转换:如:byteb=(byte)-256:

‘进行强制转换后,虽然程序不在报错,但是有可能会使原值的精度收到影响’

D:定义一个浮点类型数时,记得要在数值的后面加上“f”或“F”。(如:Floatf=10000.0f;)

E:若定义Charc=a;定义intn=c;则输出的n值为“a“的ASCII值,即97。

2)引用数据类型的定义

A:对象都是引用数据类型

B:应用类型使用NEW调用构造方法进行赋值

C:在Java中,除了基本数据类型以外,其余的全都属于引用数据类型,如:

a:API中的类,如String,File等;

b:数据;

c:自定义的类,如Cars,Student

d:对象全部是引用数据类型。

扩展资料

其他数据类型:

在java中,String本身也提供了很多的方法供我们使用:

获取到指定索引位置的字符:charc=字符串.charAt(索引位置)

获取到指定索引位置的字符:charc=字符串.charAt(索引位置)

获取第一次出现在字符串中的字符:intindex=字符串.index('a')

获取在字符串中字符的索引位置:intindex=字符串.index('a',1)

如果想比较两个字符串是否相等:字符串.equeals(字符串)

判断字符串是否为空:字符串.isEmpty()

获取字符串的长度:字符串.length()

根据某一个条件,将字符串进行分割:字符串.split("abc")

根据条件取出内容:字符串.substring(开始位置,结束位置)

java中有8中基本数据类型和3中引用类型

1、8种基本类型

一)、4种整型

byte 1字节 -128——127

short 2 字节 -32,768 —— 32,767

int 4 字节 -2,147,483,648 ——2,147,483,647(超过20亿)

long 8 字节 -9,223,372,036,854,775,808——9,223,372,036854,775,807

二)、 2种浮点类型

float4 字节 32位IEEE 754单精度(有效位数 6 – 7位)

double 8 字节 64位IEEE 754双精度(有效位数15位)

三)、1种Unicode编码的字符单元

char2 字节 整个Unicode字符集

四)、1种真值类型

boolean1 位 True或者false

2、3种引用类型

类class

接口interface

数组array

最简答来说除了8中基本类型以外剩下的都是引用类型

Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。

原始类型封装类

boolean -->Boolean

char --->Character

byte -->Byte

short -->Short

int -->Integer

long -->Long

float -->Float

double -->Double

引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。同时为了面向对象操作的一致性,这些基本类型都有相应的封装类型:Integer、Short、Long、Byte、Float、Double、Character等。

因为封装类型是对象,所以可以进行相应的很多对象能力函数操作,这样就可以提供很多基本类型难以完成的工作的完成和实现。

你可以通过以下方式来声明该类型。

int a,a为int类型的变量

char a,a为char类型的

String对象

1. 首先String不属于8种基本数据类型,String是一个对象。

因为对象的默认值是null,所以String的默认值也是null;但它又是一种特殊的对象,有其它对象没有的一些特性。

2. new String()和new String(“”)都是申明一个新的空字符串,是空串不是null;

3. String str=”punkll”;

String str=new String (“punkll”)的区别:

在这里,我们不谈堆,也不谈栈,只先简单引入常量池这个简单的概念。

常量池(constant pool)指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据。它包括了关于类、方法、接口等中的常量,也包括字符串常量。

看例1:

String s0=”punkll”

String s1=”punkll”

String s2=”punk” + “ll”

System.out.println( s0==s1 )

System.out.println( s0==s2 )

结果为:

true

true

首先,我们要知结果为道Java会确保一个字符串常量只有一个拷贝。

因为例子中的s0和s1中的”punkll”都是字符串常量,它们在编译期就被确定了,所以s0==s1为true;而”punk”和”ll”也都是字符串常量,当一个字符串由多个字符串常量连接而成时,它自己肯定也是字符串常量,所以s2也同样在编译期就被解析为一个字符串常量,所以s2也是常量池中”punkll”的一个引用。

所以我们得出s0==s1==s2

用new String() 创建的字符串不是常量,不能在编译期就确定,所以new String() 创建的字符串不放入常量池中,它们有自己的地址空间。

看例2:

String s0=”punkll”

String s1=new String(”punkll”)

String s2=”punk” + new String(“ll”)

System.out.println( s0==s1 )

System.out.println( s0==s2 )

System.out.println( s1==s2 )

结果为:

false

false

false

例2中s0还是常量池中”punkll”的应用,s1因为无法在编译期确定,所以是运行时创建的新对象”punkll”的引用,s2因为有后半部分new String(“ll”)所以也无法在编译期确定,所以也是一个新创建对象”punkll”的应用明白了这些也就知道为何得出此结果了。