android java数据类型,Android入门之四,Java基础:基本数据类型

Android入门之四,Java基础:基本数据类型

6cd5e4fd49658da7be73f2e8e3760c00.png

1年前

阅读 2092

评论 0

喜欢 0

###简介

Java语言提供了八种基本类型。

其中,6种数字类型(4个整数型,2个浮点型),1种字符类型,还有1种布尔型,它们分别是:

```

byte:整数类型,8位

short:整数类型,16位

int:整数类型,32位

long:整数类型,64位

float:浮点类型,64位

double:浮点类型,双精度,64位

boolean:布尔类型

char:字符串类型

```

它们是用来定义和保存数字、单个字符、布尔类型的东西,他们也可以统称为“变量”。

他们的定义方式是:基本类型名 空格 自定义变量名称 等号 数值。如:`int sum = 20;`

###整体认知(装载至菜鸟教程)

#### 1、整数类型:byte

```

byte 数据类型是8位、有符号的,以二进制补码表示的整数;

最小值是 -128(-2^7);

最大值是 127(2^7-1);

默认值是 0;

byte 类型用在大型数组中节约空间,主要代替整数,因为 byte 变量占用的空间只有 int 类型的四分之一;

例子:byte a = 100,byte b = -50。

补充:也就说说该值范围为:-128 至 127,常用于类型编码。

```

#### 2、整数类型:short

```

short 数据类型是 16 位、有符号的以二进制补码表示的整数

最小值是 -32768(-2^15);

最大值是 32767(2^15 - 1);

Short 数据类型也可以像 byte 那样节省空间。一个short变量是int型变量所占空间的二分之一;

默认值是 0;

例子:short s = 1000,short r = -20000。

补充:也就说说该值范围为:-32768 至 32767。

```

#### 3、整数类型:int

```

int 数据类型是32位、有符号的以二进制补码表示的整数;

最小值是 -2,147,483,648(-2^31);

最大值是 2,147,483,647(2^31 - 1);

一般地整型变量默认为 int 类型;

默认值是 0 ;

例子:int a = 100000, int b = -200000。

补充:也就说说该值范围为:-2147483648 至 2147483647,常用于中度数据自增值。

```

#### 4、整数类型:long

```

long 数据类型是 64 位、有符号的以二进制补码表示的整数;

最小值是 -9,223,372,036,854,775,808(-2^63);

最大值是 9,223,372,036,854,775,807(2^63 -1);

这种类型主要使用在需要比较大整数的系统上;

默认值是 0L;

例子: long a = 100000L,Long b = -200000L。

"L"理论上不分大小写,但是若写成"l"容易与数字"1"混淆,不容易分辩。所以最好大写。

补充:该类型是最大的整数类型,常用于高度的数据自增值,不建议使用。

```

#### 5、浮点型:float

```

float 数据类型是单精度、32位、符合IEEE 754标准的浮点数;

float 在储存大型浮点数组的时候可节省内存空间;

默认值是 0.0f;

浮点数不能用来表示精确的值,如货币;

例子:float f1 = 234.5f。

补充:单精度,不建议用于与金额相关的功能。

```

#### 6、浮点型:double

```

double 数据类型是双精度、64 位、符合IEEE 754标准的浮点数;

浮点数的默认类型为double类型;

double类型同样不能表示精确的值,如货币;

默认值是 0.0d;

例子:double d1 = 123.4。

补充:双精度,建议用于与金额相关的功能。

```

#### 7、布尔型:boolean

```

boolean数据类型表示一位的信息;

只有两个取值:true 和 false;

这种类型只作为一种标志来记录 true/false 情况;

默认值是 false;

例子:boolean one = true。

```

#### 8、字符类型:char

```

char类型是一个单一的 16 位 Unicode 字符;

最小值是 \u0000(即为0);

最大值是 \uffff(即为65,535);

char 数据类型可以储存任何字符,但只能存一个;

例子:char letter = 'A';。

```

###下面我们来进入到测试学习阶段:

我们先创建一个`Test1`类,用来做调试,并写入以下代码进行调试:

```java

public class Test1 {

public static void main(String[] args) {

// 范围是-128~127之间。

byte b = 3;

// 短整型,范围是-32768~32767之间。

short s = -200;

// 整型,范围是负的2的31次方到正的2的31次方减1。

int i = 1000;

// 长整型,范围为负的2的63次方到正的2的63次方减1。

long l = -999999999;

// 浮点型,就是带小数点的数。范围在3.4e-45~1.4e38,直接赋值时必须在数字后加上f或F。

float f = 6.12f;

// 双精度型,就是比float的范围更大的带小数点的数。范围在4.9e-324~1.8e308,赋值时必须在数字后加上d或D。

double d = 1234567890.123456d;

// 布尔型,只有true(真)和false(假)两个取值。

boolean bool = true;

// 用单引号赋值,只能存一个字符。

char c = 'A';

System.out.println(b);

System.out.println(s);

System.out.println(i);

System.out.println(l);

System.out.println(f);

System.out.println(d);

System.out.println(bool);

System.out.println(c);

}

}

```

输出结果:

