Java数据类型和变量

目录

1.字面常量

2.数据类型

3.变量

3.1变量的概念

一个建议:

4.类型转换

显示转换(强制类型转换)

隐式转换

字符串类型


1.字面常量

就是常量

常量即程序运行期间,固定不变的量称为常量。

System.out.println("Hello world!");
System.out.println(100);
System.out.println(0.5);
System.out.println('a');
System.out.println(true);

"Hello world!"、100、0.5、'a'、true都是常量
 

字面常量的分类:
        1. 字符串常量:由""括起来的,比如“12345”、“hello”、“你好”。
        2. 整形常量:程序中直接写的数字(注意没有小数点),比如:100、1000
        3. 浮点数常量:程序中直接写的小数,比如:3.14、0.49
        4. 字符常量:由 单引号 括起来的当个字符,比如:‘A’、‘1’
        5. 布尔常量:只有两种true和false
        6. 空常量:null(后面了讲)
注意:字符串、整形、浮点型、字符型以及布尔型,在Java中都称为数据类型

2.数据类型

Java数据类型有两大类:基本数据类型引用数据类型

基本数据类型有四类八种:
        1. 四类:整型、浮点型、字符型以及布尔型
        2. 八种:

数据类型 关键字 内存占用 范围
字节型 byte 1 字节 -128 ~ 127
短整型 short 2 字节 -32768 ~ 32767
整型 int 4 字节 -2^31 ~ 2^31-1
长整型 long 8 字节 -2^63 ~ 2^63-1
单精度浮点数 float 4 字节 有范围,一般不关注
双精度浮点数 double 8 字节 有范围,一般不关注
字符型 char 2 字节 0 ~ 65535
布尔型 boolean 没有明确规定 true false

注意:
1.不论是在16位系统还是32位系统,int都占用4个字节,long都占8个字节
2.整形和浮点型都是带有符号的
3.整型默认为int型,浮点型默认为double
4.字符串属于引用类型,该中类型后序介绍

3.变量

3.1变量的概念

就是可变的量

char cc = 'a';
boolean bb = true;
byte a = 0;
short b = 0;
int c = 0;
long d = 0;
float f = 0.0f;
double g = 0.0;

一个建议

变量在声明的时候尽量初始化,随便一个值也行。

拿int类型的变量为例

Java对语法很严格,如果不初始化就拿来用会报错

注意事项:
        1. int不论在何种系统下都是4个字节
        2. 推荐使用方式一定义,如果没有合适的初始值,可以设置为0
        3. 在给变量设置初始值时,值不能超过int的表示范围,否则会导致溢出
        4. 变量在使用之前必须要赋初值,否则编译报错

浮点数分为float和double

看一下float

主要有一个地方要讲

为什么报错?

看下编译器的错误信息 

 它说5.0是double类型,所以我们这样写是错误的,类型不匹配,而且double是8个字节,float是4个字节,精度会丢失。

正确的写法

有人可能会想到

long s = 5;

这样写会不会报错

没有报错原因是5是int类型转换位long类型,long类型可以接收。

在 Java 中, int 除以 int 的值仍然是 int(会直接舍弃小数部分)。如果想得到 0.5, 需要使用 double 类型计算.

观察下面代码的结果

double a = 0.1;
double b = 0.1;
System.out.println(a * b);

大家都知道0.1*0.1很简单,不就是0.01吗?

结果:

电脑是让这两个数进行复杂计算。无论是float还是double都会有精度的丢失,所以结果不是0.01。

想要了解更多的内容可以看下我之前发的操作符详解那篇文章。

字符变量

例子

和C语言一个样。

布尔型变量

只有两个值true和false

举个例子

 没有报错,所以一个条件真假的结果就是boolean类型。

看下面的例子

 这里报错了,因为三目运算符的结果是一个值

所以如果像下面例子这样写是可以的。

 结果

4.类型转换

显示转换(强制类型转换)

(类型)一个量

这个量可以是变量也可以是常量。

隐式转换

看下面案例

 都是byte类型,为什么报错?

看下报错原因

 编译器说a+b的结果是int类型。不对呀,明明是byte,为啥是int。

原因:整数在参与运算的时候会先转换位int类型(整型提升)然后再参与运算。

10和11被编译器看作是int类型所以结果是int类型 

看下其他比int小的类型

 

 都是这种情况。

怎么解决呢?

其实很好解决,a + b的结果不是int类型吗,那么我就强制类型转换这个结果。

 注意:是整体的结果所以是(a + b);

字符串类型

可以存储字符串,再也不担心要不要使用字符数组(需要的时候还是要的)。

这个类型很灵活

 这里字符串介绍的比较简单,以后会写一篇文章来讲字符串。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值