4、Java数据类型的划分

1、本次的预计讲解的知识

1、Java中的各个数据类型的定义;

2、Java各种数据类型的使用;

3、第一次观察String类型的使用

2、具体内容(重点

任何的程序严格来讲都属于一个数据的处理游戏。所以对于数据的保存必须有严格的限制,这些限制就体现在了数据类型的划分上,即:不同的数据类型可以保存不同的数据内容。

Java一共分为两大类数据类型:基本数据类型、引用数据类型:

基本数据类型:

数值型:

整型:byteshortintlong默认值:0

浮点型:floatdouble默认值:0.0

字符型:char默认值:\u0000

布尔型:boolean默认值:false

引用数据类型:数组、类、接口;默认值:null

 

基本数据类型不牵扯到内存的分配问题而引用数据类型需要开发者为其分配内存空间,而后进行关系的匹配。

基本数据类型分为8种、引用数据类型一共分为3种。这么多数据类型如何选择?

个人选择数据类型原则:

如果想表示整数就使用int,表示销小数就使用double

如果要想描述日期时间数字或者表示文件(或内存)大小使用long

如果要实线内容传递后者编码转换使用byte

如果要想实现逻辑的控制,可以使用boolean描述。

l 如果要想描述中文,可以避免乱码问题

 

No.

数据类型

大小/

可表示的数据范围

1

long(长整型)

64

-9223372036854775808~9223372036854775807

2

int(整型)

32

-2147483648~2147483647

3

short(短整型)

16

-32768~32767

4

byte(位)

8

-128~127

5

char(字符)

16

0~65536

6

float(单精度)

32

-3.4E38-3.4×~3.4E383.4×

7

double(双精度)

64

-1.7E308-1.7×~1.7E3081.7×

如果按照保存范围:byte < int < long < doble.

 

2.1、整型

任何一个数字常量(例如:30100)那么都属于int类型的数据类型,即:在Java之中所有的设置的整数内容默认情况下都是int类型。

范例:定义int型常量

public class TextDemo {

public static void main(String[] args) {

//为变量设置内容使用如下格式

//数据类型 变量名称 = 常量 ;

int num = 10 ; //10是常量,常量的默认类型是int

int result = num* 2 ; //利用num常量的内容乘以2,并且将值赋给result

System.out.println(result);

}

}

定义完变量之后可以实现变量的四则运算。

实际上变量与常量最大的组别只有一个:常量的内容是固定的,变量的内容是可改变的

public class TextDemo {

public static void main(String[] args) {

//所有的变量名称在同一块代码之中只允许声明一次

int num = 10 ; //10是常量,常量的默认类型是int

num = num * 2 ; //取出num变量的内容乘以2,并且将其设置给num变量

System.out.println(num);

}

}

每一种数据类型都有其对应数据类型的保存范围,那么下面来观察一个程序。

范例:如果超过int最大值或最小值的结果

public class TextDemo {

public static void main(String[] args) {

int max = Integer.MAX_VALUE ; //取出最大值

int min = Integer.MIN_VALUE ; //取出最小值

System.out.println(max); //2147483647

System.out.println(min); //-2147483648

//int变量 ± int型常量 = int型数据

System.out.println(max + 1);//最大值加一:-2147483648

System.out.println(min - 1);//最小值减一:2147483647

System.out.println(min - 2);//最小值减二:2147483646

}

}

现在就感觉整个代码变成了一种循环的形式,最大值如果继续增加就变成了最小值,随后一直向其次的最小值进行循环,反之最小值减一就变成为了最大值。因为任何的数据的计算都是按照二进制进行的,第一位是符号,而其它的31位是数据位。

此种现象称为数据的溢出,那么如果要想去解决这种溢出的问题,就只能够扩大范围的方式来实现,比int范围更大的是long数据类型。

范例:扩大范围

public class TextDemo {

public static void main(String[] args) {

int max = Integer.MAX_VALUE ; //取出最大值

int min = Integer.MIN_VALUE ; //取出最小值

System.out.println(max); //2147483647

System.out.println(min); //-2147483648

//int变量 ± long型常量 = long型数据

System.out.println(max + 1L);//最大值加一:2147483648

System.out.println(min - (long)1);//最小值减一:-2147483649

//long变量 ± int型常量 = long型数据

System.out.println((long)min - 2L);//最小值减二:-2147483650

}

}

 

在程序的世界里面,数据类型的转换有以下规律:

数据范围小的数据与数据范围大的数据进行数学计算的时候,自动向大的数据类型转换后计算;

数据范围大的数据要变为数据小的数据,那么必须采用强制转换;

如果是常量进行强制转换,有两种是:常量标记(Ll)、使用“(数据类型)”

现在为止计算结果是正确的,所以要想成功的解决数据溢出,一定要使用更大范围的数据。

只要你写的代码属于正常是可以使用的的代码,基本上数据溢出的情况很少见。

以上的代码是利用了数据的转型解决了数据的操作错误,但对于程序的而言,除了可以将范围小的数据类型变为范围大的类型职位,也可以将范围大的数据类型变为范围小的数据类型,那么就必须使用“(数据类型)”的格式完成。

范例:将范围大的数据类型变为范围小的数据类型

public class TextDemo {

public static void main(String[] args) {

long num = 1000 ; //1000常量是int型,使用long接受,发生了向大范围转型的操作

int x = (int) num ;//long变为int

System.out.println(x);

}

}

如果所保存的数据拆过了int的范围,那么依然会出现数据溢出的情况

public class TextDemo {

public static void main(String[] args) {

long num = 2147483650L ;

int x = (int) num ;//long变为int

System.out.println(x);

}

}

在整型数据之中,byte型数据是一个非常有用处的数据类型,首先byte型数据它的取值范围:-128~127之间。

范例:byte的转化问题

public class TextDemo {

public static void main(String[] args) {

int num = 130 ; //此范围超过了byte定义

byte x = (byte) num ; //int变为byte

System.out.println(x);

}

}

由于byte使用的特殊性,Java对其有了一些很好的改善。

范例:观察byte操作

public class TextDemo {

public static void main(String[] args) {

byte num = 100 ;

System.out.println(num);

}

}

虽然任何一个整数都属于int型,但是Java编译的时候,如果发现使用的数据变量类型为byte,并且设置的数据在byte之内,那么就会自动的帮助用户实现数据类型的转换。反之,如果超过了,则依然会以int型为主。

提示:所有的变量在使用的时候一定不要去相信默认值,都设置具体内容。

如果在方法里面定义的默认值是不起作用的。

public class TextDemo {

public static void main(String[] args) {

int num; //没有默认值

num = 0; //在使用此变量之前设置内容

System.out.println(num);

}

}

以上的操作形式是属于下先定义了一个变量num,但是此变量没有设置内容,而后设置了num变量的内容,最后在使用此变量,可是一以上的代码在JDK1.4以前的版本那么是不可能编译通过的。最标准的做法是在定义变量的时候直接设置好默认值

public class TextDemo {

public static void main(String[] args) {

int num = 0;

System.out.println(num);

}

}

你自己编写的代码使用,90%都去考虑使用int型类型数据。

2.2、浮点数

浮点数就是小数,Java之中只要是小数,那么对应的数据类型就是double型数据(double是保存范围最广的的类型)。

范例:定义小数

public class TextDemo {

public static void main(String[] args) {

//10.2是一个小数所以属于double

double num = 10.2 ;

//double* int型(转化为double2.0= double

System.out.println(num * 2);

}

}

由于的默认的小数类型就是double,所以如果使用了float表示需要将double型变为float,需要采用强制转换。

范例:使用float

public class TextDemo {

public static void main(String[] args) {

float f1 = 10.2F ;

float f2 = (float)10.2 ;

System.out.println(f1 * f2);

}

}

但是发现最终的结果有一点问题,变为了104.03999”(这个后面的9还算是少的),这的问题追溯起来从JDK1.0时候就存在这个bug,解决不了,只能通过后期的处理完成。

额外附送:实际上最早开发的时候,考虑道内存的问题,往往能使用float就不使用double,例如:J2ME开发的时候,由于内存可苛刻往往会压缩数据范围,以节约空间。现在随着硬件成本的降低,所以使用doublefloat区别就不大了,那么就直接double数据。

需要注意的时候,所有的数据类型只有double才可以保存小数,那么观察下面的代码。

public class TextDemo {

public static void main(String[] args) {

int x = 9 ;

int y = 5 ;

System.out.println(x / y);

}

}

此时如果进行了除法计算发现最终的计算结果变为了1,因为所有的小数位被忽略了。此时要想得出正确的结果,则可以将其中的一个整形变为浮点型

public class TextDemo {

public static void main(String[] args) {

int x = 9 ;

int y = 5 ;

System.out.println(x / (double)y);

}

}

以后的开发之中,一定要考虑到整型的不保留小数的问题。

2.3、字符型:char

byte是属于字节,按照传统的概念来讲,一个字符 = 两个字节,对于字符除了与字节有一些关系之外,主要的关系在于与int型变量的转换。

在计算机的世界里面一切都是编码的形式出现的,Java用的十六进制UNICODE编码,此类编码可以保存任意的文字,但是这个编码在设计的过程之中,考虑到与其它语言的结合问题(C/C++),那么在此编码里面包含了ASCII码的部分编码,所以如果之前类似的开发,那么此处口可以完全无缝的衔接。

在程序之中使用“’’”声明的内容称为字符。每一个单引号只能够保存一个字符。

范例:定义字符

public class TextDemo {

public static void main(String[] args) {

char c = 'A' ; //字符

//字符可以和int型互相转换(以编码的形式出现

int num = c;

System.out.println(c);

System.out.println(num);

}

}

经过测试发现一些编码情况:

l ‘A’65~ ‘Z’90);