![](https://blog.junphp.com/public/upload/20200119175729_803.png)

Java种的运算符与PHP或者大多数编程语言的运算符一样,均支持`+`、`-`、`*`、`/`、`%`、`++`、`--`等操作。

下面我们来做一些关于数据类型间运算的加深记忆练习。

现在,你已经学到了一种定义变量的方式,那么,这个有什么用呢?

你可以用这个来做一个简单的计算题。

比如`333.22 * (992+33333/233)`

```java

public class Test1 {

public static void main(String[] args) {

float a = 333.5f;

int b = 992;

int c = 1231;

int d = 2;

// 定义一个变量sum来接受计算的结果

float sum = a * (b + c / d);

System.out.println("计算333.5 * (992 + 1231 / 2)");

// 第一种计算方式,把计算结果先放进sum中,最后打印sum

System.out.println(sum);

// 第2种计算方式,直接在输出的时候计算并打印

System.out.println(a * (b + c / d));

}

}

```

运行之后,打印:

![](https://blog.junphp.com/public/upload/20200120092132_610.png)

基本类型的定义和使用方式就是这样简单。

简单的代码里面包含有不少规则和编译原理:

####1、在上面的代码中,为什么使用`float sum = a * (b + c / d)`,而不建议写为`double sum = a * (b + c / d)`呢?

原因是:

在第一段代码中,你可以看到八种基本类型的赋值范围,这样可以根据你的需要去选择,虽然可以用`long`或`double`存`1`,但是范围越大的类型,占的空间越大,所以需要按需选择。

在基本类型中,他们之间是可以转换的,一个算式计算完之后,结果会自动转换成高级别的类型。

级别的从高到底为:双精度型(`double`) > 浮点型(`float`) > 长整型(`long`) > 整形(`int`) > `byte`。

上面的算式中包含了整形(`b、c、d`)、和浮点型(`a`),其中级别最高的是`float`,所以最后计算的结果会自动转换成`float`,需要用float型 接受。

另外,用比`float`级别更高的`double`也是可以的,但`double`的字节占用数会更大,你可以试试。

####2、低级类型是可以直接转换成高级类型吗?

原因是:

首先声明下,基本类型是没有高低级别之分,上面所说的低级和高级类型,仅仅是指他们转换的优先级。

然后我们再回答这个问题,是可以转换的,看下面案例代码:

```java

public class Test1 {

public static void main(String[] args) {

// 定义一个整形

int i = 99;

// 定义一个长整形

long l = 888888888888888888l;

// 定义一个双精度型

double d = 9999999999999999999999999d;

// 定义一个浮点型

float f = 3.1415555555555f;

l = i; // 把i赋值给l

d = i; // 把i赋值给d

f = i; // 把i赋值给f

System.out.println(l);

System.out.println(d);

System.out.println(f);

}

}

```

运行结果:

![](https://blog.junphp.com/public/upload/20200120092831_200.png)

不同的类型相互赋值就是一个类型转换的过程。

####3、高级类型是可以直接转换成低级类型吗?

答案是:

可以的,不过需要显式的加上强转代码。

如果你直接按照上面的方法强转,会报错:

```java

public class Test1 {

public static void main(String[] args) {

// 定义一个整形

int i = 99;

// 定义一个长整形

long l = 888888888888888888l;

// 定义一个双精度型

double d = 9999999999999999999999999d;

// 定义一个浮点型

float f = 3.1415555555555f;

i = l; // 把l赋值给i

i = d; // 把d赋值给i

i = f; // 把f赋值给i

System.out.println(l);

System.out.println(d);

System.out.println(f);

}

}

```

上面的代码在第13行开始就会报错,我们可以通过android studio的提示查看错误原因,如下图:

![](https://blog.junphp.com/public/upload/20200120093258_209.png)

同时点击灯泡还会给出修正代码的方案,例如点击案例里面的`Cast to 'int'`就把自动把改行代码修复正确,正确的代码如下:

```java

public class Test1 {

public static void main(String[] args) {

// 定义一个整形

int i = 99;

// 定义一个长整形

long l = 888888888888888888l;

// 定义一个双精度型

double d = 9999999999999999999999999d;

// 定义一个浮点型

float f = 3.1415555555555f;

i = (int) l; // 把l赋值给i

System.out.println(i);

i = (int) d; // 把d赋值给i

System.out.println(i);

i = (int) f; // 把f赋值给i

System.out.println(i);

}

}

```

结果如下:

![](https://blog.junphp.com/public/upload/20200120093639_537.png)

我们可以看到,强转之后,原来的浮点型数据丢失了精度。

总结:

Java种的数据类型存在优先级,当低类型往高类型转换时,无需申明转换后的类型。

而当高类型转低类型时,则需要申明转换后的类型。

### 注意

在Java中我们还较常用到一个`String`类,其首字母必须大写,其表示使用字符串类型,而`char`时字符类型,虽然少了一个字,但其实际上的作用时完全不同的。

```

1、char表示字符,定义时用单引号,只能存储一个字符,如char c='x';

而String表示字符串,定义时用双引号,可以存储一个或多个字符,如String name="tom";

2、char是基本数据类型,而String 是一个类,具有面向对象的特征,可以调用方法,如name.length()获取字符串的长度。

```

具体案例如下:

```java

public class Test1 {

public static void main(String[] args) {

// 只能存储单个字符,你改成XX就会报错

char c = 'X';

// 用于存储字符串

String str = "小黄牛真帅";

// String是个类,可以调用其内置函数,例如输出字符串长度

System.out.println(str.length());

}

}

```

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值