初识Java:基本数据类型与变量

基本数据类型

基本数据类型有四类八种。

  1. 四类:整型,浮点型,字符型,布尔型
  2. 八种:
    在这里插入图片描述
    这里要注意在C语言中char是1个字节,在Java中char是2个字节。
  1. 在Java中int都占4个字节,long都占8个字节
  2. 整形和浮点型都是有符号的 (C语言中有unsigned表示无符号)
  3. 整形默认int,浮点型默认double

变量

定义变量的语法格式:

数据类型 变量名=初始值;

例如

int a=3;
double b=3.1;
char c=‘A’;

整形变量、

整形变量

  1. 变量定义时给出初始值

int a=3;
System.out.println(a);

  1. 变量定义时没给初始值,使用前必须给

int a;
a=3;
System.out.println(a);

  1. 注意如果变量使用前没有赋值,程序就会报错
    在这里插入图片描述
  2. 赋值不能超过数据类型的范围,不然就会报错 在这里插入图片描述
    注意:
  1. 如果变量没有合适的初始值,建议设为0
  2. 变量使用前要赋予初值
  3. 变量赋予的初值不能打过数据类型的范围
  4. int占4个字节

长整型变量

与整形变量相似,为了方便区分,建议在long类型的变量初始值后面加L或l

int a=10;
long b=10L; (一般推荐L,区分度更高一点,l与1相似)
long c=10l;
System.out.println(a);
System.out.println(b);

注意:

  1. 推荐长整型变量定义的初始值后面加L
  2. long占8个字节

短整型变量

short a=3;
System.out.println(a);

注意

  1. short都占2个字节

字节型变量

byte a=3;
System.out.println(a);

注意:

1.byte占一个字节

浮点型变量

单精度浮点型

这里要注意初值后面加f或F,不然默认是double类型
在这里插入图片描述

float a=1.1f;
float b=1.1F;
System.out.println(a);
System.out.println(b);

推荐使用double

双精度浮点型

double a=3.0;
System.out.println(a);

除法上与C语言相似

int a=1;
int b=2;
System.out.println(a/b);

int a=1;
int b=2;
System.out.println(a*1.0/b);

double a=1.0;
double b=2.0;
System.out.println(a/b);

相信大家都知道上面运行的结果分别是0,0.5,0.5

下面的代码大家猜一下运行的结果是什么

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

在这里插入图片描述
为什么不是1.21呢?
这是因为double 类型的内存布局遵守 IEEE 754 标准(和C语言一样), 尝试使用有限的内存空间表示可能无限的小数, 势
必会存在一定的精度误差,因此浮点数是个近似值,并不是精确值

注意:

  1. double是8个字节
  2. 浮点数与整数在内存中的存储方式不同,不能单纯使用 的形式来计算

字符型变量

char a=‘1’;
char b=‘人’;
System.out.println(a);
System.out.println(b);

注意:

1.Java 中使用 单引号 + 单个字母 的形式表示字符字面值
2. 计算机中的字符本质上是一个整数. 在 C 语言中使用 ASCII 表示字符, 而 Java 中使用 Unicode 表示字符. 因此
一个字符占用两个字节, 表示的字符种类更多, 包括中文

布尔型变量

boolean a=true;
System.out.println(a);
boolean b=false;
System.out.println(b);

布尔型常用来表示真假
注意:

  1. boolean 类型的变量只有两种取值, true 表示真, false 表示假
  2. Java 的 boolean 类型和 int 不能相互转换, 不存在 1 表示 true, 0 表示 false 这样的用法

因此C语言中用1和0表示真假也就用不了
例如

在这里插入图片描述

类型转换

Java 作为一个强类型编程语言, 当不同类型之间的变量相互赋值的时候, 会有教严格的校验
例如
在这里插入图片描述
在Java中,当参与运算数据类型不一致时,就会进行类型转换。Java中类型转换主要分为两类:自动类型转换(隐
式) 和 强制类型转换(显式)

自动类型转换(隐式)

自动类型转换即:代码不需要经过任何处理,在代码编译时,编译器会自动进行处理。
特点:数据范围小的转为数据范围大的时会自动进行
例如
在这里插入图片描述
a和b都是整形,a的范围小,b的范围大,当将a赋值给b时,编译器会自动将a提升为long类型,然后赋值
编译器会将float转换为double,然后进行赋值

强制类型转换(显式)

强制类型转换:当进行操作时,代码需要经过一定的格式处理,不能自动完成。
特点:数据范围大的到数据范围小的
在这里插入图片描述
在这里插入图片描述
100默认int,但没有超过byte的范围,隐式转换
257默认int,但超过byte的范围,要显示转换

注意:

  1. 不同数字类型的变量之间赋值,表示范围更小的类型能隐式转换为范围更大的类型
  2. 如果需要把范围大的类型赋值给范围小的类型,需要显示转换,但可能精度丢失
  3. 将一个字面值常量进行赋值的时候, Java 会自动针对数字范围进行检查
  4. 强制类型转换不一定能成功,不相干的类型不能互相转换(如boonlean)

类型提升

不同类型的数据之间相互运算时,数据类型小的会被提升到数据类型大的
1.int与long之间

int a = 10;
long b = 20;
int c = a + b; // 编译出错: a + b==》int + long–> long + long 赋值给int时会丢失数据
long d = a + b; // 编译成功:a + b==>int + long—>long + long 赋值给long

2.byte与byte

在这里插入图片描述

我们可以看到byte和byte虽然是相同的类型,但是出现编译报错,原因是虽然a和b都是byte,但是计算a+b时先把a和b提升为int类型,再计算,得到的结果是int,再赋值给a,就会出现上述的错误

由于计算机的 CPU 通常是按照 4 个字节为单位从内存中读写数据. 为了硬件上实现方便, 诸如 byte 和 short
这种低于 4 个字节的类型, 会先提升成 int, 再参与计算

正确的写法:

在这里插入图片描述

注意:

  1. 不同数据类型混合计算时,会先把范围小的提升为范围大的
  2. 对于byte,short这种比4个字节小的类型,会先提升成4个字节的int,再运算

字符串类型

在java中使用String类定义字符串类型,比如:

String s1=“hello”;
String s2=“world”;
System.out.println(s1);
System.out.println(s2);
System.out.println(s1+s2);//s1+s2表示将s1和s2进行拼接 输出helloworld

在这里插入图片描述

  1. int转成String

int a=10; //法一
String s1=a+“”;
String s2=String.valueOf(a); //法二
System.out.println(s1);
System.out.println(s2);
在这里插入图片描述

  1. String转成int

String s1=“100”;
int a=Integer.parseInt(s1);
System.out.println(a);
在这里插入图片描述

这里只是简单介绍了字符串类型。

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值