l ‘a’97~ ‘z’122);

l ‘0’48~ ‘9’57

其中A”的编码值要小于“a”的编码值32,那么可以利用简单的计算来实现大小写转换。

范例:实现转换过程

public class TextDemo {

public static void main(String[] args) {

char c = 'A' ; //是大写

int num = c ;//需要将字符变为int型才可以使用加法计算

num = num + 32 ; //变为小写字母的编码

c = (char) num ;

System.out.println(c);

}

}

传统的编程语言之中,字符里面能够保存一些英文字母的标记,由于使用了UNICODE编码,这种十六进制的编码可以保存任意的文字,可以设置一个中文字符

public class TextDemo {

public static void main(String[] args) {

char c = '' ;

int num = c ;

System.out.println(num);

}

}

正因为现在的中文保存的方便,所以在处理断句的时候很好用。

只有在处理中文的时候,字符数据才有那么一点点的帮助。其他的情况下几乎用不到字符。

2.4、布尔型

布尔是一个数学家的名字,布尔型是一个逻辑结果,主要保存两个数据:truefalse。这类的数据主要用于一些程序的逻辑使用上。

范例:观察boolean

public class TextDemo {

public static void main(String[] args) {

//布尔只有两种取值:truefalse

boolean flag = false;

if (!flag) {//if(布尔值){满足条件的操作}

System.out.println("Hello World.");

}

}

}

在许多的语言之中,由于设计的初期,没有考虑到布尔型的问题,那么就使用的数字0表示false,而非数字0表示true(例如:123都表示ture),但是这样的设计对于代码开发比较混乱。Java里面不允许使用01来填充布尔型的变量内容。

2.5String数据

只要是项目开发,100%使用使用String,但是与其它的几种基本数据类型相比,String属于引用数据类型(类,在Java里面只要是名称,每一个单词的首字母都是大写的),但是这个类比较的特殊。

String表示的是一个字符串,即:多个字符的集合,String要求使用我们的“”””声明其内容。

范例:观察String操作

public class TextDemo {

public static void main(String[] args) {

//数据类型 变量 = "内容" ;

String str = "Hello World!";//字符串变量

System.out.println(str);

System.out.println("Hello World!");//字符串常量

}

}

String操作里面,也可以使用“+”进行字符串的连接操作。

范例:字符串连接

public class TextDemo {

public static void main(String[] args) {

String str = "Hello";

str = str + " World ";//连接

str += "!!!"; //连接

System.out.println(str);

}

}

数学计算里面有+”,字符串里面有“+”,那么一起是由呢?

public class TextDemo {

public static void main(String[] args) {

int numa = 100;

double numb = 99.0 ;

String str = "加法计算:" + numa + numb;

System.out.println(str);

}

}

从之前讲解的数据类型来说,任何的数据类型向范围大类型进行转化换,那么如果是intdoubleint先变为double,而后记性加法计算,但是如果遇见了String,那么一切都变了可以简单理解为,所有的数据类型如果遇见了String的“+”,那么所有的数据类型都先变为String数据,而后再执行字符串的连接操作,那么自然结果知错的,此次是只有通过“()”来改变计算结果。

public class TextDemo {

public static void main(String[] args) {

int numa = 100;

double numb = 99.0 ;

String str = "加法计算:" + (numa + numb);

System.out.println(str);

}

}

先执行括号内的加法计算,而后再将结果与字符进行连接。

Java里面也支持多种转义字符的使用,例如:换行(\n)、制表符(\t)、\\\)、双引号(\)、单引号(\’)

范例:转义字符

public class TextDemo {

public static void main(String[] args) {

String str = "Hello \"World\" \n\tHello MLDN";

System.out.println(str);

}

}

这些转义字符在Java的学习过程之中考虑到格式显示经常出现。

3、总结

1、一定要熟练常用的数据类型:整数用int、小数用double、逻辑用boolean

2、longbytechar在处理数据的时候会使用到;

3、数据类型的转换永远是小范围自动向大范围转换,如果将大范围变为小范围要考到强制转换;

4、intchar之间的互相转换是以编码为主的,大写字母和小写字母之间差了32个长度的;

5、String是一个特殊的类,用于描述字符串,字符串用于“”””声明,利用“+”实现字符串的连接。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值